From 65efa8590f376d3afb1b844ed90b78252877cee5 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Thu, 5 Dec 2024 10:46:30 -0600 Subject: [PATCH] meta db unit tests and fixes --- repertory/repertory_test/src/meta_db_test.cpp | 147 ++++++++++++++++-- 1 file changed, 136 insertions(+), 11 deletions(-) diff --git a/repertory/repertory_test/src/meta_db_test.cpp b/repertory/repertory_test/src/meta_db_test.cpp index c9549f0d..11c648ef 100644 --- a/repertory/repertory_test/src/meta_db_test.cpp +++ b/repertory/repertory_test/src/meta_db_test.cpp @@ -83,17 +83,6 @@ TYPED_TEST(meta_db_test, EXPECT_TRUE(api_path.empty()); } -TYPED_TEST(meta_db_test, set_item_meta_fails_with_missing_directory_meta) { - auto test_file = create_test_file(); - auto test_source = create_test_file(); - EXPECT_EQ(api_error::error, this->meta_db->set_item_meta( - test_file, { - {META_SOURCE, test_source}, - })); - EXPECT_EQ(api_error::error, - this->meta_db->set_item_meta(test_file, META_SOURCE, test_source)); -} - TYPED_TEST(meta_db_test, can_get_api_file_list) { std::vector directories{}; for (auto idx = 0U; idx < 5U; ++idx) { @@ -490,4 +479,140 @@ TYPED_TEST(meta_db_test, total_size_decreases_after_file_is_removed) { EXPECT_EQ(2U, this->meta_db->get_total_size()); } + +TYPED_TEST(meta_db_test, can_remove_api_path) { + auto test_file = create_test_file(); + auto test_source = create_test_file(); + EXPECT_EQ( + api_error::success, + this->meta_db->set_item_meta( + test_file, { + {META_DIRECTORY, utils::string::from_bool(false)}, + {META_SOURCE, test_source}, + {META_SIZE, "2"}, + })); + this->meta_db->remove_api_path(test_file); + + api_meta_map meta; + EXPECT_EQ(api_error::item_not_found, + this->meta_db->get_item_meta(test_file, meta)); +} + +TYPED_TEST(meta_db_test, can_rename_item_meta) { + auto test_file = create_test_file(); + auto test_source = create_test_file(); + EXPECT_EQ( + api_error::success, + this->meta_db->set_item_meta( + test_file, { + {META_DIRECTORY, utils::string::from_bool(false)}, + {META_SOURCE, test_source}, + {META_SIZE, "2"}, + })); + auto test_file2 = create_test_file(); + EXPECT_EQ(api_error::success, + this->meta_db->rename_item_meta(test_file, test_file2)); + + api_meta_map meta; + EXPECT_EQ(api_error::item_not_found, + this->meta_db->get_item_meta(test_file, meta)); + + EXPECT_EQ(api_error::success, this->meta_db->get_item_meta(test_file2, meta)); +} + +TYPED_TEST(meta_db_test, rename_item_meta_fails_if_not_found) { + auto test_file = create_test_file(); + auto test_file2 = create_test_file(); + + EXPECT_EQ(api_error::item_not_found, + this->meta_db->rename_item_meta(test_file, test_file2)); +} + +TYPED_TEST(meta_db_test, set_item_meta_fails_with_missing_directory_meta) { + auto test_file = create_test_file(); + auto test_source = create_test_file(); + EXPECT_EQ(api_error::error, this->meta_db->set_item_meta( + test_file, { + {META_SOURCE, test_source}, + })); + EXPECT_EQ(api_error::error, + this->meta_db->set_item_meta(test_file, META_SOURCE, test_source)); +} + +TYPED_TEST(meta_db_test, check_size_is_ignored_for_directory) { + auto test_dir = create_test_file(); + EXPECT_EQ(api_error::error, + this->meta_db->set_item_meta( + test_dir, { + {META_DIRECTORY, utils::string::from_bool(true)}, + {META_SIZE, "2"}, + })); + + api_meta_map meta; + EXPECT_EQ(api_error::success, this->meta_db->get_item_meta(test_dir, meta)); + EXPECT_EQ(0U, utils::string::to_uint64(meta[META_SIZE])); +} + +TYPED_TEST(meta_db_test, check_pinned_is_ignored_for_directory) { + auto test_dir = create_test_file(); + EXPECT_EQ(api_error::error, + this->meta_db->set_item_meta( + test_dir, { + {META_DIRECTORY, utils::string::from_bool(true)}, + {META_PINNED, utils::string::from_bool(true)}, + })); + + api_meta_map meta; + EXPECT_EQ(api_error::success, this->meta_db->get_item_meta(test_dir, meta)); + EXPECT_FALSE(utils::string::to_bool(meta[META_PINNED])); +} + +TYPED_TEST(meta_db_test, check_source_is_ignored_for_directory) { + auto test_dir = create_test_file(); + auto test_source = create_test_file(); + EXPECT_EQ(api_error::error, + this->meta_db->set_item_meta( + test_dir, { + {META_DIRECTORY, utils::string::from_bool(true)}, + {META_SOURCE, test_source}, + })); + + api_meta_map meta; + EXPECT_EQ(api_error::success, this->meta_db->get_item_meta(test_dir, meta)); + EXPECT_TRUE(meta[META_SOURCE].empty()); +} + +TYPED_TEST(meta_db_test, check_set_item_meta_directory_defaults) { + auto test_dir = create_test_file(); + EXPECT_EQ(api_error::error, + this->meta_db->set_item_meta( + test_dir, { + {META_DIRECTORY, utils::string::from_bool(true)}, + })); + + api_meta_map meta; + EXPECT_EQ(api_error::success, this->meta_db->get_item_meta(test_dir, meta)); + + EXPECT_TRUE(utils::string::to_bool(meta[META_DIRECTORY])); + EXPECT_FALSE(utils::string::to_bool(meta[META_PINNED])); + EXPECT_EQ(0U, utils::string::to_uint64(meta[META_SIZE])); + EXPECT_TRUE(meta[META_SOURCE].empty()); +} + +TYPED_TEST(meta_db_test, check_set_item_meta_file_defaults) { + auto test_file = create_test_file(); + EXPECT_EQ( + api_error::error, + this->meta_db->set_item_meta( + test_file, { + {META_DIRECTORY, utils::string::from_bool(false)}, + })); + api_meta_map meta; + EXPECT_EQ(api_error::success, this->meta_db->get_item_meta(test_file, meta)); + + EXPECT_FALSE(utils::string::to_bool(meta[META_DIRECTORY])); + EXPECT_FALSE(utils::string::to_bool(meta[META_PINNED])); + EXPECT_EQ(0U, utils::string::to_uint64(meta[META_SIZE])); + EXPECT_TRUE(meta[META_SOURCE].empty()); +} } // namespace repertory