diff --git a/test/test_connection.cpp b/test/test_connection.cpp index ed1ca1faa5186105c87edb5068916f76ab850882..8a8cd8f8c59d92c2623ac9f48cd2f8819a38526e 100644 --- a/test/test_connection.cpp +++ b/test/test_connection.cpp @@ -73,7 +73,8 @@ TEST(test_connection, connection_insecure_authentication_error_anonymous) { EXPECT_THROW(connection.RetrieveVersionInfo(), AuthenticationError); } -TEST(test_connection, connection_ssl_authentication_error_anonymous) { +// TODO(tf) cognitive complexity > 25 (threshold) +TEST(test_connection, connection_ssl_authentication_error_anonymous) { // NOLINT const auto *port_str = caosdb::utility::get_env_var("CAOSDB_SERVER_GRPC_PORT_HTTPS", "8443"); auto port = std::stoi(port_str); @@ -92,7 +93,9 @@ TEST(test_connection, connection_ssl_authentication_error_anonymous) { "succeed. Original error: Please login."); } -TEST(test_connection, connection_ssl_authentication_error_wrong_credentials) { +// TODO(tf) cognitive complexity > 25 (threshold) +TEST(test_connection, // NOLINT + connection_ssl_authentication_error_wrong_credentials) { // NOLINT const auto *port_str = caosdb::utility::get_env_var("CAOSDB_SERVER_GRPC_PORT_HTTPS", "8443"); auto port = std::stoi(port_str); diff --git a/test/test_transaction.cpp b/test/test_transaction.cpp index 2ff419c548b7390764e53aa7a6078a5e95c32cf0..c7dbf81d9a682348d582ace26f2b0863e600075a 100644 --- a/test/test_transaction.cpp +++ b/test/test_transaction.cpp @@ -27,14 +27,21 @@ #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 +<<<<<<< HEAD #include <iostream> #include <memory> // for unique_ptr, allocator, __shar... #include <string> // for string #include <vector> // for vector +======= +#include <iostream> // for endl, basic_ostream, cout +#include <memory> // for unique_ptr, allocator, __shar... +#include <string> // for string +>>>>>>> f-insert namespace caosdb::transaction { using caosdb::entity::Entity; using caosdb::entity::MessageCode; +using caosdb::entity::Parent; class test_transaction : public ::testing::Test { protected: @@ -95,7 +102,8 @@ TEST(test_transaction, retrieve_non_existing) { MessageCode::ENTITY_DOES_NOT_EXIST); } -TEST(test_transaction, insert_delete) { +// TODO(fspreck) cognitive complexity > 25 (threshold) +TEST(test_transaction, insert_delete) { // NOLINT const auto &connection = caosdb::connection::ConnectionManager::GetDefaultConnection(); @@ -142,6 +150,99 @@ TEST(test_transaction, insert_delete) { EXPECT_FALSE(deleted_entity.HasErrors()); } +// TODO(fspreck) Simplify inserts and deletes once we have +// multi-entity operations, also cognitive complexity > threshold +TEST(test_transaction, insert_delete_with_parent) { // NOLINT + const auto &connection = + caosdb::connection::ConnectionManager::GetDefaultConnection(); + + auto insert_transaction(connection->CreateTransaction()); + + Entity rt; + rt.SetRole("RecordType"); + rt.SetName("TestRT"); + insert_transaction->InsertEntity(&rt); + 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 &inserted_rt = insert_result_set.GetEntity(); + + Entity rec; + rec.SetRole("Record"); + rec.SetName("TestRec"); + + Parent parent; + parent.SetName(rt.GetName()); + parent.SetId(inserted_rt.GetId()); + rec.AppendParent(parent); + + auto rec_transaction(connection->CreateTransaction()); + rec_transaction->InsertEntity(&rec); + rec_transaction->ExecuteAsynchronously(); + + auto rec_insert_status = rec_transaction->WaitForIt(); + + ASSERT_TRUE(rec_insert_status.IsTerminated()); + ASSERT_FALSE(rec_insert_status.IsError()); + + const auto &rec_result_set = + dynamic_cast<const UniqueResult &>(rec_transaction->GetResultSet()); + + const auto &inserted_rec = rec_result_set.GetEntity(); + + EXPECT_FALSE(inserted_rec.GetId().empty()); + + auto retrieve_transaction(connection->CreateTransaction()); + retrieve_transaction->RetrieveById(inserted_rec.GetId()); + + retrieve_transaction->ExecuteAsynchronously(); + + auto rec_retrieve_status = retrieve_transaction->WaitForIt(); + + ASSERT_TRUE(rec_retrieve_status.IsTerminated()); + ASSERT_FALSE(rec_retrieve_status.IsError()); + + 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); + EXPECT_EQ(retrieved_rec.GetParents().At(0).GetId(), inserted_rt.GetId()); + EXPECT_EQ(retrieved_rec.GetParents().At(0).GetName(), rt.GetName()); + + auto rec_deletion(connection->CreateTransaction()); + + rec_deletion->DeleteById(retrieved_rec.GetId()); + rec_deletion->ExecuteAsynchronously(); + + auto rec_delete_status = rec_deletion->WaitForIt(); + + ASSERT_TRUE(rec_delete_status.IsTerminated()); + ASSERT_FALSE(rec_delete_status.IsError()); + + 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()); +} + +// TODO(fspreck) Insert a Record with a parent and a Property. Check +// for success and delete everything. + TEST(test_transaction, test_multi_retrieve) { const auto &connection = caosdb::connection::ConnectionManager::GetDefaultConnection(); @@ -171,28 +272,5 @@ TEST(test_transaction, test_multi_retrieve) { MessageCode::ENTITY_DOES_NOT_EXIST); } -// 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. } // namespace caosdb::transaction