1 /*
2 * Copyright (c) 2021-2022 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 "calllogfuzzyquery_test.h"
17
18 #include "random_number_utils.h"
19 #include "test_common.h"
20
21 namespace Contacts {
22 namespace Test {
CalllogFuzzyQueryTest()23 CalllogFuzzyQueryTest::CalllogFuzzyQueryTest()
24 {
25 }
26
~CalllogFuzzyQueryTest()27 CalllogFuzzyQueryTest::~CalllogFuzzyQueryTest()
28 {
29 }
30
CalllogDelete(OHOS::DataShare::DataSharePredicates predicates)31 int CalllogFuzzyQueryTest::CalllogDelete(OHOS::DataShare::DataSharePredicates predicates)
32 {
33 OHOS::Uri uriCalllog(CallLogUri::CALL_LOG);
34 int code = calllogAbility.Delete(uriCalllog, predicates);
35 return code;
36 }
37
CalllogQuery( std::vector<std::string> columns, OHOS::DataShare::DataSharePredicates predicates)38 std::shared_ptr<OHOS::DataShare::DataShareResultSet> CalllogFuzzyQueryTest::CalllogQuery(
39 std::vector<std::string> columns, OHOS::DataShare::DataSharePredicates predicates)
40 {
41 OHOS::Uri uriCalllog(CallLogUri::CALL_LOG);
42 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet =
43 calllogAbility.Query(uriCalllog, predicates, columns);
44 return resultSet;
45 }
46
CalllogInsertValues(OHOS::DataShare::DataShareValuesBucket &values)47 int64_t CalllogFuzzyQueryTest::CalllogInsertValues(OHOS::DataShare::DataShareValuesBucket &values)
48 {
49 OHOS::Uri uriCalllog(CallLogUri::CALL_LOG);
50 int64_t code = calllogAbility.Insert(uriCalllog, values);
51 return code;
52 }
53
ClearCallLog()54 void CalllogFuzzyQueryTest::ClearCallLog()
55 {
56 // clear all callLog data
57 OHOS::DataShare::DataSharePredicates predicates;
58 predicates.GreaterThan("id", "0");
59 int deleteCode = CalllogDelete(predicates);
60 EXPECT_EQ(deleteCode, 0);
61 }
62
63 /**
64 * @tc.number calllog_Query_test_100
65 * @tc.name Fuzzy query according to the beginning of mobile phone number
66 * @tc.desc Query call records of mobile phone numbers that start with 123
67 * @tc.level Level1
68 * @tc.size MediumTest
69 * @tc.type Function
70 */
HWTEST_F(CalllogFuzzyQueryTest, calllog_Query_test_100, testing::ext::TestSize.Level1)71 HWTEST_F(CalllogFuzzyQueryTest, calllog_Query_test_100, testing::ext::TestSize.Level1)
72 {
73 HILOG_INFO("----calllog_Query_test_100 is starting!----");
74 OHOS::DataShare::DataShareValuesBucket valuesBucket;
75 OHOS::Contacts::RandomNumberUtils randomNumberUtils;
76 std::string phoneNumber = randomNumberUtils.Generating(9);
77 valuesBucket.Put("phone_number", phoneNumber);
78 int rawId = CalllogInsertValues(valuesBucket);
79 EXPECT_GT(rawId, 0);
80
81 valuesBucket.Put("id", rawId);
82 OHOS::DataShare::DataShareValuesBucket valuesBucketTwo;
83 std::string phoneNumber_test = randomNumberUtils.Generating(10);
84 valuesBucketTwo.Put("phone_number", phoneNumber_test);
85 rawId = CalllogInsertValues(valuesBucketTwo);
86 valuesBucketTwo.Put("id", rawId);
87 EXPECT_GT(rawId, 0);
88
89 std::vector<std::string> columns;
90 columns.push_back("id");
91 columns.push_back("phone_number");
92 OHOS::DataShare::DataSharePredicates predicates;
93 predicates.Like("phone_number", "123%");
94 predicates.OrderByAsc("id");
95 std::vector<OHOS::DataShare::DataShareValuesBucket> valuesBucketVector;
96 valuesBucketVector.push_back(valuesBucket);
97 valuesBucketVector.push_back(valuesBucketTwo);
98 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates);
99 // resultSet count 1
100 int rowCount = 0;
101 resultSet->GetRowCount(rowCount);
102 int currentCount = 1;
103 EXPECT_EQ(currentCount, rowCount);
104 CheckResultSetList(valuesBucketVector, resultSet, "calllog_Query_test_100");
105 resultSet->Close();
106 ClearCallLog();
107 }
108
109 /**
110 * @tc.number calllog_Query_test_200
111 * @tc.name Fuzzy query according to the end of mobile phone number
112 * @tc.desc Query call records with mobile phone number ending in 0
113 * @tc.level Level1
114 * @tc.size MediumTest
115 * @tc.type Function
116 */
HWTEST_F(CalllogFuzzyQueryTest, calllog_Query_test_200, testing::ext::TestSize.Level1)117 HWTEST_F(CalllogFuzzyQueryTest, calllog_Query_test_200, testing::ext::TestSize.Level1)
118 {
119 HILOG_INFO("----calllog_Query_test_200 is starting!----");
120 OHOS::DataShare::DataShareValuesBucket valuesBucket;
121 OHOS::Contacts::RandomNumberUtils randomNumberUtils;
122 std::string phoneNumber = randomNumberUtils.Generating(11);
123 valuesBucket.Put("phone_number", phoneNumber);
124 int rawId = CalllogInsertValues(valuesBucket);
125 EXPECT_GT(rawId, 0);
126 valuesBucket.Put("id", rawId);
127 OHOS::DataShare::DataShareValuesBucket valuesBucketTwo;
128 valuesBucketTwo.Put("phone_number", phoneNumber);
129 rawId = CalllogInsertValues(valuesBucketTwo);
130 valuesBucketTwo.Put("id", rawId);
131 EXPECT_GT(rawId, 0);
132 std::vector<std::string> columns;
133 columns.push_back("id");
134 columns.push_back("phone_number");
135 OHOS::DataShare::DataSharePredicates predicates;
136 predicates.Like("phone_number", "%750");
137 predicates.OrderByAsc("id");
138 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates);
139 // resultSet count 1
140 int rowCount = 0;
141 resultSet->GetRowCount(rowCount);
142 int currentCount = 1;
143 EXPECT_EQ(currentCount, rowCount);
144 CheckResultSet(valuesBucket, resultSet, "calllog_Query_test_200");
145 resultSet->Close();
146 ClearCallLog();
147 }
148
149 /**
150 * @tc.number calllog_Query_test_300
151 * @tc.name Fuzzy query according to the middle digits of the mobile phone number
152 * @tc.desc Query the call history of the mobile phone number starting with 123 and ending with 8910
153 * @tc.level Level1
154 * @tc.size MediumTest
155 * @tc.type Function
156 */
HWTEST_F(CalllogFuzzyQueryTest, calllog_Query_test_300, testing::ext::TestSize.Level1)157 HWTEST_F(CalllogFuzzyQueryTest, calllog_Query_test_300, testing::ext::TestSize.Level1)
158 {
159 HILOG_INFO("----calllog_Query_test_300 is starting!----");
160 OHOS::DataShare::DataShareValuesBucket valuesBucket;
161 OHOS::Contacts::RandomNumberUtils randomNumberUtils;
162 std::string phoneNumber = randomNumberUtils.Generating(11);
163 valuesBucket.Put("phone_number", phoneNumber);
164 int rawId = CalllogInsertValues(valuesBucket);
165 EXPECT_GT(rawId, 0);
166 valuesBucket.Put("id", rawId);
167 OHOS::DataShare::DataShareValuesBucket valuesBucketTwo;
168 valuesBucketTwo.Put("phone_number", phoneNumber);
169 rawId = CalllogInsertValues(valuesBucketTwo);
170 valuesBucketTwo.Put("id", rawId);
171 EXPECT_GT(rawId, 0);
172 std::vector<std::string> columns;
173 columns.push_back("id");
174 columns.push_back("phone_number");
175 OHOS::DataShare::DataSharePredicates predicates;
176 std::string phoneNumber_test = randomNumberUtils.Generating(17);
177 predicates.Like("phone_number", phoneNumber_test);
178 predicates.OrderByAsc("id");
179 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates);
180 // resultSet count 0
181 int rowCount = 0;
182 resultSet->GetRowCount(rowCount);
183 EXPECT_EQ(0, rowCount);
184 resultSet->Close();
185 ClearCallLog();
186 }
187
188 /**
189 * @tc.number calllog_Query_test_400
190 * @tc.name Fuzzy query according to the fields contained in the mobile phone number
191 * @tc.desc Query the call history of the mobile phone number starting with 123
192 * @tc.level Level1
193 * @tc.size MediumTest
194 * @tc.type Function
195 */
HWTEST_F(CalllogFuzzyQueryTest, calllog_Query_test_400, testing::ext::TestSize.Level1)196 HWTEST_F(CalllogFuzzyQueryTest, calllog_Query_test_400, testing::ext::TestSize.Level1)
197 {
198 HILOG_INFO("----calllog_Query_test_400 is starting!----");
199 OHOS::DataShare::DataShareValuesBucket valuesBucket;
200 OHOS::Contacts::RandomNumberUtils randomNumberUtils;
201 std::string phoneNumber = randomNumberUtils.Generating(11);
202 valuesBucket.Put("phone_number", phoneNumber);
203 int rawId = CalllogInsertValues(valuesBucket);
204 EXPECT_GT(rawId, 0);
205 valuesBucket.Put("id", rawId);
206 OHOS::DataShare::DataShareValuesBucket valuesBucketTwo;
207 valuesBucketTwo.Put("phone_number", phoneNumber);
208 rawId = CalllogInsertValues(valuesBucketTwo);
209 valuesBucketTwo.Put("id", rawId);
210 EXPECT_GT(rawId, 0);
211 std::vector<std::string> columns;
212 columns.push_back("id");
213 columns.push_back("phone_number");
214 OHOS::DataShare::DataSharePredicates predicates;
215 predicates.Like("phone_number", "%37845%");
216 predicates.OrderByAsc("id");
217 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates);
218 // resultSet count 0
219 int rowCount = 0;
220 resultSet->GetRowCount(rowCount);
221 EXPECT_EQ(1, rowCount);
222 CheckResultSet(valuesBucketTwo, resultSet, "calllog_Query_test_400");
223 resultSet->Close();
224 ClearCallLog();
225 }
226
227 /**
228 * @tc.number abnormal_calllog_Query_test_500
229 * @tc.name An error field is passed in during fuzzy query based on mobile phone number
230 * @tc.desc Query the call history of the mobile phone number starting with 123 and ending with 8910
231 * @tc.level Level1
232 * @tc.size MediumTest
233 * @tc.type Function
234 */
HWTEST_F(CalllogFuzzyQueryTest, abnormal_calllog_Query_test_500, testing::ext::TestSize.Level1)235 HWTEST_F(CalllogFuzzyQueryTest, abnormal_calllog_Query_test_500, testing::ext::TestSize.Level1)
236 {
237 HILOG_INFO("----abnormal_calllog_Query_test_500 is starting!----");
238 OHOS::DataShare::DataShareValuesBucket valuesBucket;
239 OHOS::Contacts::RandomNumberUtils randomNumberUtils;
240 std::string phoneNumber = randomNumberUtils.Generating(11);
241 valuesBucket.Put("phone_number", phoneNumber);
242 int rawId = CalllogInsertValues(valuesBucket);
243 EXPECT_GT(rawId, 0);
244
245 valuesBucket.Put("id", rawId);
246 OHOS::DataShare::DataShareValuesBucket valuesBucketTwo;
247 valuesBucketTwo.Put("phone_number", phoneNumber);
248 rawId = CalllogInsertValues(valuesBucketTwo);
249 valuesBucketTwo.Put("id", rawId);
250 EXPECT_GT(rawId, 0);
251
252 std::vector<std::string> columns;
253 columns.push_back("id");
254 columns.push_back("phone_number");
255 std::string phoneNumber_test = randomNumberUtils.Generating(17);
256 OHOS::DataShare::DataSharePredicates predicates;
257 predicates.Like("phone_numbers", phoneNumber_test);
258 predicates.OrderByAsc("id");
259 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = CalllogQuery(columns, predicates);
260 int rowCount = 0;
261 resultSet->GetRowCount(rowCount);
262 EXPECT_EQ(-1, rowCount);
263 resultSet->Close();
264 ClearCallLog();
265 }
266 } // namespace Test
267 } // namespace Contacts