diff --git a/tests/unit/test_cell_group.cpp b/tests/unit/test_cell_group.cpp
index 050974f0bda553a04cff3b932afa7269d3393034..1f74cac9e1c11c0e424e1fd112b4fe067dc6f6aa 100644
--- a/tests/unit/test_cell_group.cpp
+++ b/tests/unit/test_cell_group.cpp
@@ -20,10 +20,8 @@ nest::mc::cell make_cell() {
 
     dendrite->mechanism("membrane").set("r_L", 100);
 
-    // add stimulus
-    cell.add_stimulus({1,1}, {5., 80., 0.3});
-
-    cell.add_detector({0,0}, 0);
+    cell.add_detector({0, 0}, 0);
+    cell.add_stimulus({1, 1}, {5., 80., 0.3});
 
     return cell;
 }
@@ -41,3 +39,36 @@ TEST(cell_group, test)
     EXPECT_EQ(group.spikes().size(), 4u);
 }
 
+TEST(cell_group, sources)
+{
+    using namespace nest::mc;
+
+    // TODO: extend to multi-cell cell groups when the time comes
+
+    using cell_group_type = cell_group<fvm::fvm_cell<double, cell_local_size_type>>;
+
+    auto cell = make_cell();
+    EXPECT_EQ(cell.detectors().size(), 1u);
+    // add another detector on the cell to make things more interesting
+    cell.add_detector({1, 0.3}, 2.3);
+
+    cell_gid_type first_gid = 37u;
+    auto group = cell_group_type{first_gid, cell};
+
+    // expect group sources to be lexicographically sorted by source id
+    // with gids in cell group's range and indices starting from zero
+
+    const auto& sources = group.spike_sources();
+    for (unsigned i = 0; i<sources.size(); ++i) {
+        auto id = sources[i].source_id;
+        if (i==0) {
+            EXPECT_EQ(id.gid, first_gid);
+            EXPECT_EQ(id.index, 0u);
+        }
+        else {
+            auto prev = sources[i-1].source_id;
+            EXPECT_GT(id, prev);
+            EXPECT_EQ(id.index, id.gid==prev.gid? prev.index+1: 0u);
+        }
+    }
+}