From a523d1ca66d62f08e2294d67b04877cc513739c9 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Tue, 1 Oct 2024 14:21:23 -0500 Subject: [PATCH] [Unit Test] SQLite mini-ORM unit tests and cleanup #14 --- .../repertory_test/src/database_test.cpp | 337 +++++------------- 1 file changed, 94 insertions(+), 243 deletions(-) diff --git a/repertory/repertory_test/src/database_test.cpp b/repertory/repertory_test/src/database_test.cpp index 4de8328d..da8981d7 100644 --- a/repertory/repertory_test/src/database_test.cpp +++ b/repertory/repertory_test/src/database_test.cpp @@ -29,267 +29,118 @@ #include "utils/path.hpp" 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); +class database_test : public ::testing::Test { +public: + static console_consumer cs; + db::db3_t db3; - db3.reset(db3_ptr); - } + void SetUp() override { + event_system::instance().start(); - 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()); + 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); } - event_system::instance().stop(); + void TearDown() override { + db3.reset(); + event_system::instance().stop(); + } +}; + +TEST_F(database_test, db_delete_query) { + 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()); } -TEST(database, db_delete_where_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"} - .where("column1") - .equals("test1") - .and_where("column2") - .equals("test2"); - auto query_str = query.dump(); - std::cout << query_str << std::endl; - EXPECT_STREQ( - R"(DELETE FROM "table" WHERE ("column1"=?1 AND "column2"=?2);)", - query_str.c_str()); - } - - event_system::instance().stop(); +TEST_F(database_test, db_delete_where_query) { + auto query = db::db_delete{*db3.get(), "table"} + .where("column1") + .equals("test1") + .and_where("column2") + .equals("test2"); + auto query_str = query.dump(); + std::cout << query_str << std::endl; + EXPECT_STREQ(R"(DELETE FROM "table" WHERE ("column1"=?1 AND "column2"=?2);)", + query_str.c_str()); } -TEST(database, db_insert_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_insert{*db3.get(), "table"} - .column_value("column1", "test9") - .column_value("column2", "test9"); - auto query_str = query.dump(); - std::cout << query_str << std::endl; - EXPECT_STREQ( - R"(INSERT INTO "table" ("column1", "column2") VALUES (?1, ?2);)", - query_str.c_str()); - } - - event_system::instance().stop(); +TEST_F(database_test, db_insert_query) { + auto query = db::db_insert{*db3.get(), "table"} + .column_value("column1", "test9") + .column_value("column2", "test9"); + auto query_str = query.dump(); + std::cout << query_str << std::endl; + EXPECT_STREQ(R"(INSERT INTO "table" ("column1", "column2") VALUES (?1, ?2);)", + query_str.c_str()); } -TEST(database, db_insert_or_replace_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_insert{*db3.get(), "table"} - .or_replace() - .column_value("column1", "test1") - .column_value("column2", "test2"); - auto query_str = query.dump(); - std::cout << query_str << std::endl; - EXPECT_STREQ( - R"(INSERT OR REPLACE INTO "table" ("column1", "column2") VALUES (?1, ?2);)", - query_str.c_str()); - } - - event_system::instance().stop(); +TEST_F(database_test, db_insert_or_replace_query) { + auto query = db::db_insert{*db3.get(), "table"} + .or_replace() + .column_value("column1", "test1") + .column_value("column2", "test2"); + auto query_str = query.dump(); + std::cout << query_str << std::endl; + EXPECT_STREQ( + R"(INSERT OR REPLACE INTO "table" ("column1", "column2") VALUES (?1, ?2);)", + query_str.c_str()); } -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_F(database_test, db_select_query) { + 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()); } -TEST(database, db_select_where_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"} - .where("column1") - .equals("test1") - .and_where("column2") - .equals("test2"); - auto query_str = query.dump(); - std::cout << query_str << std::endl; - EXPECT_STREQ( - R"(SELECT * FROM "table" WHERE ("column1"=?1 AND "column2"=?2);)", - query_str.c_str()); - // 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); - } - - event_system::instance().stop(); +TEST_F(database_test, db_select_where_query) { + auto query = db::db_select{*db3.get(), "table"} + .where("column1") + .equals("test1") + .and_where("column2") + .equals("test2"); + auto query_str = query.dump(); + std::cout << query_str << std::endl; + EXPECT_STREQ( + R"(SELECT * FROM "table" WHERE ("column1"=?1 AND "column2"=?2);)", + query_str.c_str()); } -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_F(database_test, db_select_columns_query) { + 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()); } -TEST(database, db_update_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_update{*db3.get(), "table"} - .column_value("column1", "moose") - .where("column1") - .equals("test1") - .and_where("column2") - .equals("test2"); - auto query_str = query.dump(); - std::cout << query_str << std::endl; - EXPECT_STREQ( - R"(UPDATE "table" SET "column1"=?1 WHERE ("column1"=?2 AND "column2"=?3);)", - query_str.c_str()); - } - - event_system::instance().stop(); +TEST_F(database_test, db_update_query) { + auto query = db::db_update{*db3.get(), "table"} + .column_value("column1", "moose") + .where("column1") + .equals("test1") + .and_where("column2") + .equals("test2"); + auto query_str = query.dump(); + std::cout << query_str << std::endl; + EXPECT_STREQ( + R"(UPDATE "table" SET "column1"=?1 WHERE ("column1"=?2 AND "column2"=?3);)", + query_str.c_str()); } // auto res = query.go();