diff --git a/src/ccaosdb.cpp b/src/ccaosdb.cpp index 9a62cb074c29d16b38c5b6fc471eeade2c01c113..d1bb1217121a816f6dc6032a525f54f3db4c896a 100644 --- a/src/ccaosdb.cpp +++ b/src/ccaosdb.cpp @@ -471,7 +471,7 @@ ERROR_RETURN_CODE( auto *wrapped_entity = static_cast<caosdb::entity::Entity *>(entity->wrapped_entity); - return wrapped_transaction->InsertEntity(*wrapped_entity); + return wrapped_transaction->InsertEntity(wrapped_entity); }) ERROR_RETURN_CODE( @@ -484,7 +484,7 @@ ERROR_RETURN_CODE( auto *wrapped_entity = static_cast<caosdb::entity::Entity *>(entity->wrapped_entity); - return wrapped_transaction->UpdateEntity(*wrapped_entity); + return wrapped_transaction->UpdateEntity(wrapped_entity); }) ERROR_RETURN_CODE(GENERIC_ERROR, @@ -496,7 +496,7 @@ ERROR_RETURN_CODE(GENERIC_ERROR, static_cast<caosdb::transaction::Transaction *>( transaction->wrapped_transaction); - return wrapped_transaction->DeleteById(std::string(id)) + return wrapped_transaction->DeleteById(std::string(id)); }) ERROR_RETURN_CODE(GENERIC_ERROR, diff --git a/test/test_ccaosdb.cpp b/test/test_ccaosdb.cpp index 1009cc5962c6a309052509e36d39c3f6ee97ea98..2f33c095360fd1575120d7fabd6669afd96406dd 100644 --- a/test/test_ccaosdb.cpp +++ b/test/test_ccaosdb.cpp @@ -415,3 +415,46 @@ TEST_F(test_ccaosdb, test_remove_property) { return_code = caosdb_entity_delete_entity(&entity); EXPECT_EQ(return_code, 0); } + +TEST_F(test_ccaosdb, test_insert_update_delete) { + // Only test adding to a transaction, excution and results are + // tested in integration tests. + caosdb_connection_connection connection; + caosdb_connection_connection_manager_get_default_connection(&connection); + + caosdb_transaction_transaction insert_transaction; + caosdb_connection_connection_create_transaction(&connection, + &insert_transaction); + + caosdb_entity_entity entity; + caosdb_entity_create_entity(&entity); + caosdb_entity_entity_set_name(&entity, "some_name"); + + int return_code( + caosdb_transaction_transaction_insert_entity(&insert_transaction, &entity)); + // For now, nothing further can be done here, so it should be READY + EXPECT_EQ(return_code, caosdb::StatusCode::READY); + + caosdb_transaction_transaction update_transaction; + caosdb_connection_connection_create_transaction(&connection, + &update_transaction); + + return_code = + caosdb_transaction_transaction_update_entity(&update_transaction, &entity); + // No ID, so this should be an error + EXPECT_EQ(return_code, caosdb::StatusCode::ORIGINAL_ENTITY_MISSING_ID); + + caosdb_transaction_transaction delete_transaction; + caosdb_connection_connection_create_transaction(&connection, + &delete_transaction); + + return_code = + caosdb_transaction_transaction_delete_by_id(&delete_transaction, "some_id"); + // Could add further deletions + EXPECT_EQ(return_code, caosdb::StatusCode::GO_ON); + + caosdb_entity_delete_entity(&entity); + caosdb_transaction_delete_transaction(&insert_transaction); + caosdb_transaction_delete_transaction(&update_transaction); + caosdb_transaction_delete_transaction(&delete_transaction); +}