Skip to content
Snippets Groups Projects
Commit bd017725 authored by Henrik tom Wörden's avatar Henrik tom Wörden
Browse files

workflow test

parent 8da9fbf6
No related branches found
No related tags found
1 merge request!9F consolidation
Pipeline #12287 failed
This commit is part of merge request !9. Comments created here will be created in the context of that merge request.
......@@ -776,4 +776,131 @@ TEST_F(test_transaction, test_file_up_n_download) {
}
}
/*
* Test a small worklfow
*/
TEST_F(test_transaction, test_full_workflow) {
const auto &connection =
caosdb::connection::ConnectionManager::GetDefaultConnection();
// ###### Create Data Model ######
Entity dataRT;
dataRT.SetRole(Role::RECORD_TYPE);
dataRT.SetName("DataRT");
Entity voltage;
voltage.SetRole(Role::PROPERTY);
voltage.SetName("voltage");
voltage.SetUnit("V");
voltage.SetDataType(AtomicDataType::DOUBLE);
Entity notes;
notes.SetRole(Role::PROPERTY);
notes.SetName("notes");
notes.SetDataType(AtomicDataType::TEXT);
Entity participants;
participants.SetRole(Role::PROPERTY);
participants.SetName("participants");
participants.SetDataType(AtomicDataType::INTEGER);
// participants.SetDataType(ListDataType::);
Entity success;
success.SetRole(Role::PROPERTY);
success.SetName("success");
success.SetDataType(AtomicDataType::BOOLEAN);
Entity experiment;
experiment.SetRole(Role::RECORD_TYPE);
experiment.SetName("Experiment");
// TODO(henrik): creating this extra Property (additionally to the Entity
// above) is VERY clumsy
Property volt_for_rt;
volt_for_rt.SetName(voltage.GetName());
volt_for_rt.SetImportance(Importance::RECOMMENDED);
experiment.AppendProperty(volt_for_rt);
Property notes_for_rt2;
notes_for_rt2.SetName(notes.GetName());
notes_for_rt2.SetImportance(Importance::RECOMMENDED);
experiment.AppendProperty(notes_for_rt2);
Property part_for_rt3;
part_for_rt3.SetName(participants.GetName());
part_for_rt3.SetImportance(Importance::SUGGESTED);
experiment.AppendProperty(part_for_rt3);
Property succ_for_rt;
succ_for_rt.SetName(success.GetName());
succ_for_rt.SetImportance(Importance::SUGGESTED);
experiment.AppendProperty(succ_for_rt);
auto insert_transaction(connection->CreateTransaction());
insert_transaction->InsertEntity(&dataRT);
auto insert_status = insert_transaction->Execute();
const auto &insert_results = insert_transaction->GetResultSet();
const auto &inserted_ent = insert_results.at(0);
ASSERT_FALSE(inserted_ent.GetId().empty());
ASSERT_FALSE(inserted_ent.HasErrors());
insert_transaction = connection->CreateTransaction();
insert_transaction->InsertEntity(&voltage);
insert_status = insert_transaction->Execute();
insert_transaction = connection->CreateTransaction();
insert_transaction->InsertEntity(&notes);
insert_status = insert_transaction->Execute();
insert_transaction = connection->CreateTransaction();
insert_transaction->InsertEntity(&participants);
insert_status = insert_transaction->Execute();
insert_transaction = connection->CreateTransaction();
insert_transaction->InsertEntity(&success);
insert_status = insert_transaction->Execute();
insert_transaction = connection->CreateTransaction();
insert_transaction->InsertEntity(&experiment);
insert_status = insert_transaction->Execute();
auto retr_transaction(connection->CreateTransaction());
retr_transaction->Query("FIND Experiment");
retr_transaction->Execute();
EXPECT_EQ(retr_transaction->GetResultSet().size(), 1);
Parent experiment_parent;
experiment_parent.SetName("Experiment");
for (int i = 0; i < 8; i++) {
Entity experiment_rec;
experiment_rec.SetRole(Role::RECORD);
experiment_rec.AppendParent(experiment_parent);
volt_for_rt.SetValue(1.6);
experiment_rec.AppendProperty(volt_for_rt);
notes_for_rt2.SetValue("This is important!");
experiment_rec.AppendProperty(notes_for_rt2);
part_for_rt3.SetValue(static_cast<int64_t>(6));
experiment_rec.AppendProperty(part_for_rt3);
succ_for_rt.SetValue(true);
experiment_rec.AppendProperty(succ_for_rt);
auto rec_insert_transaction(connection->CreateTransaction());
rec_insert_transaction->InsertEntity(&experiment_rec);
std::cout << "before ..." << std::endl;
insert_status = rec_insert_transaction->Execute();
std::cout << "after ..." << std::endl;
}
retr_transaction=connection->CreateTransaction();
retr_transaction->Query("FIND Record Experiment");
retr_transaction->Execute();
EXPECT_EQ(retr_transaction->GetResultSet().size(), 8);
auto to_be_updated = retr_transaction->GetResultSet().at(0);
// TODO using the index for deletion is very inconvenient
to_be_updated.RemoveProperty(0);
to_be_updated.SetName("changedone");
auto update_transaction(connection->CreateTransaction());
update_transaction->UpdateEntity(&to_be_updated);
update_transaction->Execute();
retr_transaction=connection->CreateTransaction();
retr_transaction->Query("FIND Record Experiment with name=changedone");
retr_transaction->Execute();
EXPECT_EQ(retr_transaction->GetResultSet().size(), 1);
}
} // namespace caosdb::transaction
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