1 /* 2 * Copyright (c) 2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include "gtest/gtest.h" 17 #include "advanced_aggregation_data_roaming_observer.h" 18 #include "advanced_datashare_helper.h" 19 #include "datashare_helper.h" 20 #include "advanced_datashare_helper.h" 21 #include "mock_datashare.h" 22 23 using namespace testing::ext; 24 25 extern void MockGetSystemAbilityManager(bool mockRet); 26 27 namespace OHOS { 28 namespace Notification { 29 30 // Test suite 31 class AdvancedDatashareHelperTest : public ::testing::Test { 32 public: SetUpTestCase()33 static void SetUpTestCase() {} TearDownTestCase()34 static void TearDownTestCase() {} SetUp()35 void SetUp() override {} TearDown()36 void TearDown() override {} 37 }; 38 39 // Test cases 40 HWTEST_F(AdvancedDatashareHelperTest, Query_0001, Function | SmallTest | Level1) 41 { 42 MockGetSystemAbilityManager(false); 43 AdvancedDatashareHelper::SetIsDataShareReady(true); 44 AdvancedDatashareHelper advancedDatashareHelper; 45 int32_t userId = 100; 46 Uri enableUri(advancedDatashareHelper.GetFocusModeEnableUri(userId)); 47 std::string enable; 48 bool ret = advancedDatashareHelper.Query(enableUri, KEY_FOCUS_MODE_ENABLE, enable); 49 50 EXPECT_EQ(ret, true); 51 } 52 53 HWTEST_F(AdvancedDatashareHelperTest, Query_0002, Function | SmallTest | Level1) 54 { 55 AdvancedDatashareHelper::SetIsDataShareReady(false); 56 MockGetSystemAbilityManager(false); 57 AdvancedDatashareHelper advancedDatashareHelper; 58 int32_t userId = 100; 59 Uri enableUri(advancedDatashareHelper.GetFocusModeEnableUri(userId)); 60 std::string enable; 61 bool ret = advancedDatashareHelper.Query(enableUri, KEY_FOCUS_MODE_ENABLE, enable); 62 EXPECT_EQ(ret, false); 63 64 AdvancedDatashareHelper::SetIsDataShareReady(true); 65 MockIsFailedToQueryDataShareResultSet(true); 66 ret = advancedDatashareHelper.Query(enableUri, KEY_FOCUS_MODE_ENABLE, enable); 67 EXPECT_EQ(ret, false); 68 69 MockIsFailedGoToFirstRow(1); 70 MockIsFailedToQueryDataShareResultSet(false); 71 ret = advancedDatashareHelper.Query(enableUri, KEY_FOCUS_MODE_ENABLE, enable); 72 EXPECT_EQ(ret, false); 73 } 74 75 // Test cases 76 HWTEST_F(AdvancedDatashareHelperTest, QueryContact_0001, Function | SmallTest | Level1) 77 { 78 MockGetSystemAbilityManager(false); 79 MockSetRowCount(0); 80 MockIsFailedToCreateDataShareHelper(true); 81 MockIsFailedGoToFirstRow(0); 82 83 AdvancedDatashareHelper advancedDatashareHelper; 84 std::string uri = "datashare:///com.ohos.contactsdataability/contacts/contact_data?Proxy=true"; 85 Uri contactUri(uri); 86 std::string phoneNumber = "11111111111"; 87 88 bool ret = advancedDatashareHelper.QueryContact( 89 contactUri, phoneNumber, "6", "1", "true"); 90 EXPECT_EQ(ret, 1); 91 92 MockIsFailedToCreateDataShareHelper(false); 93 AdvancedDatashareHelper::SetIsDataShareReady(true); 94 ret = advancedDatashareHelper.QueryContact( 95 contactUri, phoneNumber, "6", "1", "true"); 96 EXPECT_EQ(ret, 1); 97 } 98 99 HWTEST_F(AdvancedDatashareHelperTest, QueryContact_0002, Function | SmallTest | Level1) 100 { 101 std::string str = "0"; 102 MockGetStringValue(str); 103 MockGetSystemAbilityManager(false); 104 MockIsFailedToQueryDataShareResultSet(false); 105 MockIsFailedToCreateDataShareHelper(false); 106 MockSetRowCount(1); 107 MockGoToGetNextRow(-1); 108 MockIsFailedGoToFirstRow(0); 109 110 AdvancedDatashareHelper advancedDatashareHelper; 111 std::string uri = advancedDatashareHelper.GetFocusModeRepeatCallUri(0); 112 Uri contactUri(uri); 113 std::string phoneNumber = "1111"; 114 AdvancedDatashareHelper::SetIsDataShareReady(true); 115 116 bool ret = advancedDatashareHelper.QueryContact( 117 contactUri, phoneNumber, "5", "1", "true"); 118 EXPECT_EQ(ret, 0); 119 120 str = "1"; 121 MockGetStringValue(str); 122 ret = advancedDatashareHelper.QueryContact( 123 contactUri, phoneNumber, "5", "1", "true"); 124 EXPECT_EQ(ret, 1); 125 126 str = "2"; 127 MockGetStringValue(str); 128 ret = advancedDatashareHelper.QueryContact( 129 contactUri, phoneNumber, "5", "1", "true"); 130 EXPECT_EQ(ret, 0); 131 132 ret = advancedDatashareHelper.QueryContact( 133 contactUri, phoneNumber, "10", "1", "true"); 134 EXPECT_EQ(ret, 1); 135 } 136 137 HWTEST_F(AdvancedDatashareHelperTest, QueryContact_0003, Function | SmallTest | Level1) 138 { 139 MockGetSystemAbilityManager(false); 140 MockIsFailedToCreateDataShareHelper(true); 141 MockIsFailedToQueryDataShareResultSet(true); 142 MockIsFailedGoToFirstRow(0); 143 AdvancedDatashareHelper advancedDatashareHelper; 144 std::string uri = advancedDatashareHelper.GetIntelligentExperienceUri(0); 145 Uri contactUri(uri); 146 std::string phoneNumber = "11111111111"; 147 148 int ret = advancedDatashareHelper.QueryContact( 149 contactUri, phoneNumber, "10", "1", "true"); 150 EXPECT_EQ(ret, -1); 151 152 MockIsFailedToCreateDataShareHelper(false); 153 ret = advancedDatashareHelper.QueryContact( 154 contactUri, phoneNumber, "10", "1", "true"); 155 EXPECT_EQ(ret, -1); 156 } 157 158 // Test cases 159 HWTEST_F(AdvancedDatashareHelperTest, QueryContact_0004, Function | SmallTest | Level1) 160 { 161 MockGetSystemAbilityManager(false); 162 MockSetRowCount(1); 163 MockIsFailedToCreateDataShareHelper(false); 164 MockIsFailedGoToFirstRow(0); 165 MockGoToGetNextRow(-1); 166 167 AdvancedDatashareHelper advancedDatashareHelper; 168 std::string uri = "datashare:///com.ohos.contactsdataability/contacts/contact_data?Proxy=true"; 169 Uri contactUri(uri); 170 std::string phoneNumber = "1111"; 171 172 bool ret = advancedDatashareHelper.QueryContact( 173 contactUri, phoneNumber, "4", "1", "true"); 174 EXPECT_EQ(ret, 1); 175 } 176 177 HWTEST_F(AdvancedDatashareHelperTest, isRepeatCall_0001, Function | SmallTest | Level1) 178 { 179 MockGetSystemAbilityManager(false); 180 MockIsFailedToCreateDataShareHelper(true); 181 MockIsFailedToQueryDataShareResultSet(true); 182 183 AdvancedDatashareHelper advancedDatashareHelper; 184 std::string phoneNumber = "11111111111"; 185 186 bool ret = advancedDatashareHelper.isRepeatCall(phoneNumber); 187 EXPECT_EQ(ret, 0); 188 189 MockIsFailedToCreateDataShareHelper(false); 190 ret = advancedDatashareHelper.isRepeatCall(phoneNumber); 191 EXPECT_EQ(ret, 0); 192 193 MockIsFailedToQueryDataShareResultSet(false); 194 MockSetRowCount(1); 195 MockIsFailedGoToFirstRow(0); 196 ret = advancedDatashareHelper.isRepeatCall(phoneNumber); 197 EXPECT_EQ(ret, 0); 198 } 199 } 200 }