diff --git a/conanfile.txt b/conanfile.txt index c05c8a050ed35900828a810c85820ed5c711b945..d61518d0c5b74645b75a9347b040f5f32a8452cc 100644 --- a/conanfile.txt +++ b/conanfile.txt @@ -1,5 +1,5 @@ [requires] -caosdb/0.0.7 +caosdb/0.0.8 gtest/1.11.0 [generators] diff --git a/test/test_transaction.cpp b/test/test_transaction.cpp index 6d71ea4dc3f22dc6b34b861a635fd18995d23e10..6c20e7492d820160ec62308843170b1c67d73a8c 100644 --- a/test/test_transaction.cpp +++ b/test/test_transaction.cpp @@ -30,7 +30,7 @@ #include <iostream> // for endl, basic_ostream, cout #include <memory> // for unique_ptr, allocator, __shar... #include <string> // for string - +#include <vector> // for vector namespace caosdb::transaction { using caosdb::entity::Entity; using caosdb::entity::MessageCode; @@ -395,4 +395,33 @@ TEST(test_transaction, insert_delete_with_property) { ASSERT_FALSE(prop_delete_status.IsError()); } +TEST(test_transaction, test_multi_retrieve) { + const auto &connection = + caosdb::connection::ConnectionManager::GetDefaultConnection(); + + auto transaction(connection->CreateTransaction()); + + const std::vector<std::string> ids = {"20", "21", "22"}; + transaction->RetrieveById(ids.begin(), ids.end()); + transaction->ExecuteAsynchronously(); + + auto status = transaction->WaitForIt(); + + ASSERT_TRUE(status.IsTerminated()); + ASSERT_FALSE(status.IsError()); + + const auto &result_set = transaction->GetResultSet(); + + 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"); + EXPECT_TRUE(result_set.At(2).HasErrors()); + EXPECT_EQ(result_set.At(2).GetErrors().At(0).GetCode(), + MessageCode::ENTITY_DOES_NOT_EXIST); +} + } // namespace caosdb::transaction