From a4b298ac9438ae1d7baa31f52335a8c1787c5610 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Tue, 3 Aug 2021 21:29:40 +0200
Subject: [PATCH] WIP update

---
 test/test_transaction.cpp | 57 +++++++++++++--------------------------
 1 file changed, 19 insertions(+), 38 deletions(-)

diff --git a/test/test_transaction.cpp b/test/test_transaction.cpp
index 4f89312..3ef5a85 100644
--- a/test/test_transaction.cpp
+++ b/test/test_transaction.cpp
@@ -27,7 +27,6 @@
 #include "gtest/gtest-message.h"       // for Message
 #include "gtest/gtest-test-part.h"     // for TestPartResult, SuiteApiResolver
 #include "gtest/gtest_pred_impl.h"     // for Test, EXPECT_EQ, AssertionResult
-#include <iostream>                    // for endl, basic_ostream, cout
 #include <memory>                      // for unique_ptr, allocator, __shar...
 #include <string>                      // for string
 #include <vector>                      // for vector
@@ -45,7 +44,7 @@ protected:
   }
 };
 
-TEST(test_transaction, DISABLED_retrieve_manufacturer_by_id) {
+TEST_F(test_transaction, DISABLED_retrieve_manufacturer_by_id) {
   const auto &connection =
     caosdb::connection::ConnectionManager::GetDefaultConnection();
 
@@ -70,7 +69,7 @@ TEST(test_transaction, DISABLED_retrieve_manufacturer_by_id) {
   EXPECT_EQ(version, entity.GetVersionId());
 }
 
-TEST(test_transaction, retrieve_non_existing) {
+TEST_F(test_transaction, retrieve_non_existing) {
   const auto &connection =
     caosdb::connection::ConnectionManager::GetDefaultConnection();
 
@@ -96,7 +95,7 @@ TEST(test_transaction, retrieve_non_existing) {
 }
 
 // TODO(fspreck) cognitive complexity > 25 (threshold)
-TEST(test_transaction, insert_delete) { // NOLINT
+TEST_F(test_transaction, insert_delete) { // NOLINT
   const auto &connection =
     caosdb::connection::ConnectionManager::GetDefaultConnection();
 
@@ -145,7 +144,7 @@ TEST(test_transaction, insert_delete) { // NOLINT
 
 // TODO(fspreck) Simplify inserts and deletes once we have
 // multi-entity operations, also cognitive complexity > threshold
-TEST(test_transaction, insert_delete_with_parent) { // NOLINT
+TEST_F(test_transaction, insert_delete_with_parent) { // NOLINT
   const auto &connection =
     caosdb::connection::ConnectionManager::GetDefaultConnection();
 
@@ -205,7 +204,6 @@ TEST(test_transaction, insert_delete_with_parent) { // NOLINT
   const auto &retrieve_result_set =
     dynamic_cast<const UniqueResult &>(retrieve_transaction->GetResultSet());
   const auto &retrieved_rec = retrieve_result_set.GetEntity();
-  std::cout << retrieved_rec.ToString() << std::endl;
 
   EXPECT_EQ(retrieved_rec.GetName(), rec.GetName());
   EXPECT_EQ(retrieved_rec.GetParents().Size(), 1);
@@ -236,7 +234,7 @@ TEST(test_transaction, insert_delete_with_parent) { // NOLINT
 // TODO(fspreck) Insert a Record with a parent and a Property. Check
 // for success and delete everything.
 
-TEST(test_transaction, test_multi_retrieve) {
+TEST_F(test_transaction, test_multi_retrieve) {
   const auto &connection =
     caosdb::connection::ConnectionManager::GetDefaultConnection();
 
@@ -256,7 +254,6 @@ TEST(test_transaction, test_multi_retrieve) {
   EXPECT_EQ(result_set.Size(), 3);
   EXPECT_EQ(result_set.At(1).GetId(), "21");
   EXPECT_EQ(result_set.At(1).GetName(), "unit");
-  std::cout << result_set.At(1).ToString();
   EXPECT_FALSE(result_set.At(1).HasErrors());
 
   EXPECT_EQ(result_set.At(2).GetId(), "22");
@@ -265,7 +262,7 @@ TEST(test_transaction, test_multi_retrieve) {
             MessageCode::ENTITY_DOES_NOT_EXIST);
 }
 
-TEST(test_transaction, insert_update_delete) {
+TEST_F(test_transaction, insert_update_delete) {
   const auto &connection =
     caosdb::connection::ConnectionManager::GetDefaultConnection();
 
@@ -288,24 +285,29 @@ TEST(test_transaction, insert_update_delete) {
 
   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());
 
+  // RETRIEVE
+  auto retrieve_transaction(connection->CreateTransaction());
+  retrieve_transaction->RetrieveById(new_entity.GetId());
+  retrieve_transaction->Execute();
+
   // UPDATE
   auto update_transaction(connection->CreateTransaction());
-  auto update_entity = insert_result_set.GetEntity();
+  auto update_entity(retrieve_transaction->GetResultSet().At(0));
   update_entity.SetName("RT1-Update");
 
-  update_transaction->UpdateEntity(update_entity);
+  update_transaction->UpdateEntity(&update_entity);
   update_transaction->ExecuteAsynchronously();
+
   auto update_status = update_transaction->WaitForIt();
+  ASSERT_TRUE(update_status.IsTerminated());
+  ASSERT_FALSE(update_status.IsError());
+
+  EXPECT_EQ(update_transaction->GetResultSet().Size(), 1);
+  const auto &updated_entity = update_transaction->GetResultSet().At(0);
 
-  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
@@ -327,27 +329,6 @@ TEST(test_transaction, insert_update_delete) {
   EXPECT_FALSE(deleted_entity.HasErrors());
 }
 
-// TODO(fspreck) Insert an RT and a Record of this type, check
-// whether this is reflected correctly in the inserted Record, then
-// delete everything.
-TEST(test_transaction, insert_delete_with_parent) {
-  const auto &connection =
-    caosdb::connection::ConnectionManager::GetDefaultConnection();
-
-  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());
-}
-
 // TODO(fspreck) Insert a Record with a parent and a Property. Check
 // for success and delete everything.
 
-- 
GitLab