diff --git a/test/test_ccaosdb.cpp b/test/test_ccaosdb.cpp
index 1d0bbee987a160eb0c72d2a8cfab5d277419ee1a..facaf9a86b896ca4ddcf9b4ce5532d67bc84aa13 100644
--- a/test/test_ccaosdb.cpp
+++ b/test/test_ccaosdb.cpp
@@ -434,4 +434,134 @@ TEST_F(test_ccaosdb, test_insert_update_delete) {
   caosdb_entity_delete_entity(&original_entity);
 }
 
-TEST_F(test_ccaosdb, test_insert_with_prop_and_parent) {}
+TEST_F(test_ccaosdb, test_insert_with_prop_and_parent) {
+
+  caosdb_connection_connection connection;
+  caosdb_connection_connection_manager_get_default_connection(&connection);
+
+  // Create and insert a property, ...
+  caosdb_entity_entity original_prop;
+  caosdb_entity_create_entity(&original_prop);
+
+  caosdb_entity_entity_set_name(&original_prop, "TestProp");
+  caosdb_entity_entity_set_datatype(&original_prop, "TEXT");
+  caosdb_entity_entity_set_role(&original_prop, "Property");
+
+  caosdb_transaction_transaction prop_insertion;
+  caosdb_connection_connection_create_transaction(&connection, &prop_insertion);
+  caosdb_transaction_transaction_insert_entity(&prop_insertion, &original_prop);
+  int return_code(caosdb_transaction_transaction_execute(&prop_insertion));
+  EXPECT_EQ(return_code, 0);
+
+  caosdb_transaction_result_set prop_results;
+  caosdb_transaction_transaction_get_result_set(&prop_insertion, &prop_results);
+  caosdb_entity_entity inserted_prop;
+  caosdb_transaction_result_set_at(&prop_results, &inserted_prop, 0);
+  char prop_id[255] = {"id"}; // NOLINT
+  caosdb_entity_entity_get_id(&inserted_prop, prop_id);
+
+  // ... a record type with this property, ...
+  caosdb_entity_entity original_rt;
+  caosdb_entity_create_entity(&original_rt);
+
+  caosdb_entity_entity_set_name(&original_rt, "TestType");
+  caosdb_entity_entity_set_role(&original_rt, "RecordType");
+
+  caosdb_entity_property rt_prop;
+  caosdb_entity_create_property(&rt_prop);
+  caosdb_entity_property_set_id(&rt_prop, prop_id);
+  caosdb_entity_entity_append_property(&original_rt, &rt_prop);
+
+  caosdb_transaction_transaction rt_insertion;
+  caosdb_connection_connection_create_transaction(&connection, &rt_insertion);
+  caosdb_transaction_transaction_insert_entity(&rt_insertion, &original_rt);
+  return_code = caosdb_transaction_transaction_execute(&rt_insertion);
+  EXPECT_EQ(return_code, 0);
+
+  caosdb_transaction_result_set rt_results;
+  caosdb_transaction_transaction_get_result_set(&rt_insertion, &rt_results);
+  caosdb_entity_entity inserted_rt;
+  caosdb_transaction_result_set_at(&rt_results, &inserted_rt, 0);
+  char rt_id[255] = {"id"}; // NOLINT
+  caosdb_entity_entity_get_id(&inserted_rt, rt_id);
+
+  // ... and a record with this record type as a parent.
+  caosdb_entity_entity original_rec;
+  caosdb_entity_create_entity(&original_rec);
+  caosdb_entity_entity_set_name(&original_rec, "TestRec");
+  caosdb_entity_entity_set_role(&original_rec, "Record");
+  caosdb_entity_parent rec_parent;
+  caosdb_entity_create_parent(&rec_parent);
+  caosdb_entity_parent_set_id(&rec_parent, rt_id);
+  caosdb_entity_entity_append_parent(&original_rec, &rec_parent);
+  caosdb_entity_property rec_prop;
+  caosdb_entity_create_property(&rec_prop);
+  caosdb_entity_property_set_id(&rec_prop, prop_id);
+  caosdb_entity_property_set_value(&rec_prop, "Bla");
+  caosdb_entity_entity_append_property(&original_rec, &rec_prop);
+
+  caosdb_transaction_transaction rec_insertion;
+  caosdb_connection_connection_create_transaction(&connection, &rec_insertion);
+  caosdb_transaction_transaction_insert_entity(&rec_insertion, &original_rec);
+  return_code = caosdb_transaction_transaction_execute(&rec_insertion);
+  EXPECT_EQ(return_code, 0);
+
+  caosdb_transaction_result_set rec_results;
+  caosdb_transaction_transaction_get_result_set(&rec_insertion, &rec_results);
+  caosdb_entity_entity inserted_rec;
+  caosdb_transaction_result_set_at(&rec_results, &inserted_rec, 0);
+  char rec_id[255] = {"id"}; // NOLINT
+  caosdb_entity_entity_get_id(&inserted_rec, rec_id);
+
+  // Retrieve the record again for comparison
+  caosdb_transaction_transaction retrieve_transaction;
+  caosdb_connection_connection_create_transaction(&connection,
+                                                  &retrieve_transaction);
+  caosdb_transaction_transaction_retrieve_by_id(&retrieve_transaction, rec_id);
+  return_code = caosdb_transaction_transaction_execute(&retrieve_transaction);
+  EXPECT_EQ(return_code, 0);
+
+  caosdb_transaction_result_set retrieve_result;
+  caosdb_transaction_transaction_get_result_set(&retrieve_transaction,
+                                                &retrieve_result);
+  caosdb_entity_entity retrieved_rec;
+  caosdb_transaction_result_set_at(&retrieve_result, &retrieved_rec, 0);
+  char in[255] = {"abc"};  // NOLINT
+  char out[255] = {"abc"}; // NOLINT
+  caosdb_entity_entity_get_name(&original_rec, in);
+  caosdb_entity_entity_get_name(&retrieved_rec, out);
+  EXPECT_EQ(strcmp(in, out), 0);
+  int count[] = {0}; // NOLINT
+  caosdb_entity_entity_get_properties_size(&retrieved_rec, count);
+  EXPECT_EQ(*count, 1);
+  caosdb_entity_entity_get_parents_size(&retrieved_rec, count);
+  EXPECT_EQ(*count, 1);
+
+  caosdb_entity_parent retrieved_parent;
+  caosdb_entity_entity_get_parent(&retrieved_rec, &retrieved_parent, 0);
+  caosdb_entity_entity_get_name(&original_rt, in);
+  caosdb_entity_parent_get_name(&retrieved_parent, out);
+  EXPECT_EQ(strcmp(in, out), 0);
+  caosdb_entity_parent_get_id(&retrieved_parent, out);
+  EXPECT_EQ(strcmp(rt_id, out), 0);
+
+  caosdb_entity_property retrieved_property;
+  caosdb_entity_entity_get_property(&retrieved_rec, &retrieved_property, 0);
+  caosdb_entity_entity_get_name(&original_prop, in);
+  caosdb_entity_property_get_name(&retrieved_property, out);
+  EXPECT_EQ(strcmp(in, out), 0);
+  caosdb_entity_property_get_value(&rec_prop, in);
+  caosdb_entity_property_get_value(&retrieved_property, out);
+  EXPECT_EQ(strcmp(in, out), 0);
+
+  caosdb_transaction_delete_transaction(&retrieve_transaction);
+  caosdb_transaction_delete_transaction(&rec_insertion);
+  caosdb_entity_delete_property(&rec_prop);
+  caosdb_entity_delete_parent(&rec_parent);
+  caosdb_entity_delete_entity(&original_rec);
+  caosdb_transaction_delete_transaction(&rt_insertion);
+  caosdb_entity_delete_property(&rt_prop);
+  caosdb_entity_delete_entity(&original_rt);
+  caosdb_transaction_delete_transaction(&prop_insertion);
+  caosdb_entity_delete_entity(&original_prop);
+}