1115cd2caSopenharmony_ci/*
2115cd2caSopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3115cd2caSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4115cd2caSopenharmony_ci * you may not use this file except in compliance with the License.
5115cd2caSopenharmony_ci * You may obtain a copy of the License at
6115cd2caSopenharmony_ci *
7115cd2caSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8115cd2caSopenharmony_ci *
9115cd2caSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10115cd2caSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11115cd2caSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12115cd2caSopenharmony_ci * See the License for the specific language governing permissions and
13115cd2caSopenharmony_ci * limitations under the License.
14115cd2caSopenharmony_ci */
15115cd2caSopenharmony_ci
16115cd2caSopenharmony_ci#include "contactquery_test.h"
17115cd2caSopenharmony_ci
18115cd2caSopenharmony_ci#include "construction_name.h"
19115cd2caSopenharmony_ci#include "test_common.h"
20115cd2caSopenharmony_ci
21115cd2caSopenharmony_cinamespace Contacts {
22115cd2caSopenharmony_cinamespace Test {
23115cd2caSopenharmony_ciContactQueryTest::ContactQueryTest()
24115cd2caSopenharmony_ci{
25115cd2caSopenharmony_ci}
26115cd2caSopenharmony_ci
27115cd2caSopenharmony_ciContactQueryTest::~ContactQueryTest()
28115cd2caSopenharmony_ci{
29115cd2caSopenharmony_ci}
30115cd2caSopenharmony_ci
31115cd2caSopenharmony_ciint64_t ContactQueryTest::RawContactInsert(std::string displayName,
32115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket &rawContactValues)
33115cd2caSopenharmony_ci{
34115cd2caSopenharmony_ci    OHOS::Uri uriRawContact(ContactsUri::RAW_CONTACT);
35115cd2caSopenharmony_ci    rawContactValues.Put("display_name", displayName);
36115cd2caSopenharmony_ci    int64_t code = contactsDataAbility.Insert(uriRawContact, rawContactValues);
37115cd2caSopenharmony_ci    return code;
38115cd2caSopenharmony_ci}
39115cd2caSopenharmony_ci
40115cd2caSopenharmony_ciint64_t ContactQueryTest::ContactDataInsert(int64_t rawContactId, std::string contentType, std::string detailInfo,
41115cd2caSopenharmony_ci    std::string position, OHOS::DataShare::DataShareValuesBucket &contactDataValues)
42115cd2caSopenharmony_ci{
43115cd2caSopenharmony_ci    OHOS::Uri uriContactData(ContactsUri::CONTACT_DATA);
44115cd2caSopenharmony_ci    contactDataValues.Put("raw_contact_id", rawContactId);
45115cd2caSopenharmony_ci    contactDataValues.Put("content_type", contentType);
46115cd2caSopenharmony_ci    contactDataValues.Put("detail_info", detailInfo);
47115cd2caSopenharmony_ci    contactDataValues.Put("position", position);
48115cd2caSopenharmony_ci    int64_t code = contactsDataAbility.Insert(uriContactData, contactDataValues);
49115cd2caSopenharmony_ci    return code;
50115cd2caSopenharmony_ci}
51115cd2caSopenharmony_ci
52115cd2caSopenharmony_cistd::shared_ptr<OHOS::DataShare::DataShareResultSet> ContactQueryTest::ContactQuery(
53115cd2caSopenharmony_ci    const std::string &tableName, std::vector<std::string> columns, OHOS::DataShare::DataSharePredicates predicates)
54115cd2caSopenharmony_ci{
55115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet;
56115cd2caSopenharmony_ci    if (tableName == ContactTabName::RAW_CONTACT) {
57115cd2caSopenharmony_ci        OHOS::Uri uriRawContact(ContactsUri::RAW_CONTACT);
58115cd2caSopenharmony_ci        resultSet = contactsDataAbility.Query(uriRawContact, predicates, columns);
59115cd2caSopenharmony_ci    } else if (tableName == ContactTabName::CONTACT_DATA) {
60115cd2caSopenharmony_ci        OHOS::Uri uriContactData(ContactsUri::CONTACT_DATA);
61115cd2caSopenharmony_ci        resultSet = contactsDataAbility.Query(uriContactData, predicates, columns);
62115cd2caSopenharmony_ci    } else if (tableName == ContactTabName::CONTACT) {
63115cd2caSopenharmony_ci        OHOS::Uri uriContact(ContactsUri::CONTACT);
64115cd2caSopenharmony_ci        resultSet = contactsDataAbility.Query(uriContact, predicates, columns);
65115cd2caSopenharmony_ci    } else if (tableName == ContactTabName::GROUPS) {
66115cd2caSopenharmony_ci        OHOS::Uri uriGroups(ContactsUri::GROUPS);
67115cd2caSopenharmony_ci        resultSet = contactsDataAbility.Query(uriGroups, predicates, columns);
68115cd2caSopenharmony_ci    } else if (tableName == ContactTabName::CONTACT_BLOCKLIST) {
69115cd2caSopenharmony_ci        OHOS::Uri uriBlocklist(ContactsUri::BLOCKLIST);
70115cd2caSopenharmony_ci        resultSet = contactsDataAbility.Query(uriBlocklist, predicates, columns);
71115cd2caSopenharmony_ci    } else if (tableName == ContactTabName::DELETED_RAW_CONTACT) {
72115cd2caSopenharmony_ci        OHOS::Uri uriDeletedRawContact(ContactsUri::RAW_CONTACT);
73115cd2caSopenharmony_ci        resultSet = contactsDataAbility.Query(uriDeletedRawContact, predicates, columns);
74115cd2caSopenharmony_ci    } else if (tableName == ContactTabName::SEARCH_CONTACT) {
75115cd2caSopenharmony_ci        OHOS::Uri uriSearchContact(ContactsUri::SEARCH);
76115cd2caSopenharmony_ci        resultSet = contactsDataAbility.Query(uriSearchContact, predicates, columns);
77115cd2caSopenharmony_ci    } else {
78115cd2caSopenharmony_ci        HILOG_ERROR("ContactsDataAbility ====>no match uri action");
79115cd2caSopenharmony_ci    }
80115cd2caSopenharmony_ci    return resultSet;
81115cd2caSopenharmony_ci}
82115cd2caSopenharmony_ci
83115cd2caSopenharmony_civoid ContactQueryTest::ClearData()
84115cd2caSopenharmony_ci{
85115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
86115cd2caSopenharmony_ci    OHOS::Uri uriRawContact(ContactsUri::RAW_CONTACT);
87115cd2caSopenharmony_ci    predicates.NotEqualTo("id", "0");
88115cd2caSopenharmony_ci    predicates.And();
89115cd2caSopenharmony_ci    predicates.EqualTo("is_deleted", "0");
90115cd2caSopenharmony_ci    contactsDataAbility.Delete(uriRawContact, predicates);
91115cd2caSopenharmony_ci    int time = 2000;
92115cd2caSopenharmony_ci    std::chrono::milliseconds dura(time);
93115cd2caSopenharmony_ci    std::this_thread::sleep_for(dura);
94115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates2;
95115cd2caSopenharmony_ci    OHOS::Uri uriRawContactComplete(ContactsUri::DELETED_RAW_CONTACT);
96115cd2caSopenharmony_ci    predicates2.NotEqualTo("id", "0");
97115cd2caSopenharmony_ci    contactsDataAbility.Delete(uriRawContactComplete, predicates2);
98115cd2caSopenharmony_ci}
99115cd2caSopenharmony_ci
100115cd2caSopenharmony_ci/*
101115cd2caSopenharmony_ci* @tc.number  contact_data_Insert_test_100
102115cd2caSopenharmony_ci* @tc.name    Insert contact details, including
103115cd2caSopenharmony_ci                (name, company, position, mobile phone number, nickname, email, home, remarks, aim)
104115cd2caSopenharmony_ci* @tc.desc    Based on name, name pinyin, pinyin name, company, position, mobile phone number, nickname,
105115cd2caSopenharmony_ci              email address, residence, remarks, AIM fuzzy search capabilities
106115cd2caSopenharmony_ci* @tc.level   Level1
107115cd2caSopenharmony_ci* @tc.size    MediumTest
108115cd2caSopenharmony_ci* @tc.type    Function
109115cd2caSopenharmony_ci*/
110115cd2caSopenharmony_ciHWTEST_F(ContactQueryTest, contact_data_Insert_test_100, testing::ext::TestSize.Level1)
111115cd2caSopenharmony_ci{
112115cd2caSopenharmony_ci    HILOG_INFO("-----contact_data_Insert_test_100-----");
113115cd2caSopenharmony_ci    OHOS::Contacts::ConstructionName::local = "zh-CN";
114115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket values;
115115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesOne;
116115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesTwo;
117115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesThree;
118115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesFour;
119115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesFive;
120115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesSix;
121115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesSeven;
122115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesEight;
123115cd2caSopenharmony_ci    std::string searchContact = ContactTabName::SEARCH_CONTACT;
124115cd2caSopenharmony_ci    int64_t rawContactId = RawContactInsert("买键盘", values);
125115cd2caSopenharmony_ci    EXPECT_GT(rawContactId, 0);
126115cd2caSopenharmony_ci
127115cd2caSopenharmony_ci    int64_t contactDataIdOne = ContactDataInsert(rawContactId, "name", "买键盘", "", valuesOne);
128115cd2caSopenharmony_ci    EXPECT_GT(contactDataIdOne, 0);
129115cd2caSopenharmony_ci
130115cd2caSopenharmony_ci    int64_t contactDataIdTwo =
131115cd2caSopenharmony_ci        ContactDataInsert(rawContactId, "organization", "你好天天向上hsk", "安全测试", valuesTwo);
132115cd2caSopenharmony_ci    EXPECT_GT(contactDataIdTwo, 0);
133115cd2caSopenharmony_ci
134115cd2caSopenharmony_ci    int64_t contactDataIdThree = ContactDataInsert(rawContactId, "phone", "18552504058", "", valuesThree);
135115cd2caSopenharmony_ci    EXPECT_GT(contactDataIdThree, 0);
136115cd2caSopenharmony_ci
137115cd2caSopenharmony_ci    int64_t contactDataIdFour = ContactDataInsert(rawContactId, "nickname", "买键盘", "", valuesFour);
138115cd2caSopenharmony_ci    EXPECT_GT(contactDataIdFour, 0);
139115cd2caSopenharmony_ci
140115cd2caSopenharmony_ci    int64_t contactDataIdFive = ContactDataInsert(rawContactId, "email", "1667894561@163.com", "", valuesFive);
141115cd2caSopenharmony_ci    EXPECT_GT(contactDataIdFive, 0);
142115cd2caSopenharmony_ci
143115cd2caSopenharmony_ci    int64_t contactDataIdSix = ContactDataInsert(rawContactId, "postal_address", "南京市", "", valuesSix);
144115cd2caSopenharmony_ci    EXPECT_GT(contactDataIdSix, 0);
145115cd2caSopenharmony_ci
146115cd2caSopenharmony_ci    int64_t contactDataIdSeven = ContactDataInsert(rawContactId, "note", "LanguagemjavaC++", "", valuesSeven);
147115cd2caSopenharmony_ci    EXPECT_GT(contactDataIdSeven, 0);
148115cd2caSopenharmony_ci
149115cd2caSopenharmony_ci    int64_t contactDataIdEight = ContactDataInsert(rawContactId, "im", "14487956@1.com", "", valuesEight);
150115cd2caSopenharmony_ci    EXPECT_GT(contactDataIdEight, 0);
151115cd2caSopenharmony_ci    ClearData();
152115cd2caSopenharmony_ci}
153115cd2caSopenharmony_ci
154115cd2caSopenharmony_ci/*
155115cd2caSopenharmony_ci * @tc.number  query_by_name_test_200
156115cd2caSopenharmony_ci * @tc.name    Fuzzy search by name
157115cd2caSopenharmony_ci * @tc.desc    Based on name, name pinyin, pinyin name, company, position, mobile phone number, nickname,
158115cd2caSopenharmony_ci               email address, residence, remarks, AIM fuzzy search capabilities
159115cd2caSopenharmony_ci * @tc.level   Level1
160115cd2caSopenharmony_ci * @tc.size    MediumTest
161115cd2caSopenharmony_ci * @tc.type    Function
162115cd2caSopenharmony_ci */
163115cd2caSopenharmony_ciHWTEST_F(ContactQueryTest, query_by_name_test_200, testing::ext::TestSize.Level1)
164115cd2caSopenharmony_ci{
165115cd2caSopenharmony_ci    HILOG_INFO("-----query_by_name_test_200 is starting!-----");
166115cd2caSopenharmony_ci    std::string tag("query_by_name_test_200");
167115cd2caSopenharmony_ci    std::vector<std::string> columns;
168115cd2caSopenharmony_ci    columns.push_back("display_name");
169115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
170115cd2caSopenharmony_ci    predicates.Like("display_name", "%买%");
171115cd2caSopenharmony_ci    std::string searchContact = ContactTabName::SEARCH_CONTACT;
172115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(searchContact, columns, predicates);
173115cd2caSopenharmony_ci
174115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket values;
175115cd2caSopenharmony_ci    values.Put("display_name", "买键盘");
176115cd2caSopenharmony_ci    CheckResultSet(values, resultSet, "query_by_name_test_200");
177115cd2caSopenharmony_ci    ClearData();
178115cd2caSopenharmony_ci}
179115cd2caSopenharmony_ci
180115cd2caSopenharmony_ci/*
181115cd2caSopenharmony_ci * @tc.number  query_by_pinyin_test_300
182115cd2caSopenharmony_ci * @tc.name    Fuzzy search based on name Pinyin
183115cd2caSopenharmony_ci * @tc.desc    Based on name, name pinyin, pinyin name, company, position, mobile phone number, nickname,
184115cd2caSopenharmony_ci               email address, residence, remarks, AIM fuzzy search capabilities
185115cd2caSopenharmony_ci * @tc.level   Level1
186115cd2caSopenharmony_ci * @tc.size    MediumTest
187115cd2caSopenharmony_ci * @tc.type    Function
188115cd2caSopenharmony_ci */
189115cd2caSopenharmony_ciHWTEST_F(ContactQueryTest, query_by_pinyin_test_300, testing::ext::TestSize.Level1)
190115cd2caSopenharmony_ci{
191115cd2caSopenharmony_ci    HILOG_INFO("-----query_by_pinyin_test_300 is starting!-----");
192115cd2caSopenharmony_ci    std::string tag("query_by_pinyin_test_300");
193115cd2caSopenharmony_ci    std::vector<std::string> columns;
194115cd2caSopenharmony_ci    columns.push_back("id");
195115cd2caSopenharmony_ci    columns.push_back("search_name");
196115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
197115cd2caSopenharmony_ci    predicates.Like("search_name", "%mai%");
198115cd2caSopenharmony_ci    std::string searchContact = ContactTabName::SEARCH_CONTACT;
199115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(searchContact, columns, predicates);
200115cd2caSopenharmony_ci
201115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket values;
202115cd2caSopenharmony_ci    values.Put("search_name", "买键盘||maijianpan||mjp");
203115cd2caSopenharmony_ci    CheckResultSet(values, resultSet, "query_by_pinyin_test_300");
204115cd2caSopenharmony_ci    ClearData();
205115cd2caSopenharmony_ci}
206115cd2caSopenharmony_ci
207115cd2caSopenharmony_ci/*
208115cd2caSopenharmony_ci * @tc.number  query_by_pinyin_test_400
209115cd2caSopenharmony_ci * @tc.name    Fuzzy search based on Pinyin name
210115cd2caSopenharmony_ci * @tc.desc    Based on name, name pinyin, pinyin name, company, position, mobile phone number, nickname,
211115cd2caSopenharmony_ci               email address, residence, remarks, AIM fuzzy search capabilities
212115cd2caSopenharmony_ci * @tc.level   Level1
213115cd2caSopenharmony_ci * @tc.size    MediumTest
214115cd2caSopenharmony_ci * @tc.type    Function
215115cd2caSopenharmony_ci */
216115cd2caSopenharmony_ciHWTEST_F(ContactQueryTest, query_by_pinyin_test_400, testing::ext::TestSize.Level1)
217115cd2caSopenharmony_ci{
218115cd2caSopenharmony_ci    HILOG_INFO("-----query_by_pinyin_test_400 is starting!-----");
219115cd2caSopenharmony_ci    std::string tag("query_by_pinyin_test_400");
220115cd2caSopenharmony_ci    std::vector<std::string> columns;
221115cd2caSopenharmony_ci    columns.push_back("id");
222115cd2caSopenharmony_ci    columns.push_back("search_name");
223115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
224115cd2caSopenharmony_ci    predicates.Like("search_name", "%mjp%");
225115cd2caSopenharmony_ci    std::string searchContact = ContactTabName::SEARCH_CONTACT;
226115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(searchContact, columns, predicates);
227115cd2caSopenharmony_ci
228115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket values;
229115cd2caSopenharmony_ci    values.Put("search_name", "买键盘||maijianpan||mjp");
230115cd2caSopenharmony_ci    CheckResultSet(values, resultSet, "query_by_pinyin_test_400");
231115cd2caSopenharmony_ci    ClearData();
232115cd2caSopenharmony_ci}
233115cd2caSopenharmony_ci
234115cd2caSopenharmony_ci/*
235115cd2caSopenharmony_ci * @tc.number  query_by_company_test_500
236115cd2caSopenharmony_ci * @tc.name    Fuzzy search by company
237115cd2caSopenharmony_ci * @tc.desc    Based on name, name pinyin, pinyin name, company, position, mobile phone number, nickname,
238115cd2caSopenharmony_ci               email address, residence, remarks, AIM fuzzy search capabilities
239115cd2caSopenharmony_ci * @tc.level   Level1
240115cd2caSopenharmony_ci * @tc.size    MediumTest
241115cd2caSopenharmony_ci * @tc.type    Function
242115cd2caSopenharmony_ci */
243115cd2caSopenharmony_ciHWTEST_F(ContactQueryTest, query_by_company_test_500, testing::ext::TestSize.Level1)
244115cd2caSopenharmony_ci{
245115cd2caSopenharmony_ci    HILOG_INFO("-----query_by_company_test_500 is starting!-----");
246115cd2caSopenharmony_ci    std::string tag("query_by_company_test_500");
247115cd2caSopenharmony_ci    std::vector<std::string> columns;
248115cd2caSopenharmony_ci    columns.push_back("detail_info");
249115cd2caSopenharmony_ci    columns.push_back("position");
250115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
251115cd2caSopenharmony_ci    predicates.Like("detail_info", "%天天向上%");
252115cd2caSopenharmony_ci    predicates.And();
253115cd2caSopenharmony_ci    predicates.EqualTo("type_id", "4");
254115cd2caSopenharmony_ci    std::string contactData = "contact_data";
255115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(contactData, columns, predicates);
256115cd2caSopenharmony_ci
257115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket values;
258115cd2caSopenharmony_ci    values.Put("detail_info", "你好天天向上hsk");
259115cd2caSopenharmony_ci    values.Put("position", "安全测试");
260115cd2caSopenharmony_ci    CheckResultSet(values, resultSet, "query_by_company_test_500");
261115cd2caSopenharmony_ci    ClearData();
262115cd2caSopenharmony_ci}
263115cd2caSopenharmony_ci
264115cd2caSopenharmony_ci/*
265115cd2caSopenharmony_ci * @tc.number  query_by_position_test_600
266115cd2caSopenharmony_ci * @tc.name    Fuzzy search by position
267115cd2caSopenharmony_ci * @tc.desc    Based on name, name pinyin, pinyin name, company, position, mobile phone number, nickname,
268115cd2caSopenharmony_ci               email address, residence, remarks, AIM fuzzy search capabilities
269115cd2caSopenharmony_ci * @tc.level   Level1
270115cd2caSopenharmony_ci * @tc.size    MediumTest
271115cd2caSopenharmony_ci * @tc.type    Function
272115cd2caSopenharmony_ci */
273115cd2caSopenharmony_ciHWTEST_F(ContactQueryTest, query_by_position_test_600, testing::ext::TestSize.Level1)
274115cd2caSopenharmony_ci{
275115cd2caSopenharmony_ci    HILOG_INFO("-----query_by_position_test_600 is starting!-----");
276115cd2caSopenharmony_ci    std::string tag("query_by_position_test_600");
277115cd2caSopenharmony_ci    std::vector<std::string> columns;
278115cd2caSopenharmony_ci    columns.push_back("detail_info");
279115cd2caSopenharmony_ci    columns.push_back("position");
280115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
281115cd2caSopenharmony_ci    predicates.Like("position", "%测试%");
282115cd2caSopenharmony_ci    predicates.And();
283115cd2caSopenharmony_ci    predicates.EqualTo("type_id", "4");
284115cd2caSopenharmony_ci    std::string contactData = "contact_data";
285115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(contactData, columns, predicates);
286115cd2caSopenharmony_ci
287115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket values;
288115cd2caSopenharmony_ci    values.Put("detail_info", "你好天天向上hsk");
289115cd2caSopenharmony_ci    values.Put("position", "安全测试");
290115cd2caSopenharmony_ci    CheckResultSet(values, resultSet, "query_by_position_test_600");
291115cd2caSopenharmony_ci    ClearData();
292115cd2caSopenharmony_ci}
293115cd2caSopenharmony_ci
294115cd2caSopenharmony_ci/*
295115cd2caSopenharmony_ci * @tc.number  query_by_phone_test_700
296115cd2caSopenharmony_ci * @tc.name    Fuzzy search according to mobile phone number
297115cd2caSopenharmony_ci * @tc.desc    Based on name, name pinyin, pinyin name, company, position, mobile phone number, nickname,
298115cd2caSopenharmony_ci               email address, residence, remarks, AIM fuzzy search capabilities
299115cd2caSopenharmony_ci * @tc.level   Level1
300115cd2caSopenharmony_ci * @tc.size    MediumTest
301115cd2caSopenharmony_ci * @tc.type    Function
302115cd2caSopenharmony_ci */
303115cd2caSopenharmony_ciHWTEST_F(ContactQueryTest, query_by_phone_test_700, testing::ext::TestSize.Level1)
304115cd2caSopenharmony_ci{
305115cd2caSopenharmony_ci    HILOG_INFO("-----query_by_phone_test_700 is starting!-----");
306115cd2caSopenharmony_ci    std::string tag("query_by_phone_test_700");
307115cd2caSopenharmony_ci    std::vector<std::string> columns;
308115cd2caSopenharmony_ci    columns.push_back("detail_info");
309115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
310115cd2caSopenharmony_ci    predicates.Like("detail_info", "1855250%");
311115cd2caSopenharmony_ci    predicates.And();
312115cd2caSopenharmony_ci    predicates.EqualTo("type_id", "5");
313115cd2caSopenharmony_ci    std::string contactData = "contact_data";
314115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(contactData, columns, predicates);
315115cd2caSopenharmony_ci
316115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket values;
317115cd2caSopenharmony_ci    values.Put("detail_info", "18552504058");
318115cd2caSopenharmony_ci    CheckResultSet(values, resultSet, "query_by_phone_test_700");
319115cd2caSopenharmony_ci    ClearData();
320115cd2caSopenharmony_ci}
321115cd2caSopenharmony_ci
322115cd2caSopenharmony_ci/*
323115cd2caSopenharmony_ci * @tc.number  query_by_nick_name_test_800
324115cd2caSopenharmony_ci * @tc.name    Fuzzy search by nickname
325115cd2caSopenharmony_ci * @tc.desc    Based on name, name pinyin, pinyin name, company, position, mobile phone number, nickname,
326115cd2caSopenharmony_ci               email address, residence, remarks, AIM fuzzy search capabilities
327115cd2caSopenharmony_ci * @tc.level   Level1
328115cd2caSopenharmony_ci * @tc.size    MediumTest
329115cd2caSopenharmony_ci * @tc.type    Function
330115cd2caSopenharmony_ci */
331115cd2caSopenharmony_ciHWTEST_F(ContactQueryTest, query_by_nick_name_test_800, testing::ext::TestSize.Level1)
332115cd2caSopenharmony_ci{
333115cd2caSopenharmony_ci    HILOG_INFO("-----query_by_nick_name_test_800 is starting!-----");
334115cd2caSopenharmony_ci    std::string tag("query_by_nick_name_test_800");
335115cd2caSopenharmony_ci    std::vector<std::string> columns;
336115cd2caSopenharmony_ci    columns.push_back("detail_info");
337115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
338115cd2caSopenharmony_ci    predicates.Like("detail_info", "%买%");
339115cd2caSopenharmony_ci    predicates.And();
340115cd2caSopenharmony_ci    predicates.EqualTo("type_id", "3");
341115cd2caSopenharmony_ci    std::string contactData = "contact_data";
342115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(contactData, columns, predicates);
343115cd2caSopenharmony_ci
344115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket values;
345115cd2caSopenharmony_ci    values.Put("detail_info", "买键盘");
346115cd2caSopenharmony_ci    CheckResultSet(values, resultSet, "query_by_nick_name_test_800");
347115cd2caSopenharmony_ci    ClearData();
348115cd2caSopenharmony_ci}
349115cd2caSopenharmony_ci
350115cd2caSopenharmony_ci/*
351115cd2caSopenharmony_ci * @tc.number  query_by_email_test_900
352115cd2caSopenharmony_ci * @tc.name    Fuzzy search by mailbox
353115cd2caSopenharmony_ci * @tc.desc    Based on name, name pinyin, pinyin name, company, position, mobile phone number, nickname,
354115cd2caSopenharmony_ci               email address, residence, remarks, AIM fuzzy search capabilities
355115cd2caSopenharmony_ci * @tc.level   Level1
356115cd2caSopenharmony_ci * @tc.size    MediumTest
357115cd2caSopenharmony_ci * @tc.type    Function
358115cd2caSopenharmony_ci */
359115cd2caSopenharmony_ciHWTEST_F(ContactQueryTest, query_by_email_test_900, testing::ext::TestSize.Level1)
360115cd2caSopenharmony_ci{
361115cd2caSopenharmony_ci    HILOG_INFO("-----query_by_email_test_900 is starting!-----");
362115cd2caSopenharmony_ci    std::string tag("query_by_email_test_900");
363115cd2caSopenharmony_ci    std::vector<std::string> columns;
364115cd2caSopenharmony_ci    columns.push_back("detail_info");
365115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
366115cd2caSopenharmony_ci    predicates.Like("detail_info", "166%");
367115cd2caSopenharmony_ci    predicates.And();
368115cd2caSopenharmony_ci    predicates.EqualTo("type_id", "1");
369115cd2caSopenharmony_ci    predicates.And();
370115cd2caSopenharmony_ci    predicates.EqualTo("is_deleted", "0");
371115cd2caSopenharmony_ci    std::string contactData = "contact_data";
372115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(contactData, columns, predicates);
373115cd2caSopenharmony_ci
374115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket values;
375115cd2caSopenharmony_ci    values.Put("detail_info", "1667894561@163.com");
376115cd2caSopenharmony_ci    CheckResultSet(values, resultSet, "query_by_email_test_900");
377115cd2caSopenharmony_ci    ClearData();
378115cd2caSopenharmony_ci}
379115cd2caSopenharmony_ci
380115cd2caSopenharmony_ci/*
381115cd2caSopenharmony_ci * @tc.number  query_by_address_test_1000
382115cd2caSopenharmony_ci * @tc.name    Fuzzy search based on house
383115cd2caSopenharmony_ci * @tc.desc    Based on name, name pinyin, pinyin name, company, position, mobile phone number, nickname,
384115cd2caSopenharmony_ci               email address, residence, remarks, AIM fuzzy search capabilities
385115cd2caSopenharmony_ci * @tc.level   Level1
386115cd2caSopenharmony_ci * @tc.size    MediumTest
387115cd2caSopenharmony_ci * @tc.type    Function
388115cd2caSopenharmony_ci */
389115cd2caSopenharmony_ciHWTEST_F(ContactQueryTest, query_by_address_test_1000, testing::ext::TestSize.Level1)
390115cd2caSopenharmony_ci{
391115cd2caSopenharmony_ci    HILOG_INFO("-----query_by_address_test_1000 is starting!-----");
392115cd2caSopenharmony_ci    std::string tag("query_by_address_test_1000");
393115cd2caSopenharmony_ci    std::vector<std::string> columns;
394115cd2caSopenharmony_ci    columns.push_back("detail_info");
395115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
396115cd2caSopenharmony_ci    predicates.Like("detail_info", "%南京%");
397115cd2caSopenharmony_ci    predicates.And();
398115cd2caSopenharmony_ci    predicates.EqualTo("type_id", "7");
399115cd2caSopenharmony_ci    std::string contactData = "contact_data";
400115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(contactData, columns, predicates);
401115cd2caSopenharmony_ci
402115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket values;
403115cd2caSopenharmony_ci    values.Put("detail_info", "南京市");
404115cd2caSopenharmony_ci    CheckResultSet(values, resultSet, "query_by_address_test_1000");
405115cd2caSopenharmony_ci    ClearData();
406115cd2caSopenharmony_ci}
407115cd2caSopenharmony_ci
408115cd2caSopenharmony_ci/*
409115cd2caSopenharmony_ci * @tc.number  query_by_note_test_1100
410115cd2caSopenharmony_ci * @tc.name    Fuzzy search based on comments
411115cd2caSopenharmony_ci * @tc.desc    Based on name, name pinyin, pinyin name, company, position, mobile phone number, nickname,
412115cd2caSopenharmony_ci               email address, residence, remarks, AIM fuzzy search capabilities
413115cd2caSopenharmony_ci * @tc.level   Level1
414115cd2caSopenharmony_ci * @tc.size    MediumTest
415115cd2caSopenharmony_ci * @tc.type    Function
416115cd2caSopenharmony_ci */
417115cd2caSopenharmony_ciHWTEST_F(ContactQueryTest, query_by_note_test_1100, testing::ext::TestSize.Level1)
418115cd2caSopenharmony_ci{
419115cd2caSopenharmony_ci    HILOG_INFO("-----query_by_note_test_1100 is starting!-----");
420115cd2caSopenharmony_ci    std::string tag("query_by_note_test_1100");
421115cd2caSopenharmony_ci    std::vector<std::string> columns;
422115cd2caSopenharmony_ci    columns.push_back("detail_info");
423115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
424115cd2caSopenharmony_ci    predicates.Like("detail_info", "%mjava%");
425115cd2caSopenharmony_ci    predicates.And();
426115cd2caSopenharmony_ci    predicates.EqualTo("type_id", "10");
427115cd2caSopenharmony_ci    std::string contactData = "contact_data";
428115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(contactData, columns, predicates);
429115cd2caSopenharmony_ci
430115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket values;
431115cd2caSopenharmony_ci    values.Put("detail_info", "LanguagemjavaC++");
432115cd2caSopenharmony_ci    CheckResultSet(values, resultSet, "query_by_note_test_1100");
433115cd2caSopenharmony_ci    ClearData();
434115cd2caSopenharmony_ci}
435115cd2caSopenharmony_ci
436115cd2caSopenharmony_ci/*
437115cd2caSopenharmony_ci * @tc.number  query_by_aim_test_1200
438115cd2caSopenharmony_ci * @tc.name    Fuzzy search according to aim
439115cd2caSopenharmony_ci * @tc.desc    Based on name, name pinyin, pinyin name, company, position, mobile phone number, nickname,
440115cd2caSopenharmony_ci               email address, residence, remarks, AIM fuzzy search capabilities
441115cd2caSopenharmony_ci * @tc.level   Level1
442115cd2caSopenharmony_ci * @tc.size    MediumTest
443115cd2caSopenharmony_ci * @tc.type    Function
444115cd2caSopenharmony_ci */
445115cd2caSopenharmony_ciHWTEST_F(ContactQueryTest, query_by_aim_test_1200, testing::ext::TestSize.Level1)
446115cd2caSopenharmony_ci{
447115cd2caSopenharmony_ci    HILOG_INFO("-----query_by_aim_test_1200 is starting!-----");
448115cd2caSopenharmony_ci    std::string tag("query_by_aim_test_1200");
449115cd2caSopenharmony_ci    std::vector<std::string> columns;
450115cd2caSopenharmony_ci    columns.push_back("id");
451115cd2caSopenharmony_ci    columns.push_back("raw_contact_id");
452115cd2caSopenharmony_ci    columns.push_back("detail_info");
453115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
454115cd2caSopenharmony_ci    predicates.Like("detail_info", "144%");
455115cd2caSopenharmony_ci    predicates.And();
456115cd2caSopenharmony_ci    predicates.EqualTo("type_id", "2");
457115cd2caSopenharmony_ci    std::string contactData = "contact_data";
458115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(contactData, columns, predicates);
459115cd2caSopenharmony_ci
460115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket values;
461115cd2caSopenharmony_ci    values.Put("detail_info", "14487956@1.com");
462115cd2caSopenharmony_ci    CheckResultSet(values, resultSet, "query_by_aim_test_1200");
463115cd2caSopenharmony_ci    ClearData();
464115cd2caSopenharmony_ci}
465115cd2caSopenharmony_ci
466115cd2caSopenharmony_ci/*
467115cd2caSopenharmony_ci * @tc.number  abnormal_contact_Query_test_1300
468115cd2caSopenharmony_ci * @tc.name    An incorrect field name was passed in during retrieval
469115cd2caSopenharmony_ci * @tc.desc    Based on name, name pinyin, pinyin name, company, position, mobile phone number, nickname,
470115cd2caSopenharmony_ci               email address, residence, remarks, AIM fuzzy search capabilities
471115cd2caSopenharmony_ci * @tc.level   Level1
472115cd2caSopenharmony_ci * @tc.size    MediumTest
473115cd2caSopenharmony_ci * @tc.type    Function
474115cd2caSopenharmony_ci */
475115cd2caSopenharmony_ciHWTEST_F(ContactQueryTest, abnormal_contact_Query_test_1300, testing::ext::TestSize.Level1)
476115cd2caSopenharmony_ci{
477115cd2caSopenharmony_ci    HILOG_INFO("-----abnormal_contact_Query_test_1300 is starting!-----");
478115cd2caSopenharmony_ci    std::string tag("abnormal_contact_Query_test_1300");
479115cd2caSopenharmony_ci    std::vector<std::string> columns;
480115cd2caSopenharmony_ci    columns.push_back("id");
481115cd2caSopenharmony_ci    columns.push_back("search_name");
482115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
483115cd2caSopenharmony_ci    predicates.Like("search_namesss", "%mjp%");
484115cd2caSopenharmony_ci    std::string searchContact = ContactTabName::SEARCH_CONTACT;
485115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(searchContact, columns, predicates);
486115cd2caSopenharmony_ci    // resultSet count 1
487115cd2caSopenharmony_ci    int rowCount = 0;
488115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
489115cd2caSopenharmony_ci    EXPECT_EQ(-1, rowCount);
490115cd2caSopenharmony_ci    ClearData();
491115cd2caSopenharmony_ci}
492115cd2caSopenharmony_ci} // namespace Test
493115cd2caSopenharmony_ci} // namespace Contacts