[Unit Test] SQLite mini-ORM unit tests and cleanup #14
This commit is contained in:
parent
12d3fbe9a7
commit
d61cb3f0f3
@ -53,6 +53,80 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void common_insert(db::db3_t &db, bool dump = false) {
|
||||||
|
auto query = db::db_insert{db, "table"}
|
||||||
|
.column_value("column1", "test0")
|
||||||
|
.column_value("column2", "test1");
|
||||||
|
if (dump) {
|
||||||
|
std::cout << query.dump() << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto res = query.go();
|
||||||
|
EXPECT_TRUE(res.ok());
|
||||||
|
}
|
||||||
|
|
||||||
|
static void common_select(db::db3_t &db, std::string value1, std::string value2,
|
||||||
|
bool dump = false) {
|
||||||
|
auto query = db::db_select{db, "table"};
|
||||||
|
if (dump) {
|
||||||
|
std::cout << query.dump() << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
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(value1.c_str(),
|
||||||
|
columns[0U].get_value<std::string>().c_str());
|
||||||
|
EXPECT_STREQ("column2", columns[1U].get_name().c_str());
|
||||||
|
EXPECT_STREQ(value2.c_str(),
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void common_delete(db::db3_t &db, bool dump = false) {
|
||||||
|
{
|
||||||
|
auto query = db::db_delete{db, "table"};
|
||||||
|
if (dump) {
|
||||||
|
std::cout << query.dump() << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto res = query.go();
|
||||||
|
EXPECT_TRUE(res.ok());
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
auto query = db::db_select{*db, "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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(database_test, db_delete_query) {
|
TEST_F(database_test, db_delete_query) {
|
||||||
auto query = db::db_delete{*db3.get(), "table"};
|
auto query = db::db_delete{*db3.get(), "table"};
|
||||||
auto query_str = query.dump();
|
auto query_str = query.dump();
|
||||||
@ -144,74 +218,15 @@ TEST_F(database_test, db_update_query) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(database_test, insert_select_delete) {
|
TEST_F(database_test, insert_select_delete) {
|
||||||
{
|
common_insert(*db3.get(), true);
|
||||||
auto query = db::db_insert{*db3.get(), "table"}
|
|
||||||
.column_value("column1", "test0")
|
|
||||||
.column_value("column2", "test1");
|
|
||||||
auto res = query.go();
|
|
||||||
EXPECT_TRUE(res.ok());
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
common_select(*db3.get(), "test0", "test1", true);
|
||||||
auto query = db::db_select{*db3.get(), "table"};
|
|
||||||
std::cout << query.dump() << std::endl;
|
|
||||||
|
|
||||||
auto res = query.go();
|
common_delete(*db3.get(), true);
|
||||||
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("test1", 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(database_test, insert_update_delete) {
|
TEST_F(database_test, insert_update_delete) {
|
||||||
{
|
common_insert(*db3.get());
|
||||||
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_update{*db3.get(), "table"}
|
auto query = db::db_update{*db3.get(), "table"}
|
||||||
@ -223,64 +238,13 @@ TEST_F(database_test, insert_update_delete) {
|
|||||||
EXPECT_TRUE(res.ok());
|
EXPECT_TRUE(res.ok());
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
common_select(*db3.get(), "moose", "test1");
|
||||||
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{};
|
common_delete(*db3.get());
|
||||||
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("moose", columns[0U].get_value<std::string>().c_str());
|
|
||||||
EXPECT_STREQ("column2", columns[1U].get_name().c_str());
|
|
||||||
EXPECT_STREQ("test1", 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(database_test, insert_or_replace_and_delete) {
|
TEST_F(database_test, insert_or_replace_and_delete) {
|
||||||
{
|
common_insert(*db3.get());
|
||||||
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"}
|
auto query = db::db_insert{*db3.get(), "table"}
|
||||||
@ -292,53 +256,8 @@ TEST_F(database_test, insert_or_replace_and_delete) {
|
|||||||
EXPECT_TRUE(res.ok());
|
EXPECT_TRUE(res.ok());
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
common_select(*db3.get(), "test0", "moose");
|
||||||
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{};
|
common_delete(*db3.get());
|
||||||
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
|
} // namespace repertory
|
||||||
|
Loading…
x
Reference in New Issue
Block a user