diff --git a/test/test_transaction.cpp b/test/test_transaction.cpp index 9eb3e808f996d58ec4432955472953a979113ba1..6d71ea4dc3f22dc6b34b861a635fd18995d23e10 100644 --- a/test/test_transaction.cpp +++ b/test/test_transaction.cpp @@ -323,7 +323,6 @@ TEST(test_transaction, insert_delete_with_property) { rec.SetRole("Record"); rec.AppendParent(parent); rec.AppendProperty(prop_rec); - std::cout << rec.ToString() << std::endl; auto rec_insertion(connection->CreateTransaction()); rec_insertion->InsertEntity(&rec); @@ -331,7 +330,6 @@ TEST(test_transaction, insert_delete_with_property) { auto rec_insert_status = rec_insertion->WaitForIt(); - std::cout << rec_insert_status.GetCode() << std::endl; ASSERT_TRUE(rec_insert_status.IsTerminated()); ASSERT_FALSE(rec_insert_status.IsError()); @@ -340,6 +338,61 @@ TEST(test_transaction, insert_delete_with_property) { const auto &inserted_rec = rec_result_set.GetEntity(); EXPECT_FALSE(inserted_rec.GetId().empty()); + + // Retrieve the record and verify paretn and property + auto rec_retrieval(connection->CreateTransaction()); + rec_retrieval->RetrieveById(inserted_rec.GetId()); + rec_retrieval->ExecuteAsynchronously(); + + auto rec_retrieve_status = rec_retrieval->WaitForIt(); + ASSERT_TRUE(rec_retrieve_status.IsTerminated()); + ASSERT_FALSE(rec_retrieve_status.IsError()); + + const auto &rec_retrieve_results = + dynamic_cast<const UniqueResult &>(rec_retrieval->GetResultSet()); + + const auto &retrieved_rec = rec_retrieve_results.GetEntity(); + EXPECT_EQ(rec.GetName(), retrieved_rec.GetName()); + EXPECT_EQ(inserted_rec.GetId(), retrieved_rec.GetId()); + EXPECT_EQ(retrieved_rec.GetParents().Size(), 1); + EXPECT_EQ(retrieved_rec.GetProperties().Size(), 1); + + const auto &retrieved_parent_rec = retrieved_rec.GetParents().At(0); + EXPECT_EQ(retrieved_parent_rec.GetName(), rt.GetName()); + EXPECT_EQ(retrieved_parent_rec.GetId(), inserted_rt.GetId()); + + const auto &retrieved_prop_rec = retrieved_rec.GetProperties().At(0); + EXPECT_EQ(retrieved_prop_rec.GetName(), prop_ent.GetName()); + EXPECT_EQ(retrieved_prop_rec.GetId(), inserted_prop.GetId()); + EXPECT_EQ(retrieved_prop_rec.GetDatatype(), prop_ent.GetDatatype()); + EXPECT_EQ(retrieved_prop_rec.GetValue(), prop_rec.GetValue()); + + // Delete eveything: First record ... + auto rec_deletion(connection->CreateTransaction()); + rec_deletion->DeleteById(inserted_rec.GetId()); + rec_deletion->ExecuteAsynchronously(); + + auto rec_delete_status = rec_deletion->WaitForIt(); + ASSERT_TRUE(rec_delete_status.IsTerminated()); + ASSERT_FALSE(rec_delete_status.IsError()); + + // ... then parent ... + auto rt_deletion(connection->CreateTransaction()); + rt_deletion->DeleteById(inserted_rt.GetId()); + rt_deletion->ExecuteAsynchronously(); + + auto rt_delete_status = rt_deletion->WaitForIt(); + ASSERT_TRUE(rt_delete_status.IsTerminated()); + ASSERT_FALSE(rt_delete_status.IsError()); + + // ... then property. + auto prop_deletion(connection->CreateTransaction()); + prop_deletion->DeleteById(inserted_prop.GetId()); + prop_deletion->ExecuteAsynchronously(); + + auto prop_delete_status = prop_deletion->WaitForIt(); + ASSERT_TRUE(prop_delete_status.IsTerminated()); + ASSERT_FALSE(prop_delete_status.IsError()); } } // namespace caosdb::transaction