Implement QueryDBHandler_GetDataControlTest unittest
authorIlho Kim <ilho159.kim@samsung.com>
Wed, 9 Jun 2021 06:58:23 +0000 (15:58 +0900)
committer김일호/Tizen Platform Lab(SR)/Engineer/삼성전자 <ilho159.kim@samsung.com>
Tue, 22 Jun 2021 07:04:15 +0000 (16:04 +0900)
Signed-off-by: Ilho Kim <ilho159.kim@samsung.com>
test/unit_tests/test_parser_db_handlers.cc

index 686d2e3..256b02f 100644 (file)
@@ -365,3 +365,52 @@ TEST_F(ParserDBHandlerTest, QueryDBHandler_GetLocaledLabelTest) {
   auto result = query_handler.GetResult();
   ASSERT_EQ(result, expected_label);
 }
+
+TEST_F(ParserDBHandlerTest, QueryDBHandler_GetDataControlTest) {
+  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("test_package"), 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);
+
+  std::vector<std::pair<int, std::vector<std::string>>> query_args;
+  std::vector<std::vector<std::string>> expected_label;
+  for (GList* app_list = ptr.get()->application; app_list;
+      app_list = app_list->next) {
+    application_x* app = reinterpret_cast<application_x*>(app_list->data);
+    ASSERT_NE(app, nullptr);
+    ASSERT_NE(app->appid, nullptr);
+    ASSERT_NE(app->datacontrol, nullptr);
+
+    for (GList* dc_list = app->datacontrol; dc_list; dc_list = dc_list->next) {
+      datacontrol_x* dc = reinterpret_cast<datacontrol_x*>(dc_list->data);
+      ASSERT_NE(dc, nullptr);
+      ASSERT_NE(dc->providerid, nullptr);
+      ASSERT_NE(dc->type, nullptr);
+      ASSERT_NE(dc->access, nullptr);
+      query_args.emplace_back(std::make_pair(
+          QUERY_INDEX_APPINFO_GET_DATACONTROL_INFO,
+          std::vector<std::string>{dc->providerid, dc->type}));
+      expected_label.emplace_back(
+          std::vector<std::string>{app->appid, dc->access});
+    }
+  }
+
+  QueryHandlerMock query_handler(0, 0);
+  query_handler.SetQueryArgs(std::move(query_args));
+  query_handler.SetDBType(pc::DBType::DB_TYPE_FILE_PKGDB);
+  query_handler.SetOpType(pc::DBOperationType::OPERATION_TYPE_READ);
+
+  EXPECT_CALL(query_handler,
+      Connect()).WillOnce(testing::Return(true));
+  EXPECT_CALL(query_handler, GetConnection())
+      .WillOnce(testing::Return(GetDBHandles()));
+  ASSERT_EQ(query_handler.Execute(), 0);
+  auto result = query_handler.GetResult();
+  ASSERT_EQ(result, expected_label);
+}