[Unit Test] SQLite mini-ORM unit tests and cleanup #14

This commit is contained in:
Scott E. Graves 2024-10-02 14:36:02 -05:00
parent fed4f40cfb
commit de0a88e45b
2 changed files with 68 additions and 0 deletions

View File

@ -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<db::db_select::row> 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<std::string>().c_str());
EXPECT_STREQ("column2", columns[1U].get_name().c_str());
EXPECT_STREQ("moose", columns[1U].get_value<std::string>().c_str());
for (auto &&column : columns) {
std::cout << column.get_index() << ':';
std::cout << column.get_name() << ':';
std::cout << column.get_value<std::string>() << 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