From 113840e546f995619021e1c6f0b84e11d40f8d54 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Thu, 29 Jul 2021 14:26:27 +0200
Subject: [PATCH] WIP: insert delete

---
 test/test_transaction.cpp | 53 ++++++++++++++++++++++++++++++---------
 1 file changed, 41 insertions(+), 12 deletions(-)

diff --git a/test/test_transaction.cpp b/test/test_transaction.cpp
index c6caa79..2f160ec 100644
--- a/test/test_transaction.cpp
+++ b/test/test_transaction.cpp
@@ -34,6 +34,16 @@ namespace caosdb::transaction {
 using caosdb::entity::Entity;
 using caosdb::entity::MessageCode;
 
+class test_transaction : public ::testing::Test {
+protected:
+  void SetUp() override {
+  }
+
+  void TearDown() override {
+    // TODO(tf): delete all created entities
+  }
+};
+
 TEST(test_transaction, DISABLED_retrieve_manufacturer_by_id) {
   const auto &connection =
     caosdb::connection::ConnectionManager::GetDefaultConnection();
@@ -49,7 +59,7 @@ TEST(test_transaction, DISABLED_retrieve_manufacturer_by_id) {
   transaction->Execute();
 
   const auto &result_set =
-    dynamic_cast<const caosdb::transaction::UniqueResult &>(
+    dynamic_cast<const UniqueResult &>(
       transaction->GetResultSet());
 
   const auto &entity = result_set.GetEntity();
@@ -75,7 +85,7 @@ TEST(test_transaction, retrieve_non_existing) {
   ASSERT_EQ(status.GetCode(), StatusCode::SUCCESS);
 
   const auto &result_set =
-    dynamic_cast<const caosdb::transaction::UniqueResult &>(
+    dynamic_cast<const UniqueResult &>(
       transaction->GetResultSet());
 
   const auto &entity = result_set.GetEntity();
@@ -90,26 +100,45 @@ TEST(test_transaction, insert_delete) {
   const auto &connection =
     caosdb::connection::ConnectionManager::GetDefaultConnection();
 
-  auto transaction(connection->CreateTransaction());
+  auto insert_transaction(connection->CreateTransaction());
 
   Entity entity;
   entity.SetRole("RecordType");
   entity.SetName("RT1");
-  transaction->InsertEntity(&entity);
-  transaction->ExecuteAsynchronously();
+  insert_transaction->InsertEntity(&entity);
+  insert_transaction->ExecuteAsynchronously();
 
-  auto status = transaction->WaitForIt();
+  auto insert_status = insert_transaction->WaitForIt();
 
-  ASSERT_TRUE(status.IsTerminated());
-  ASSERT_FALSE(status.IsError());
+  ASSERT_TRUE(insert_status.IsTerminated());
+  ASSERT_FALSE(insert_status.IsError());
 
-  const auto &result_set =
-    dynamic_cast<const caosdb::transaction::UniqueResult &>(
-      transaction->GetResultSet());
+  const auto &insert_result_set =
+    dynamic_cast<const UniqueResult &>(
+      insert_transaction->GetResultSet());
 
-  const auto &new_entity = result_set.GetEntity();
+  const auto &new_entity = insert_result_set.GetEntity();
   EXPECT_FALSE(new_entity.GetId().empty());
   EXPECT_FALSE(new_entity.HasErrors());
+
+  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