diff --git a/test/CMakeLists.txt.orig b/test/CMakeLists.txt.orig
deleted file mode 100644
index 2d965020366907f5e35c2d66423bbf8e0c0c3214..0000000000000000000000000000000000000000
--- a/test/CMakeLists.txt.orig
+++ /dev/null
@@ -1,125 +0,0 @@
-#
-# This file is a part of the CaosDB Project.
-#
-# Copyright (C) 2021 Timm Fitschen <t.fitschen@indiscale.com>
-# Copyright (C) 2021 IndiScale GmbH <info@indiscale.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <https://www.gnu.org/licenses/>.
-#
-
-#######################################################################
-### append test cases here (file name without the ".cpp" suffix)
-#######################################################################
-set(test_cases
-    test_connection
-    test_transaction
-    test_ccaosdb
-    )
-
-
-include(CheckCXXCompilerFlag)
-include(CheckCCompilerFlag)
-
-function(add_compiler_flag flag)
-    string(FIND "${CMAKE_CXX_FLAGS}" "${flag}" cxx_present)
-    if(cxx_present EQUAL -1)
-        check_cxx_compiler_flag("${flag}" flag_supported)
-        if(flag_supported)
-            set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}" PARENT_SCOPE)
-        endif()
-        unset(flag_supported CACHE)
-    endif()
-    unset(cxx_present CACHE)
-endfunction()
-
-### but ignore these
-add_compiler_flag("-Wno-unused-parameter")
-add_compiler_flag("-Wno-unused-result")
-add_compiler_flag("-g")
-
-#######################################################
-### Linting with clang-tidy and include-what-you-use
-#######################################################
-option(LINTING "clang-tidy and iwye" ON)
-if(LINTING)
-    ### set paranoid compiler flags
-    #add_compiler_flag("-Wall")
-    #add_compiler_flag("-Wextra")
-    #add_compiler_flag("-pedantic")
-    #add_compiler_flag("-Werror")
-
-
-    find_program(iwyu
-        NAMES include-what-you-use iwyu
-        PATHS ${CMAKE_SOURCE_DIR}/tools/include-what-you-use/${iwyu_os}/bin)
-    if(NOT iwyu)
-        message(WARNING "include-what-you-use: Not found")
-    else()
-        message(STATUS "include-what-you-use: ${iwyu}")
-        set(_CMAKE_CXX_INCLUDE_WHAT_YOU_USE ${iwyu}
-            "-Xiwyu" "--no_fwd_decls"
-            "-Xiwyu" "--cxx17ns")
-    endif()
-
-    find_program(clang_tidy NAMES clang-tidy clang-tidy-11)
-    if(NOT clang_tidy)
-        message(WARNING "clang-tidy: Not found")
-    else()
-        message(STATUS "clang-tidy: ${clang_tidy}")
-        set(_CMAKE_CXX_CLANG_TIDY "${clang_tidy}"
-            "--header-filter=caosdb/.*[^\(\.pb\.h\)]$"
-            "--warnings-as-errors=*"
-            "--fix")
-        set(_CMAKE_CXX_CLANG_TIDY_CHECKS
-<<<<<<< HEAD
-          "--checks=*,-fuchsia-*,-llvmlibc-*,-cert-err58-cpp,-cppcoreguidelines-avoid-non-const-global-variables,-cppcoreguidelines-owning-memory,-modernize-use-trailing-return-type,-google-readability-avoid-underscore-in-googletest-name,-cppcoreguidelines-avoid-magic-numbers,-readability-magic-numbers,-cppcoreguidelines-avoid-goto,-hicpp-avoid-goto,-readability-function-cognitive-complexity,-cppcoreguidelines-pro-type-vararg,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-hicpp-no-array-decay")
-=======
-          "--checks=*,-fuchsia-*,-llvmlibc-*,-cert-err58-cpp,-cppcoreguidelines-avoid-non-const-global-variables,-cppcoreguidelines-owning-memory,-modernize-use-trailing-return-type,-google-readability-avoid-underscore-in-googletest-name,-cppcoreguidelines-avoid-magic-numbers,-readability-magic-numbers,-cppcoreguidelines-avoid-goto,-hicpp-avoid-goto,-readability-function-cognitive-complexity,-cppcoreguidelines-non-private-member-variables-in-classes,-misc-non-private-member-variables-in-classes")
->>>>>>> f-files
-    endif()
-else()
-    message(STATUS "LINTING is OFF")
-endif()
-
-
-###################################################
-### Set up tests using GoogleTest (GTest)
-###################################################
-
-# add special cmake functions for gtest
-include(GoogleTest REQUIRED)
-
-# loop over all test cases and add them to the test runner
-list(LENGTH test_cases len_test_cases)
-math(EXPR len_test_cases "${len_test_cases} - 1")
-foreach (i RANGE "${len_test_cases}")
-    list(GET test_cases ${i} test_case_name)
-    add_executable(${test_case_name} ${test_case_name}.cpp)
-    target_link_libraries(${test_case_name} PRIVATE ${CONAN_LIBS_CAOSDB}
-        ${CONAN_LIBS_GTEST} ${CONAN_LIBS_GRPC} ${CONAN_LIBS_ABSEIL}
-        ${CONAN_LIBS_OPENSSL} ${CONAN_LIBS_C-ARES} ${CONAN_LIBS_BZIP2}
-        ${CONAN_LIBS_PROTOBUF} ${CONAN_LIBS_ZLIB} ${CONAN_LIBS_RE2}
-        ${CONAN_LIBS_BOOST})
-    target_include_directories(${test_case_name}
-        PUBLIC ${CONAN_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR})
-    if(LINTING)
-        set_target_properties(${test_case_name}
-            PROPERTIES
-            CXX_CLANG_TIDY "${_CMAKE_CXX_CLANG_TIDY};${_CMAKE_CXX_CLANG_TIDY_CHECKS}"
-            CXX_INCLUDE_WHAT_YOU_USE "${_CMAKE_CXX_INCLUDE_WHAT_YOU_USE}")
-    endif()
-    gtest_discover_tests(${test_case_name}
-        PROPERTIES
-            LABELS "caosdb-cpplib-int-tests")
-endforeach ()
diff --git a/test/test_transaction.cpp.orig b/test/test_transaction.cpp.orig
deleted file mode 100644
index dc848aff4926e082c72c771a7eba13e2b1387323..0000000000000000000000000000000000000000
--- a/test/test_transaction.cpp.orig
+++ /dev/null
@@ -1,855 +0,0 @@
-/*
- * This file is a part of the CaosDB Project.
- *
- * Copyright (C) 2021 Timm Fitschen <t.fitschen@indiscale.com>
- * Copyright (C) 2021 IndiScale GmbH <info@indiscale.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- *
- */
-#include "caosdb/connection.h" // for Connection, ConnectionManager
-#include "caosdb/entity.h"     // for Entity, Messages, Message
-#include "caosdb/file_transmission/file_writer.h" // for FileWriter
-#include "caosdb/message_code.h"       // for ENTITY_DOES_NOT_EXIST, Messag...
-#include "caosdb/status_code.h"        // for SUCCESS, StatusCode
-#include "caosdb/transaction.h"        // for Entity, Transaction,...
-#include "caosdb/transaction_status.h" // for TransactionStatus, StatusCode
-<<<<<<< HEAD
-#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>
-#include <memory> // for unique_ptr, allocator, __shar...
-#include <string> // for string
-#include <vector> // for vector
-=======
-#include <boost/filesystem/operations.hpp>  // for remove
-#include <boost/filesystem/path.hpp>        // for path
-#include <boost/filesystem/path_traits.hpp> // for filesystem
-#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 <memory>                  // for unique_ptr, allocator, __shar...
-#include <string>                  // for string
-#include <vector>                  // for vector
-
-namespace fs = boost::filesystem;
->>>>>>> f-files
-namespace caosdb::transaction {
-using caosdb::entity::Entity;
-using caosdb::entity::MessageCode;
-using caosdb::entity::Parent;
-using caosdb::entity::Property;
-
-class test_transaction : public ::testing::Test {
-protected:
-  fs::path test_upload_file_1;
-  fs::path test_download_file_1;
-
-  void SetUp() override {
-    test_upload_file_1 = fs::path("test_upload_file_1_delete_me.dat");
-    test_download_file_1 = fs::path("test_download_file_1_delete_me.dat");
-
-    FileWriter writer(test_upload_file_1);
-    std::string buffer(1024, 'c');
-    for (int i = 0; i < 8; i++) {
-      writer.write(buffer);
-    }
-  }
-
-  void TearDown() override {
-    fs::remove(test_upload_file_1);
-    fs::remove(test_download_file_1);
-
-    const auto &connection =
-      caosdb::connection::ConnectionManager::GetDefaultConnection();
-    auto query_transaction(connection->CreateTransaction());
-    query_transaction->Query("FIND ENTITY WITH id > 99");
-    query_transaction->Execute();
-    if (query_transaction->GetResultSet().size() > 0) {
-      auto delete_transaction(connection->CreateTransaction());
-      for (const Entity &entity : query_transaction->GetResultSet()) {
-        delete_transaction->DeleteById(entity.GetId());
-      }
-      delete_transaction->Execute();
-    }
-  }
-};
-
-TEST_F(test_transaction, DISABLED_retrieve_manufacturer_by_id) {
-  const auto &connection =
-    caosdb::connection::ConnectionManager::GetDefaultConnection();
-
-  const auto *id = "107";
-  const auto *role = "RecordType";
-  const auto *name = "Manufacturer";
-  const auto *description = "A generic manufacturer of all kinds of products";
-  const auto *version = "0bea8f7b17f0130fa5701a6c3849b9f8bfa0651b";
-
-  auto transaction(connection->CreateTransaction());
-  transaction->RetrieveById(id);
-  transaction->Execute();
-
-<<<<<<< HEAD
-  const auto &result_set =
-    dynamic_cast<const MultiResultSet &>(transaction->GetResultSet());
-=======
-  const auto &result_set = transaction->GetResultSet();
->>>>>>> f-files
-
-  const auto &entity = result_set.at(0);
-  EXPECT_EQ(id, entity.GetId());
-  EXPECT_EQ(name, entity.GetName());
-  EXPECT_EQ(role, entity.GetRole());
-  EXPECT_EQ(description, entity.GetDescription());
-  EXPECT_EQ(version, entity.GetVersionId());
-}
-
-TEST_F(test_transaction, retrieve_non_existing) {
-  const auto &connection =
-    caosdb::connection::ConnectionManager::GetDefaultConnection();
-
-  auto transaction(connection->CreateTransaction());
-
-  const auto *id = "non-existing-id";
-  transaction->RetrieveById(id);
-  transaction->ExecuteAsynchronously();
-
-  auto status = transaction->WaitForIt();
-  EXPECT_EQ(status.GetCode(), TransactionStatus::TRANSACTION_ERROR().GetCode());
-  ASSERT_EQ(status.GetCode(), StatusCode::GENERIC_TRANSACTION_ERROR);
-
-<<<<<<< HEAD
-  const auto &result_set =
-    dynamic_cast<const MultiResultSet &>(transaction->GetResultSet());
-=======
-  const auto &result_set = transaction->GetResultSet();
->>>>>>> f-files
-
-  const auto &entity = result_set.at(0);
-  EXPECT_EQ(id, entity.GetId());
-  EXPECT_TRUE(entity.HasErrors());
-  ASSERT_EQ(entity.GetErrors().size(), 1);
-  EXPECT_EQ(entity.GetErrors().at(0).GetCode(),
-            MessageCode::ENTITY_DOES_NOT_EXIST);
-}
-
-TEST_F(test_transaction, insert_without_delete) {
-  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());
-
-<<<<<<< HEAD
-  const auto &insert_result_set =
-    dynamic_cast<const MultiResultSet &>(insert_transaction->GetResultSet());
-=======
-  const auto &insert_result_set = insert_transaction->GetResultSet();
->>>>>>> f-files
-
-  const auto &new_entity = insert_result_set.at(0);
-  EXPECT_FALSE(new_entity.GetId().empty());
-  EXPECT_FALSE(new_entity.HasErrors());
-  // Should have a warning since it has no properties
-  EXPECT_TRUE(new_entity.HasWarnings());
-  EXPECT_EQ(new_entity.GetWarnings().size(), 1);
-  EXPECT_EQ(new_entity.GetWarnings().at(0).GetCode(),
-            MessageCode::ENTITY_HAS_NO_PROPERTIES);
-}
-
-TEST_F(test_transaction, insert_delete) {
-  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());
-
-<<<<<<< HEAD
-  const auto &insert_result_set =
-    dynamic_cast<const MultiResultSet &>(insert_transaction->GetResultSet());
-=======
-  const auto &insert_result_set = insert_transaction->GetResultSet();
->>>>>>> f-files
-
-  const auto &new_entity = insert_result_set.at(0);
-  EXPECT_FALSE(new_entity.GetId().empty());
-  EXPECT_FALSE(new_entity.HasErrors());
-  // Should have a warning since it has no properties
-  EXPECT_TRUE(new_entity.HasWarnings());
-  EXPECT_EQ(new_entity.GetWarnings().size(), 1);
-  EXPECT_EQ(new_entity.GetWarnings().at(0).GetCode(),
-            MessageCode::ENTITY_HAS_NO_PROPERTIES);
-
-  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());
-
-<<<<<<< HEAD
-  const auto &delete_result_set =
-    dynamic_cast<const MultiResultSet &>(delete_transaction->GetResultSet());
-=======
-  const auto &delete_result_set = delete_transaction->GetResultSet();
->>>>>>> f-files
-
-  const auto &deleted_entity = delete_result_set.at(0);
-  EXPECT_EQ(deleted_entity.GetId(), new_entity.GetId());
-  EXPECT_FALSE(deleted_entity.HasErrors());
-}
-
-TEST_F(test_transaction, insert_delete_with_parent) {
-  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());
-
-<<<<<<< HEAD
-  const auto &insert_result_set =
-    dynamic_cast<const MultiResultSet &>(insert_transaction->GetResultSet());
-=======
-  const auto &insert_result_set = insert_transaction->GetResultSet();
->>>>>>> f-files
-
-  const auto &inserted_rt = insert_result_set.at(0);
-
-  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());
-
-<<<<<<< HEAD
-  const auto &rec_result_set =
-    dynamic_cast<const MultiResultSet &>(rec_transaction->GetResultSet());
-=======
-  const auto &rec_result_set = rec_transaction->GetResultSet();
->>>>>>> f-files
-
-  const auto &inserted_rec = rec_result_set.at(0);
-
-  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());
-
-<<<<<<< HEAD
-  const auto &retrieve_result_set =
-    dynamic_cast<const MultiResultSet &>(retrieve_transaction->GetResultSet());
-=======
-  const auto &retrieve_result_set = retrieve_transaction->GetResultSet();
->>>>>>> f-files
-  const auto &retrieved_rec = retrieve_result_set.at(0);
-
-  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());
-}
-
-TEST_F(test_transaction, insert_delete_with_property) {
-  const auto &connection =
-    caosdb::connection::ConnectionManager::GetDefaultConnection();
-
-  // Create and insert property
-  Entity prop_ent;
-  prop_ent.SetRole("Property");
-  prop_ent.SetName("TestProperty");
-  prop_ent.SetDatatype("TEXT");
-
-  auto prop_insertion(connection->CreateTransaction());
-  prop_insertion->InsertEntity(&prop_ent);
-  prop_insertion->ExecuteAsynchronously();
-
-  auto prop_insert_status = prop_insertion->WaitForIt();
-
-  ASSERT_TRUE(prop_insert_status.IsTerminated());
-  ASSERT_FALSE(prop_insert_status.IsError());
-
-<<<<<<< HEAD
-  const auto &prop_result_set =
-    dynamic_cast<const MultiResultSet &>(prop_insertion->GetResultSet());
-=======
-  const auto &prop_result_set = prop_insertion->GetResultSet();
->>>>>>> f-files
-
-  const auto &inserted_prop = prop_result_set.at(0);
-  EXPECT_FALSE(inserted_prop.GetId().empty());
-
-  // create and insert record type with the above property
-  Property prop_rt;
-  prop_rt.SetName(prop_ent.GetName());
-  prop_rt.SetId(inserted_prop.GetId());
-  prop_rt.SetImportance("SUGGESTED");
-
-  Entity rt;
-  rt.SetRole("RecordType");
-  rt.SetName("TestRT");
-  rt.SetDescription("Some description");
-  rt.AppendProperty(prop_rt);
-
-  auto rt_insertion(connection->CreateTransaction());
-  rt_insertion->InsertEntity(&rt);
-  rt_insertion->ExecuteAsynchronously();
-
-  auto rt_insert_status = rt_insertion->WaitForIt();
-
-  ASSERT_TRUE(rt_insert_status.IsTerminated());
-  ASSERT_FALSE(rt_insert_status.IsError());
-
-<<<<<<< HEAD
-  const auto &rt_result_set =
-    dynamic_cast<const MultiResultSet &>(rt_insertion->GetResultSet());
-=======
-  const auto &rt_result_set = rt_insertion->GetResultSet();
->>>>>>> f-files
-
-  const auto &inserted_rt = rt_result_set.at(0);
-  EXPECT_FALSE(inserted_rt.GetId().empty());
-
-  // retrieve inserted rt for testing
-  auto rt_retrieval(connection->CreateTransaction());
-  rt_retrieval->RetrieveById(inserted_rt.GetId());
-  rt_retrieval->ExecuteAsynchronously();
-
-  auto rt_retrieve_status = rt_retrieval->WaitForIt();
-  ASSERT_TRUE(rt_retrieve_status.IsTerminated());
-  ASSERT_FALSE(rt_retrieve_status.IsError());
-
-<<<<<<< HEAD
-  const auto &rt_retrieve_results =
-    dynamic_cast<const MultiResultSet &>(rt_retrieval->GetResultSet());
-=======
-  const auto &rt_retrieve_results = rt_retrieval->GetResultSet();
->>>>>>> f-files
-
-  const auto &retrieved_rt = rt_retrieve_results.at(0);
-  EXPECT_EQ(inserted_rt.GetId(), retrieved_rt.GetId());
-  EXPECT_EQ(rt.GetName(), retrieved_rt.GetName());
-<<<<<<< HEAD
-  EXPECT_EQ(rt.GetDescription(), retrieved_rt.GetDescription());
-  EXPECT_EQ(retrieved_rt.GetProperties().Size(), 1);
-=======
-  EXPECT_EQ(retrieved_rt.GetProperties().size(), 1);
->>>>>>> f-files
-
-  const auto &retrieved_prop_rt = retrieved_rt.GetProperties().at(0);
-  EXPECT_EQ(retrieved_prop_rt.GetName(), prop_ent.GetName());
-  EXPECT_EQ(retrieved_prop_rt.GetId(), inserted_prop.GetId());
-  EXPECT_EQ(retrieved_prop_rt.GetDatatype(), prop_ent.GetDatatype());
-  EXPECT_EQ(retrieved_prop_rt.GetImportance(), prop_rt.GetImportance());
-
-  // create and insert record of the above record type with a property
-  // with a value.
-  Parent parent;
-  parent.SetName(rt.GetName());
-  parent.SetId(inserted_rt.GetId());
-
-  Property prop_rec;
-  prop_rec.SetName(prop_ent.GetName());
-  prop_rec.SetId(inserted_prop.GetId());
-  prop_rec.SetValue("Test");
-
-  Entity rec;
-  rec.SetName("TestRec");
-  rec.SetRole("Record");
-  rec.AppendParent(parent);
-  rec.AppendProperty(prop_rec);
-
-  auto rec_insertion(connection->CreateTransaction());
-  rec_insertion->InsertEntity(&rec);
-  rec_insertion->ExecuteAsynchronously();
-
-  auto rec_insert_status = rec_insertion->WaitForIt();
-
-  ASSERT_TRUE(rec_insert_status.IsTerminated());
-  ASSERT_FALSE(rec_insert_status.IsError());
-
-<<<<<<< HEAD
-  const auto &rec_result_set =
-    dynamic_cast<const MultiResultSet &>(rec_insertion->GetResultSet());
-=======
-  const auto &rec_result_set = rec_insertion->GetResultSet();
->>>>>>> f-files
-
-  const auto &inserted_rec = rec_result_set.at(0);
-  EXPECT_FALSE(inserted_rec.GetId().empty());
-
-  // Retrieve the record and verify paretn and property
-  auto rec_retrieval(connection->CreateTransaction());
-  rec_retrieval->RetrieveById(inserted_rec.GetId());
-  rec_retrieval->ExecuteAsynchronously();
-
-  auto rec_retrieve_status = rec_retrieval->WaitForIt();
-  ASSERT_TRUE(rec_retrieve_status.IsTerminated());
-  ASSERT_FALSE(rec_retrieve_status.IsError());
-
-<<<<<<< HEAD
-  const auto &rec_retrieve_results =
-    dynamic_cast<const MultiResultSet &>(rec_retrieval->GetResultSet());
-=======
-  const auto &rec_retrieve_results = rec_retrieval->GetResultSet();
->>>>>>> f-files
-
-  const auto &retrieved_rec = rec_retrieve_results.at(0);
-  EXPECT_EQ(rec.GetName(), retrieved_rec.GetName());
-  EXPECT_EQ(inserted_rec.GetId(), retrieved_rec.GetId());
-  EXPECT_EQ(retrieved_rec.GetParents().size(), 1);
-  EXPECT_EQ(retrieved_rec.GetProperties().size(), 1);
-
-  const auto &retrieved_parent_rec = retrieved_rec.GetParents().at(0);
-  EXPECT_EQ(retrieved_parent_rec.GetName(), rt.GetName());
-  EXPECT_EQ(retrieved_parent_rec.GetId(), inserted_rt.GetId());
-  EXPECT_EQ(retrieved_parent_rec.GetDescription(), rt.GetDescription());
-
-  const auto &retrieved_prop_rec = retrieved_rec.GetProperties().at(0);
-  EXPECT_EQ(retrieved_prop_rec.GetName(), prop_ent.GetName());
-  EXPECT_EQ(retrieved_prop_rec.GetId(), inserted_prop.GetId());
-  EXPECT_EQ(retrieved_prop_rec.GetDatatype(), prop_ent.GetDatatype());
-  EXPECT_EQ(retrieved_prop_rec.GetValue(), prop_rec.GetValue());
-}
-
-TEST_F(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());
-<<<<<<< HEAD
-  // Should have an error since entity 22 doesn't exist
-=======
->>>>>>> f-files
-  ASSERT_TRUE(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");
-<<<<<<< HEAD
-  // Exists so should be fine ...
-  EXPECT_FALSE(result_set.at(1).HasErrors());
-
-  // ... but this does not
-  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(),
-=======
-  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(),
->>>>>>> f-files
-            MessageCode::ENTITY_DOES_NOT_EXIST);
-}
-
-TEST_F(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());
-
-<<<<<<< HEAD
-  const auto &insert_result_set =
-    dynamic_cast<const MultiResultSet &>(insert_transaction->GetResultSet());
-=======
-  const auto &insert_result_set = insert_transaction->GetResultSet();
->>>>>>> f-files
-
-  const auto &new_entity = insert_result_set.at(0);
-  EXPECT_FALSE(new_entity.GetId().empty());
-  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(retrieve_transaction->GetResultSet().at(0));
-  update_entity.SetName("RT1-Update");
-
-  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);
-
-  EXPECT_EQ(updated_entity.GetId(), new_entity.GetId());
-  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());
-
-<<<<<<< HEAD
-  const auto &delete_result_set =
-    dynamic_cast<const MultiResultSet &>(delete_transaction->GetResultSet());
-=======
-  const auto &delete_result_set = delete_transaction->GetResultSet();
->>>>>>> f-files
-
-  const auto &deleted_entity = delete_result_set.at(0);
-  EXPECT_EQ(deleted_entity.GetId(), new_entity.GetId());
-  EXPECT_FALSE(deleted_entity.HasErrors());
-}
-
-TEST_F(test_transaction, test_query) {
-  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());
-
-<<<<<<< HEAD
-  const auto &insert_result_set =
-    dynamic_cast<const MultiResultSet &>(insert_transaction->GetResultSet());
-=======
-  const auto &insert_result_set = insert_transaction->GetResultSet();
->>>>>>> f-files
-
-  const auto &new_entity = insert_result_set.at(0);
-  EXPECT_FALSE(new_entity.GetId().empty());
-  EXPECT_FALSE(new_entity.HasErrors());
-
-  auto query_transaction(connection->CreateTransaction());
-  query_transaction->Query("FIND ENTITY WITH id = " + new_entity.GetId());
-  query_transaction->Execute();
-  EXPECT_EQ(query_transaction->GetResultSet().size(), 1);
-  EXPECT_EQ(query_transaction->GetResultSet().at(0).GetId(),
-            new_entity.GetId());
-  // No count query, so no count result should be present
-  EXPECT_TRUE((query_transaction->GetCountResult() < 0));
-
-  auto count_query_trans(connection->CreateTransaction());
-  std::cout << "Creating count query ..." << std::endl;
-  count_query_trans->Query("COUNT ENTITY WITH id = " + new_entity.GetId());
-  std::cout << "Executing count query ..." << std::endl;
-  count_query_trans->Execute();
-  // No result set in a count query
-<<<<<<< HEAD
-  std::cout << "Checking count query result set..." << std::endl;
-  EXPECT_EQ(count_query_trans->GetResultSet().size(), 0);
-  std::cout << "Checking count query result ..." << std::endl;
-=======
-  EXPECT_EQ(count_query_trans->GetResultSet().size(), 0);
->>>>>>> f-files
-  EXPECT_EQ(count_query_trans->GetCountResult(), 1);
-}
-
-TEST_F(test_transaction, test_query_with_retrieve) {
-  const auto &connection =
-    caosdb::connection::ConnectionManager::GetDefaultConnection();
-
-  // rt1
-  Entity rt1;
-  rt1.SetRole("RecordType");
-  rt1.SetName("TestRT1");
-
-  auto insert_rt1_transaction(connection->CreateTransaction());
-  insert_rt1_transaction->InsertEntity(&rt1);
-  insert_rt1_transaction->ExecuteAsynchronously();
-
-  auto insert_rt1_status = insert_rt1_transaction->WaitForIt();
-
-  ASSERT_TRUE(insert_rt1_status.IsTerminated());
-  ASSERT_FALSE(insert_rt1_status.IsError());
-
-<<<<<<< HEAD
-  const auto &insert_rt1_results = dynamic_cast<const MultiResultSet &>(
-    insert_rt1_transaction->GetResultSet());
-=======
-  const auto &insert_rt1_results = insert_rt1_transaction->GetResultSet();
->>>>>>> f-files
-
-  const auto &inserted_rt1 = insert_rt1_results.at(0);
-  EXPECT_FALSE(inserted_rt1.GetId().empty());
-  EXPECT_FALSE(inserted_rt1.HasErrors());
-
-  // rt2
-  Entity rt2;
-  rt2.SetRole("RecordType");
-  rt2.SetName("TestRT2");
-
-  auto insert_rt2_transaction(connection->CreateTransaction());
-  insert_rt2_transaction->InsertEntity(&rt2);
-  insert_rt2_transaction->ExecuteAsynchronously();
-
-  auto insert_rt2_status = insert_rt2_transaction->WaitForIt();
-
-  ASSERT_TRUE(insert_rt2_status.IsTerminated());
-  ASSERT_FALSE(insert_rt2_status.IsError());
-
-<<<<<<< HEAD
-  const auto &insert_rt2_results = dynamic_cast<const MultiResultSet &>(
-    insert_rt2_transaction->GetResultSet());
-=======
-  const auto &insert_rt2_results = insert_rt2_transaction->GetResultSet();
->>>>>>> f-files
-
-  const auto &inserted_rt2 = insert_rt2_results.at(0);
-  EXPECT_FALSE(inserted_rt2.GetId().empty());
-  EXPECT_FALSE(inserted_rt2.HasErrors());
-
-  // rt3
-  Entity rt3;
-  rt3.SetRole("RecordType");
-  rt3.SetName("TestRT3");
-
-  auto insert_rt3_transaction(connection->CreateTransaction());
-  insert_rt3_transaction->InsertEntity(&rt3);
-  insert_rt3_transaction->ExecuteAsynchronously();
-
-  auto insert_rt3_status = insert_rt3_transaction->WaitForIt();
-
-  ASSERT_TRUE(insert_rt3_status.IsTerminated());
-  ASSERT_FALSE(insert_rt3_status.IsError());
-
-<<<<<<< HEAD
-  const auto &insert_rt3_results = dynamic_cast<const MultiResultSet &>(
-    insert_rt3_transaction->GetResultSet());
-=======
-  const auto &insert_rt3_results = insert_rt3_transaction->GetResultSet();
->>>>>>> f-files
-
-  const auto &inserted_rt3 = insert_rt3_results.at(0);
-  EXPECT_FALSE(inserted_rt3.GetId().empty());
-  EXPECT_FALSE(inserted_rt3.HasErrors());
-
-  // only FIND
-  auto find_transaction(connection->CreateTransaction());
-  find_transaction->Query("FIND ENTITY WITH name LIKE 'TestRT*'");
-  find_transaction->ExecuteAsynchronously();
-
-  const auto find_status = find_transaction->WaitForIt();
-
-  ASSERT_TRUE(find_status.IsTerminated());
-  ASSERT_FALSE(find_status.IsError());
-
-  const auto &find_results = find_transaction->GetResultSet();
-  EXPECT_EQ(find_results.size(), 3);
-
-  // only retrieve rt1 and rt2 by id
-  const std::vector<std::string> ids = {inserted_rt1.GetId(),
-                                        inserted_rt2.GetId()};
-
-  // retrieve rt3 with a FIND query
-  auto find_and_retrieve(connection->CreateTransaction());
-  find_and_retrieve->Query("FIND ENTITY WITH id = " + inserted_rt3.GetId());
-  find_and_retrieve->RetrieveById(ids.begin(), ids.end());
-  find_and_retrieve->ExecuteAsynchronously();
-
-  auto find_and_retrieve_status = find_and_retrieve->WaitForIt();
-
-  ASSERT_TRUE(find_and_retrieve_status.IsTerminated());
-  ASSERT_FALSE(find_and_retrieve_status.IsError());
-
-  const auto &result_set_a = find_and_retrieve->GetResultSet();
-  EXPECT_EQ(result_set_a.size(), 3);
-
-  // retrieve rt1 and rt2 by ID and count all TestRTs
-  auto count_and_retrieve(connection->CreateTransaction());
-  count_and_retrieve->Query("COUNT ENTITY WITH name LIKE 'TestRT*'");
-  count_and_retrieve->RetrieveById(ids.begin(), ids.end());
-  count_and_retrieve->ExecuteAsynchronously();
-
-  auto count_and_retrieve_status = count_and_retrieve->WaitForIt();
-
-  ASSERT_TRUE(count_and_retrieve_status.IsTerminated());
-  ASSERT_FALSE(count_and_retrieve_status.IsError());
-
-  const auto &result_set_b = count_and_retrieve->GetResultSet();
-  // TODO(fspreck) Re-enable once we implemented this
-  // EXPECT_EQ(result_set_b.size(), 2);
-  EXPECT_EQ(count_and_retrieve->GetCountResult(), 3);
-}
-
-TEST_F(test_transaction, test_file_upload) {
-  const auto &connection =
-    caosdb::connection::ConnectionManager::GetDefaultConnection();
-
-  Entity file;
-  file.SetRole("File");
-  file.SetFilePath("test.txt");
-  file.SetLocalPath(test_upload_file_1);
-
-  auto insert_transaction(connection->CreateTransaction());
-  insert_transaction->InsertEntity(&file);
-  insert_transaction->ExecuteAsynchronously();
-
-  auto insert_status = insert_transaction->WaitForIt();
-
-  ASSERT_TRUE(insert_status.IsTerminated());
-  EXPECT_EQ(insert_status.GetCode(), StatusCode::SUCCESS);
-
-  const auto &insert_results = insert_transaction->GetResultSet();
-
-  const auto &inserted_file = insert_results.at(0);
-  EXPECT_FALSE(inserted_file.GetId().empty());
-  EXPECT_FALSE(inserted_file.HasErrors());
-}
-
-TEST_F(test_transaction, test_file_download) {
-  const auto &connection =
-    caosdb::connection::ConnectionManager::GetDefaultConnection();
-
-  Entity file;
-  file.SetRole("File");
-  file.SetFilePath("test.txt");
-  file.SetLocalPath(test_upload_file_1);
-
-  auto insert_transaction(connection->CreateTransaction());
-  insert_transaction->InsertEntity(&file);
-  insert_transaction->Execute();
-
-  const auto &insert_results = insert_transaction->GetResultSet();
-
-  const auto &inserted_file = insert_results.at(0);
-  ASSERT_FALSE(inserted_file.GetId().empty());
-  ASSERT_FALSE(inserted_file.HasErrors());
-
-  auto download_transaction(connection->CreateTransaction());
-  download_transaction->RetrieveAndDownloadFilesById(
-    inserted_file.GetId(), test_download_file_1.string());
-  download_transaction->ExecuteAsynchronously();
-  ASSERT_EQ(download_transaction->WaitForIt().GetCode(), StatusCode::SUCCESS);
-
-  const auto &download_results = download_transaction->GetResultSet();
-  ASSERT_EQ(download_results.size(), 1);
-
-  const auto &downloaded_file = download_results.at(0);
-  ASSERT_FALSE(downloaded_file.GetId().empty());
-  ASSERT_FALSE(downloaded_file.HasErrors());
-  EXPECT_EQ(downloaded_file.GetLocalPath().string(),
-            test_download_file_1.string());
-}
-
-} // namespace caosdb::transaction