From 62a75bcdddd84b63315fec290a8bbd054839de58 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Tue, 1 Oct 2024 14:10:21 -0500 Subject: [PATCH] [Unit Test] SQLite mini-ORM unit tests and cleanup #14 --- .../repertory_test/src/database_test.cpp | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/repertory/repertory_test/src/database_test.cpp b/repertory/repertory_test/src/database_test.cpp index 968c2bd6..4de8328d 100644 --- a/repertory/repertory_test/src/database_test.cpp +++ b/repertory/repertory_test/src/database_test.cpp @@ -30,6 +30,32 @@ namespace repertory { TEST(database, db_delete_query) { + console_consumer consumer1; + event_system::instance().start(); + { + db::db3_t db3; + { + sqlite3 *db3_ptr{nullptr}; + auto res = sqlite3_open_v2( + utils::path::combine(test::get_test_input_dir(), {"test.db3"}) + .c_str(), + &db3_ptr, SQLITE_OPEN_READWRITE, nullptr); + ASSERT_EQ(SQLITE_OK, res); + ASSERT_TRUE(db3_ptr != nullptr); + + db3.reset(db3_ptr); + } + + auto query = db::db_delete{*db3.get(), "table"}; + auto query_str = query.dump(); + std::cout << query_str << std::endl; + EXPECT_STREQ(R"(DELETE FROM "table";)", query_str.c_str()); + } + + event_system::instance().stop(); +} + +TEST(database, db_delete_where_query) { console_consumer consumer1; event_system::instance().start(); { @@ -123,6 +149,32 @@ TEST(database, db_insert_or_replace_query) { } TEST(database, db_select_query) { + console_consumer consumer1; + event_system::instance().start(); + { + db::db3_t db3; + { + sqlite3 *db3_ptr{nullptr}; + auto res = sqlite3_open_v2( + utils::path::combine(test::get_test_input_dir(), {"test.db3"}) + .c_str(), + &db3_ptr, SQLITE_OPEN_READWRITE, nullptr); + ASSERT_EQ(SQLITE_OK, res); + ASSERT_TRUE(db3_ptr != nullptr); + + db3.reset(db3_ptr); + } + + auto query = db::db_select{*db3.get(), "table"}; + auto query_str = query.dump(); + std::cout << query_str << std::endl; + EXPECT_STREQ(R"(SELECT * FROM "table";)", query_str.c_str()); + } + + event_system::instance().stop(); +} + +TEST(database, db_select_where_query) { console_consumer consumer1; event_system::instance().start(); { @@ -173,6 +225,40 @@ TEST(database, db_select_query) { event_system::instance().stop(); } +TEST(database, db_select_columns_query) { + console_consumer consumer1; + event_system::instance().start(); + { + db::db3_t db3; + { + sqlite3 *db3_ptr{nullptr}; + auto res = sqlite3_open_v2( + utils::path::combine(test::get_test_input_dir(), {"test.db3"}) + .c_str(), + &db3_ptr, SQLITE_OPEN_READWRITE, nullptr); + ASSERT_EQ(SQLITE_OK, res); + ASSERT_TRUE(db3_ptr != nullptr); + + db3.reset(db3_ptr); + } + + auto query = db::db_select{*db3.get(), "table"} + .column("column1") + .column("column2") + .where("column1") + .equals("test1") + .and_where("column2") + .equals("test2"); + auto query_str = query.dump(); + std::cout << query_str << std::endl; + EXPECT_STREQ( + R"(SELECT column1, column2 FROM "table" WHERE ("column1"=?1 AND "column2"=?2);)", + query_str.c_str()); + } + + event_system::instance().stop(); +} + TEST(database, db_update_query) { console_consumer consumer1; event_system::instance().start(); @@ -205,4 +291,24 @@ TEST(database, db_update_query) { event_system::instance().stop(); } + +// 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()) { +// for (const auto &column : row.value().get_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); } // namespace repertory