Implement PkgGetDBHandler unit test
authorIlho Kim <ilho159.kim@samsung.com>
Fri, 16 Apr 2021 11:52:25 +0000 (20:52 +0900)
committer김일호/Tizen Platform Lab(SR)/Engineer/삼성전자 <ilho159.kim@samsung.com>
Fri, 7 May 2021 00:59:15 +0000 (09:59 +0900)
Change-Id: I78a84d0f4dfa33c6943c667c726540932773b962
Signed-off-by: Ilho Kim <ilho159.kim@samsung.com>
test/unit_tests/parcel_utils.cc
test/unit_tests/test_db_handlers.cc

index 445d8e2..44f142a 100644 (file)
@@ -91,7 +91,7 @@ application_x *GetTestApplication(std::string appid) {
   application->root_path = strdup("test_root_path");
   application->api_version = strdup("test_api_version");
   application->for_all_users = strdup("test_for_all_users");
-  application->is_disabled = strdup("test_is_disabled");
+  application->is_disabled = strdup("false");
   application->splash_screen_display = strdup("test_splash_screen_display");
   application->external_path = strdup("test_external_path");
   application->package_system = strdup("test_package_system");
@@ -369,7 +369,7 @@ package_x *GetTestPackage(std::string pkgid) {
   package = reinterpret_cast<package_x*>(calloc(1, sizeof(package_x)));
 
   package->for_all_users = strdup("test_for_all_users");
-  package->package = strdup("test_package");
+  package->package = strdup(pkgid.c_str());
   package->version = strdup("test_version");
   package->installlocation = strdup("test_installlocation");
   package->ns = strdup("test_ns");
index 6c34354..04324de 100644 (file)
 #include "create_db_handler.hh"
 #include "db_type.hh"
 #include "parcel_utils.hh"
+#include "pkg_get_db_handler.hh"
 #include "pkg_set_db_handler.hh"
 
+#include "pkgmgr-info.h"
 #include "pkgmgrinfo_basic.h"
 
 #define TEST_PARSER_DB "test.pkgmgr_parser.db"
@@ -47,6 +49,14 @@ class PkgSetDBHandlerMock : public pkgmgr_server::database::PkgSetDBHandler {
   MOCK_METHOD0(GetConnection, std::vector<std::pair<sqlite3*, uid_t>>());
 };
 
+class PkgGetDBHandlerMock : public pkgmgr_server::database::PkgGetDBHandler {
+ public:
+  PkgGetDBHandlerMock(uid_t uid, int pid) : pkgmgr_server::database::PkgGetDBHandler(uid, pid) {}
+
+  MOCK_METHOD0(Connect, bool());
+  MOCK_METHOD0(GetConnection, std::vector<std::pair<sqlite3*, uid_t>>());
+};
+
 class DBHandlerTest : public ::testing::Test {
  public:
   virtual void SetUp() {
@@ -98,3 +108,37 @@ TEST_F(DBHandlerTest, PkgSetDBHandlerTest) {
       .WillOnce(testing::Return(GetDBHandles()));
   ASSERT_EQ(pkg_set_db_handler.Execute(), 0);
 }
+
+TEST_F(DBHandlerTest, PkgGetDBHandlerTest) {
+  std::string pkgid = "pkgA";
+  PkgSetDBHandlerMock pkg_set_db_handler(0, 0);
+  pkg_set_db_handler.SetWriteType(pkgmgr_common::PkgWriteType::Insert);
+  std::unique_ptr<package_x, decltype(pkgmgrinfo_basic_free_package)*> ptr(
+      GetTestPackage(pkgid), pkgmgrinfo_basic_free_package);
+  pkg_set_db_handler.SetPkgInfo(ptr.get());
+
+  EXPECT_CALL(pkg_set_db_handler, Connect()).WillOnce(testing::Return(true));
+  EXPECT_CALL(pkg_set_db_handler, GetConnection())
+      .WillOnce(testing::Return(GetDBHandles()));
+  ASSERT_EQ(pkg_set_db_handler.Execute(), 0);
+
+  pkgmgrinfo_pkginfo_filter_h filter;
+
+  ASSERT_EQ(pkgmgrinfo_pkginfo_filter_create(&filter), PMINFO_R_OK);
+  std::unique_ptr<pkgmgrinfo_filter_x, decltype(
+      pkgmgrinfo_pkginfo_filter_destroy)*> filter_ptr(
+          reinterpret_cast<pkgmgrinfo_filter_x *>(filter),
+              pkgmgrinfo_pkginfo_filter_destroy);
+  ASSERT_EQ(pkgmgrinfo_pkginfo_filter_add_string(filter,
+      PMINFO_PKGINFO_PROP_PACKAGE_ID, pkgid.c_str()), PMINFO_R_OK);
+  ASSERT_EQ(pkgmgrinfo_pkginfo_filter_add_bool(filter,
+      PMINFO_PKGINFO_PROP_PACKAGE_DISABLE, false), PMINFO_R_OK);
+
+  PkgGetDBHandlerMock pkg_get_db_handler(0, 0);
+  pkg_get_db_handler.SetFilter(filter_ptr.get());
+
+  EXPECT_CALL(pkg_get_db_handler, Connect()).WillOnce(testing::Return(true));
+  EXPECT_CALL(pkg_get_db_handler, GetConnection())
+      .WillOnce(testing::Return(GetDBHandles()));
+  ASSERT_EQ(pkg_get_db_handler.Execute(), 0);
+}