Skip to content
Snippets Groups Projects
Commit ad22160a authored by Daniel Hornung's avatar Daniel Hornung
Browse files

TEST: Insert of Entity with wrongly named parent should fail.

parent 6b87d2fa
No related branches found
No related tags found
No related merge requests found
Pipeline #12801 failed
...@@ -338,6 +338,56 @@ TEST_F(test_transaction, insert_delete_with_parent) { ...@@ -338,6 +338,56 @@ TEST_F(test_transaction, insert_delete_with_parent) {
ASSERT_FALSE(rt_delete_status.IsError()); ASSERT_FALSE(rt_delete_status.IsError());
} }
/*
* Insert a Record with a parent, which has a wrong name.
*
* This must result in a server error.
*/
TEST_F(test_transaction, insert_parent_with_wrong_name) {
const auto &connection =
caosdb::connection::ConnectionManager::GetDefaultConnection();
auto insert_transaction(connection->CreateTransaction());
// insert RT
Entity rt;
rt.SetRole(Role::RECORD_TYPE);
rt.SetName("Test_RT_Name");
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 = insert_transaction->GetResultSet();
const auto &inserted_rt = insert_result_set.at(0);
// create Record with parent
Entity rec;
rec.SetRole(Role::RECORD);
rec.SetName("TestRec");
Parent parent;
parent.SetId(inserted_rt.GetId());
parent.SetName(rt.GetName() + "_wrong");
rec.AppendParent(parent);
// insert Record
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());
EXPECT_TRUE(rec_insert_status.IsError());
const auto &rec_result_set = rec_transaction->GetResultSet();
const auto &inserted_rec = rec_result_set.at(0);
std::cout << inserted_rec.ToString() << std::endl;
}
/* /*
* insert a property, record type with that property and a record with it * insert a property, record type with that property and a record with it
*/ */
...@@ -695,8 +745,7 @@ auto test_numeric_values_impl(AtomicDataType a_type) -> void { ...@@ -695,8 +745,7 @@ auto test_numeric_values_impl(AtomicDataType a_type) -> void {
auto insert_transaction(connection->CreateTransaction()); auto insert_transaction(connection->CreateTransaction());
Entity prop; Entity prop;
prop.SetRole(Role::PROPERTY); prop.SetRole(Role::PROPERTY);
const auto name = const auto name = std::string("Prop ") + std::to_string(i);
std::string("Prop ") + std::to_string(i);
std::cout << "Creating: " << name << std::endl; std::cout << "Creating: " << name << std::endl;
prop.SetName(name); prop.SetName(name);
prop.SetDataType(a_type); prop.SetDataType(a_type);
...@@ -717,8 +766,7 @@ auto test_numeric_values_impl(AtomicDataType a_type) -> void { ...@@ -717,8 +766,7 @@ auto test_numeric_values_impl(AtomicDataType a_type) -> void {
for (const auto value : values_orig) { for (const auto value : values_orig) {
auto retrieve_transaction(connection->CreateTransaction()); auto retrieve_transaction(connection->CreateTransaction());
const auto prop = props_orig[i]; const auto prop = props_orig[i];
const auto name = const auto name = std::string("Prop ") + std::to_string(i);
std::string("Prop ") + std::to_string(i);
std::cout << "Retrieving: " << name << std::endl; std::cout << "Retrieving: " << name << std::endl;
const auto query = std::string("FIND ENTITY \"") + name + "\""; const auto query = std::string("FIND ENTITY \"") + name + "\"";
retrieve_transaction->Query(query); retrieve_transaction->Query(query);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment