From c3823fb2f35a5a34a9b623d9298735ad744bb772 Mon Sep 17 00:00:00 2001 From: Timm Fitschen <t.fitschen@indiscale.com> Date: Mon, 2 Aug 2021 15:10:52 +0200 Subject: [PATCH] WIP: update entity --- test/test_transaction.cpp | 62 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/test/test_transaction.cpp b/test/test_transaction.cpp index 630f78b..26d7732 100644 --- a/test/test_transaction.cpp +++ b/test/test_transaction.cpp @@ -166,4 +166,66 @@ TEST(test_transaction, test_multi_retrieve) { MessageCode::ENTITY_DOES_NOT_EXIST); } +TEST(test_transaction, insert_update_delete) { + const auto &connection = + caosdb::connection::ConnectionManager::GetDefaultConnection(); + + // INSERT + auto insert_transaction(connection->CreateTransaction()); + + Entity entity; + entity.SetRole("RecordType"); + entity.SetName("RT1"); + insert_transaction->InsertEntity(&entity); + insert_transaction->ExecuteAsynchronously(); + + auto insert_status = insert_transaction->WaitForIt(); + + ASSERT_TRUE(insert_status.IsTerminated()); + ASSERT_FALSE(insert_status.IsError()); + + const auto &insert_result_set = + dynamic_cast<const UniqueResult &>(insert_transaction->GetResultSet()); + + const auto &new_entity = insert_result_set.GetEntity(); + EXPECT_FALSE(new_entity.GetId().empty()); + EXPECT_EQ(new_entity.GetName(), "RT1"); + EXPECT_FALSE(new_entity.HasErrors()); + + // UPDATE + auto update_transaction(connection->CreateTransaction()); + auto update_entity = insert_result_set.GetEntity(); + update_entity.SetName("RT1-Update"); + + update_transaction->UpdateEntity(update_entity); + update_transaction->ExecuteAsynchronously(); + auto update_status = update_transaction->WaitForIt(); + + const auto &update_result_set = + dynamic_cast<const UniqueResult &>(update_transaction->GetResultSet()); + const auto &updated_entity = insert_result_set.GetEntity(); + EXPECT_EQ(updated_entity.GetId(), new_entity.GetId()); + EXPECT_EQ(updated_entity.GetName(), "RT1-Update"); + EXPECT_NEQ(updated_entity.GetVersionId(), new_entity.GetVersionId()); + EXPECT_FALSE(updated_entity.HasErrors()); + + // DELETE + auto delete_transaction(connection->CreateTransaction()); + + delete_transaction->DeleteById(new_entity.GetId()); + delete_transaction->ExecuteAsynchronously(); + + auto delete_status = delete_transaction->WaitForIt(); + + ASSERT_TRUE(delete_status.IsTerminated()); + ASSERT_FALSE(delete_status.IsError()); + + const auto &delete_result_set = + dynamic_cast<const UniqueResult &>(delete_transaction->GetResultSet()); + + const auto &deleted_entity = delete_result_set.GetEntity(); + EXPECT_EQ(deleted_entity.GetId(), new_entity.GetId()); + EXPECT_FALSE(deleted_entity.HasErrors()); +} + } // namespace caosdb::transaction -- GitLab