diff --git a/repertory/repertory_test/src/database_test.cpp b/repertory/repertory_test/src/database_test.cpp index 9102e29d..52a7d636 100644 --- a/repertory/repertory_test/src/database_test.cpp +++ b/repertory/repertory_test/src/database_test.cpp @@ -269,4 +269,72 @@ TEST_F(database_test, insert_update_delete) { EXPECT_EQ(std::size_t(0U), row_count); } } + +TEST_F(database_test, insert_or_replace_and_delete) { + { + auto query = db::db_insert{*db3.get(), "table"} + .column_value("column1", "test0") + .column_value("column2", "test1"); + auto res = query.go(); + EXPECT_TRUE(res.ok()); + } + + { + auto query = db::db_insert{*db3.get(), "table"} + .or_replace() + .column_value("column1", "test0") + .column_value("column2", "moose"); + auto res = query.go(); + EXPECT_TRUE(res.ok()); + } + + { + auto query = db::db_select{*db3.get(), "table"}; + auto res = query.go(); + EXPECT_TRUE(res.ok()); + EXPECT_TRUE(res.has_row()); + + std::size_t row_count{}; + while (res.has_row()) { + std::optional row; + EXPECT_TRUE(res.get_row(row)); + EXPECT_TRUE(row.has_value()); + if (row.has_value()) { + auto columns = row.value().get_columns(); + EXPECT_EQ(std::size_t(2U), columns.size()); + EXPECT_STREQ("column1", columns[0U].get_name().c_str()); + EXPECT_STREQ("test0", columns[0U].get_value().c_str()); + EXPECT_STREQ("column2", columns[1U].get_name().c_str()); + EXPECT_STREQ("moose", columns[1U].get_value().c_str()); + for (auto &&column : columns) { + std::cout << column.get_index() << ':'; + std::cout << column.get_name() << ':'; + std::cout << column.get_value() << std::endl; + } + } + ++row_count; + } + + EXPECT_EQ(std::size_t(1U), row_count); + } + + { + auto query = db::db_delete{*db3.get(), "table"}; + auto res = query.go(); + EXPECT_TRUE(res.ok()); + } + + { + auto query = db::db_select{*db3.get(), "table"}; + auto res = query.go(); + EXPECT_TRUE(res.ok()); + + std::size_t row_count{}; + while (res.has_row()) { + ++row_count; + } + + EXPECT_EQ(std::size_t(0U), row_count); + } +} } // namespace repertory diff --git a/repertory/repertory_test/test_config/test.db3 b/repertory/repertory_test/test_config/test.db3 index 6dc34781..99dc1f27 100644 Binary files a/repertory/repertory_test/test_config/test.db3 and b/repertory/repertory_test/test_config/test.db3 differ