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 "contactgroup_test.h"
17115cd2caSopenharmony_ci
18115cd2caSopenharmony_ci#include "test_common.h"
19115cd2caSopenharmony_ci
20115cd2caSopenharmony_cinamespace Contacts {
21115cd2caSopenharmony_cinamespace Test {
22115cd2caSopenharmony_ciContactGroupTest::ContactGroupTest()
23115cd2caSopenharmony_ci{
24115cd2caSopenharmony_ci}
25115cd2caSopenharmony_ci
26115cd2caSopenharmony_ciContactGroupTest::~ContactGroupTest()
27115cd2caSopenharmony_ci{
28115cd2caSopenharmony_ci}
29115cd2caSopenharmony_ci
30115cd2caSopenharmony_civoid ContactGroupTest::ClearData()
31115cd2caSopenharmony_ci{
32115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
33115cd2caSopenharmony_ci    predicates.GreaterThan("id", "0");
34115cd2caSopenharmony_ci    std::string groups = "groups";
35115cd2caSopenharmony_ci    int deleteCode = ContactDelete(groups, predicates);
36115cd2caSopenharmony_ci    EXPECT_EQ(deleteCode, 0);
37115cd2caSopenharmony_ci}
38115cd2caSopenharmony_ci
39115cd2caSopenharmony_ciint64_t ContactGroupTest::GroupsInsert(std::string groupName, OHOS::DataShare::DataShareValuesBucket &groupValues)
40115cd2caSopenharmony_ci{
41115cd2caSopenharmony_ci    OHOS::Uri uriGroups(ContactsUri::GROUPS);
42115cd2caSopenharmony_ci    groupValues.Put("group_name", groupName);
43115cd2caSopenharmony_ci    int64_t code = contactsDataAbility.Insert(uriGroups, groupValues);
44115cd2caSopenharmony_ci    return code;
45115cd2caSopenharmony_ci}
46115cd2caSopenharmony_ci
47115cd2caSopenharmony_ciint ContactGroupTest::ContactUpdate(const std::string &tableName, OHOS::DataShare::DataShareValuesBucket updateValues,
48115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates)
49115cd2caSopenharmony_ci{
50115cd2caSopenharmony_ci    int code = 0;
51115cd2caSopenharmony_ci    if (tableName == ContactTabName::RAW_CONTACT) {
52115cd2caSopenharmony_ci        OHOS::Uri uriRawContact(ContactsUri::RAW_CONTACT);
53115cd2caSopenharmony_ci        code = contactsDataAbility.Update(uriRawContact, predicates, updateValues);
54115cd2caSopenharmony_ci    } else if (tableName == ContactTabName::CONTACT_DATA) {
55115cd2caSopenharmony_ci        OHOS::Uri uriContactData(ContactsUri::CONTACT_DATA);
56115cd2caSopenharmony_ci        code = contactsDataAbility.Update(uriContactData, predicates, updateValues);
57115cd2caSopenharmony_ci    } else if (tableName == ContactTabName::GROUPS) {
58115cd2caSopenharmony_ci        OHOS::Uri uriGroups(ContactsUri::GROUPS);
59115cd2caSopenharmony_ci        code = contactsDataAbility.Update(uriGroups, predicates, updateValues);
60115cd2caSopenharmony_ci    } else if (tableName == ContactTabName::CONTACT_BLOCKLIST) {
61115cd2caSopenharmony_ci        OHOS::Uri uriBlocklist(ContactsUri::BLOCKLIST);
62115cd2caSopenharmony_ci        code = contactsDataAbility.Update(uriBlocklist, predicates, updateValues);
63115cd2caSopenharmony_ci    } else {
64115cd2caSopenharmony_ci        HILOG_ERROR("ContactsDataAbility ====>no match uri action");
65115cd2caSopenharmony_ci    }
66115cd2caSopenharmony_ci    return code;
67115cd2caSopenharmony_ci}
68115cd2caSopenharmony_ci
69115cd2caSopenharmony_ciint ContactGroupTest::ContactDelete(const std::string &tableName, OHOS::DataShare::DataSharePredicates predicates)
70115cd2caSopenharmony_ci{
71115cd2caSopenharmony_ci    int code = 0;
72115cd2caSopenharmony_ci    if (tableName == ContactTabName::RAW_CONTACT) {
73115cd2caSopenharmony_ci        OHOS::Uri uriRawContact(ContactsUri::RAW_CONTACT);
74115cd2caSopenharmony_ci        code = contactsDataAbility.Delete(uriRawContact, predicates);
75115cd2caSopenharmony_ci    } else if (tableName == ContactTabName::CONTACT_DATA) {
76115cd2caSopenharmony_ci        OHOS::Uri uriContactData(ContactsUri::CONTACT_DATA);
77115cd2caSopenharmony_ci        code = contactsDataAbility.Delete(uriContactData, predicates);
78115cd2caSopenharmony_ci    } else if (tableName == ContactTabName::GROUPS) {
79115cd2caSopenharmony_ci        OHOS::Uri uriGroups(ContactsUri::GROUPS);
80115cd2caSopenharmony_ci        code = contactsDataAbility.Delete(uriGroups, predicates);
81115cd2caSopenharmony_ci    } else if (tableName == ContactTabName::CONTACT_BLOCKLIST) {
82115cd2caSopenharmony_ci        OHOS::Uri uriBlocklist(ContactsUri::BLOCKLIST);
83115cd2caSopenharmony_ci        code = contactsDataAbility.Delete(uriBlocklist, predicates);
84115cd2caSopenharmony_ci    } else if (tableName == ContactTabName::CONTACT) {
85115cd2caSopenharmony_ci        OHOS::Uri uriContact(ContactsUri::CONTACT);
86115cd2caSopenharmony_ci        code = contactsDataAbility.Delete(uriContact, predicates);
87115cd2caSopenharmony_ci    } else {
88115cd2caSopenharmony_ci        HILOG_ERROR("ContactsDataAbility ====>no match uri action");
89115cd2caSopenharmony_ci    }
90115cd2caSopenharmony_ci    return code;
91115cd2caSopenharmony_ci}
92115cd2caSopenharmony_ci
93115cd2caSopenharmony_cistd::shared_ptr<OHOS::DataShare::DataShareResultSet> ContactGroupTest::ContactQuery(
94115cd2caSopenharmony_ci    const std::string &tableName, std::vector<std::string> columns, OHOS::DataShare::DataSharePredicates predicates)
95115cd2caSopenharmony_ci{
96115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet;
97115cd2caSopenharmony_ci    if (tableName == ContactTabName::RAW_CONTACT) {
98115cd2caSopenharmony_ci        OHOS::Uri uriRawContact(ContactsUri::RAW_CONTACT);
99115cd2caSopenharmony_ci        resultSet = contactsDataAbility.Query(uriRawContact, predicates, columns);
100115cd2caSopenharmony_ci    } else if (tableName == ContactTabName::CONTACT_DATA) {
101115cd2caSopenharmony_ci        OHOS::Uri uriContactData(ContactsUri::CONTACT_DATA);
102115cd2caSopenharmony_ci        resultSet = contactsDataAbility.Query(uriContactData, predicates, columns);
103115cd2caSopenharmony_ci    } else if (tableName == ContactTabName::CONTACT) {
104115cd2caSopenharmony_ci        OHOS::Uri uriContact(ContactsUri::CONTACT);
105115cd2caSopenharmony_ci        resultSet = contactsDataAbility.Query(uriContact, predicates, columns);
106115cd2caSopenharmony_ci    } else if (tableName == ContactTabName::GROUPS) {
107115cd2caSopenharmony_ci        OHOS::Uri uriGroups(ContactsUri::GROUPS);
108115cd2caSopenharmony_ci        resultSet = contactsDataAbility.Query(uriGroups, predicates, columns);
109115cd2caSopenharmony_ci    } else if (tableName == ContactTabName::CONTACT_BLOCKLIST) {
110115cd2caSopenharmony_ci        OHOS::Uri uriBlocklist(ContactsUri::BLOCKLIST);
111115cd2caSopenharmony_ci        resultSet = contactsDataAbility.Query(uriBlocklist, predicates, columns);
112115cd2caSopenharmony_ci    } else if (tableName == ContactTabName::DELETED_RAW_CONTACT) {
113115cd2caSopenharmony_ci        OHOS::Uri uriDeletedRawContact(ContactsUri::DELETED_RAW_CONTACT);
114115cd2caSopenharmony_ci        resultSet = contactsDataAbility.Query(uriDeletedRawContact, predicates, columns);
115115cd2caSopenharmony_ci    } else if (tableName == ContactTabName::SEARCH_CONTACT) {
116115cd2caSopenharmony_ci        OHOS::Uri uriSearchContact(ContactsUri::SEARCH);
117115cd2caSopenharmony_ci        resultSet = contactsDataAbility.Query(uriSearchContact, predicates, columns);
118115cd2caSopenharmony_ci    } else {
119115cd2caSopenharmony_ci        HILOG_ERROR("ContactsDataAbility ====>no match uri action");
120115cd2caSopenharmony_ci    }
121115cd2caSopenharmony_ci    return resultSet;
122115cd2caSopenharmony_ci}
123115cd2caSopenharmony_ci
124115cd2caSopenharmony_civoid ContactGroupTest::QueryAndExpectResult(const std::string &tableName,
125115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates, OHOS::DataShare::DataShareValuesBucket &values,
126115cd2caSopenharmony_ci    std::string testName)
127115cd2caSopenharmony_ci{
128115cd2caSopenharmony_ci    std::vector<std::string> columns;
129115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(tableName, columns, predicates);
130115cd2caSopenharmony_ci    CheckResultSet(values, resultSet, testName);
131115cd2caSopenharmony_ci}
132115cd2caSopenharmony_ci
133115cd2caSopenharmony_civoid ContactGroupTest::GetAllGroupsColumns(std::vector<std::string> &columnInt, std::vector<std::string> &columnStr)
134115cd2caSopenharmony_ci{
135115cd2caSopenharmony_ci    columnInt.push_back("account_id");
136115cd2caSopenharmony_ci    columnInt.push_back("ringtone_modify_time");
137115cd2caSopenharmony_ci    columnInt.push_back("lastest_modify_time");
138115cd2caSopenharmony_ci
139115cd2caSopenharmony_ci    columnStr.push_back("group_name");
140115cd2caSopenharmony_ci    columnStr.push_back("group_notes");
141115cd2caSopenharmony_ci    columnStr.push_back("group_ringtone");
142115cd2caSopenharmony_ci}
143115cd2caSopenharmony_ci
144115cd2caSopenharmony_civoid ContactGroupTest::MergeColumns(
145115cd2caSopenharmony_ci    std::vector<std::string> &columns, std::vector<std::string> &columnsInt, std::vector<std::string> &columnsStr)
146115cd2caSopenharmony_ci{
147115cd2caSopenharmony_ci    int columnsIntSize = columnsInt.size();
148115cd2caSopenharmony_ci    for (int i = 0; i < columnsIntSize; i++) {
149115cd2caSopenharmony_ci        columns.push_back(columnsInt[i]);
150115cd2caSopenharmony_ci    }
151115cd2caSopenharmony_ci    int columnsStrSize = columnsStr.size();
152115cd2caSopenharmony_ci    for (int i = 0; i < columnsStrSize; i++) {
153115cd2caSopenharmony_ci        columns.push_back(columnsStr[i]);
154115cd2caSopenharmony_ci    }
155115cd2caSopenharmony_ci}
156115cd2caSopenharmony_ci
157115cd2caSopenharmony_ci/**
158115cd2caSopenharmony_ci * @brief get ValuesBucket
159115cd2caSopenharmony_ci * @params columnsStart column start index
160115cd2caSopenharmony_ci * @params columnsEnd column end index
161115cd2caSopenharmony_ci * @return ValuesBucket
162115cd2caSopenharmony_ci */
163115cd2caSopenharmony_ciOHOS::DataShare::DataShareValuesBucket ContactGroupTest::GetAllColumnsValues(
164115cd2caSopenharmony_ci    std::vector<std::string> &columnsInt, std::vector<std::string> &columnsStr)
165115cd2caSopenharmony_ci{
166115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket;
167115cd2caSopenharmony_ci    int randomInt = 0;
168115cd2caSopenharmony_ci    int columnsIntSize = columnsInt.size();
169115cd2caSopenharmony_ci    for (int i = 0; i < columnsIntSize; i++) {
170115cd2caSopenharmony_ci        randomInt = ContactsRand();
171115cd2caSopenharmony_ci        HILOG_INFO("rand=%{public}d", randomInt);
172115cd2caSopenharmony_ci        valuesBucket.Put(columnsInt[i], randomInt);
173115cd2caSopenharmony_ci    }
174115cd2caSopenharmony_ci    std::string randomStr = "";
175115cd2caSopenharmony_ci    int columnsStringSize = columnsStr.size();
176115cd2caSopenharmony_ci    for (int i = 0; i < columnsStringSize; i++) {
177115cd2caSopenharmony_ci        randomStr = columnsStr[i] + std::to_string(ContactsRand());
178115cd2caSopenharmony_ci        valuesBucket.Put(columnsStr[i], randomStr);
179115cd2caSopenharmony_ci    }
180115cd2caSopenharmony_ci
181115cd2caSopenharmony_ci    return valuesBucket;
182115cd2caSopenharmony_ci}
183115cd2caSopenharmony_ci
184115cd2caSopenharmony_ciint64_t ContactGroupTest::GroupsInsertValues(OHOS::DataShare::DataShareValuesBucket &values)
185115cd2caSopenharmony_ci{
186115cd2caSopenharmony_ci    OHOS::Uri uriGroups(ContactsUri::GROUPS);
187115cd2caSopenharmony_ci    int64_t code = contactsDataAbility.Insert(uriGroups, values);
188115cd2caSopenharmony_ci    return code;
189115cd2caSopenharmony_ci}
190115cd2caSopenharmony_ci
191115cd2caSopenharmony_ci/*
192115cd2caSopenharmony_ci * @tc.number  groups_Insert_test_100
193115cd2caSopenharmony_ci * @tc.name    Add a single contact group
194115cd2caSopenharmony_ci * @tc.desc    Add capabilities for contact groups
195115cd2caSopenharmony_ci * @tc.level   Level1
196115cd2caSopenharmony_ci * @tc.size    MediumTest
197115cd2caSopenharmony_ci * @tc.type    Function
198115cd2caSopenharmony_ci */
199115cd2caSopenharmony_ciHWTEST_F(ContactGroupTest, groups_Insert_test_100, testing::ext::TestSize.Level1)
200115cd2caSopenharmony_ci{
201115cd2caSopenharmony_ci    HILOG_INFO("--- groups_Insert_test_100 is staring! ---");
202115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesGroup;
203115cd2caSopenharmony_ci    int64_t groupId = GroupsInsert("personnel", valuesGroup);
204115cd2caSopenharmony_ci    HILOG_INFO("groups_Insert_test_100: groupId = %{public}ld", groupId);
205115cd2caSopenharmony_ci    EXPECT_GT(groupId, 0);
206115cd2caSopenharmony_ci
207115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
208115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(groupId));
209115cd2caSopenharmony_ci    std::string groups = ContactTabName::GROUPS;
210115cd2caSopenharmony_ci    QueryAndExpectResult(groups, predicates, valuesGroup, "groups_Insert_test_100");
211115cd2caSopenharmony_ci    ClearData();
212115cd2caSopenharmony_ci}
213115cd2caSopenharmony_ci
214115cd2caSopenharmony_ci/*
215115cd2caSopenharmony_ci * @tc.number  groups_Insert_test_200
216115cd2caSopenharmony_ci * @tc.name    Adding multiple contact groups
217115cd2caSopenharmony_ci * @tc.desc    Add capabilities for contact groups
218115cd2caSopenharmony_ci * @tc.level   Level1
219115cd2caSopenharmony_ci * @tc.size    MediumTest
220115cd2caSopenharmony_ci * @tc.type    Function
221115cd2caSopenharmony_ci */
222115cd2caSopenharmony_ciHWTEST_F(ContactGroupTest, groups_Insert_test_200, testing::ext::TestSize.Level1)
223115cd2caSopenharmony_ci{
224115cd2caSopenharmony_ci    HILOG_INFO("--- groups_Insert_test_200 is staring! ---");
225115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesGroup;
226115cd2caSopenharmony_ci    int64_t groupId = GroupsInsert("Test a set", valuesGroup);
227115cd2caSopenharmony_ci    HILOG_INFO("groups_Insert_test_200: groupId = %{public}ld", groupId);
228115cd2caSopenharmony_ci    EXPECT_GT(groupId, 0);
229115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
230115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(groupId));
231115cd2caSopenharmony_ci    std::string groups = ContactTabName::GROUPS;
232115cd2caSopenharmony_ci    QueryAndExpectResult(groups, predicates, valuesGroup, "groups_Insert_test_200");
233115cd2caSopenharmony_ci
234115cd2caSopenharmony_ci    valuesGroup.Clear();
235115cd2caSopenharmony_ci    groupId = GroupsInsert("Test group two", valuesGroup);
236115cd2caSopenharmony_ci    HILOG_INFO("groups_Insert_test_200: groupId = %{public}ld", groupId);
237115cd2caSopenharmony_ci    EXPECT_GT(groupId, 0);
238115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates2;
239115cd2caSopenharmony_ci    predicates2.EqualTo("id", std::to_string(groupId));
240115cd2caSopenharmony_ci    QueryAndExpectResult(groups, predicates2, valuesGroup, "groups_Insert_test_200");
241115cd2caSopenharmony_ci
242115cd2caSopenharmony_ci    valuesGroup.Clear();
243115cd2caSopenharmony_ci    groupId = GroupsInsert("Test three groups", valuesGroup);
244115cd2caSopenharmony_ci    HILOG_INFO("groups_Insert_test_200: groupId = %{public}ld", groupId);
245115cd2caSopenharmony_ci    EXPECT_GT(groupId, 0);
246115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates3;
247115cd2caSopenharmony_ci    predicates3.EqualTo("id", std::to_string(groupId));
248115cd2caSopenharmony_ci    QueryAndExpectResult(groups, predicates3, valuesGroup, "groups_Insert_test_200");
249115cd2caSopenharmony_ci    ClearData();
250115cd2caSopenharmony_ci}
251115cd2caSopenharmony_ci
252115cd2caSopenharmony_ci/*
253115cd2caSopenharmony_ci * @tc.number  groups_Insert_test_300
254115cd2caSopenharmony_ci * @tc.name    Add a full field data to the groups table and verify whether the insertion is successful
255115cd2caSopenharmony_ci * @tc.desc    Added ability to groups
256115cd2caSopenharmony_ci * @tc.level   Level1
257115cd2caSopenharmony_ci * @tc.size    MediumTest
258115cd2caSopenharmony_ci * @tc.type    Function
259115cd2caSopenharmony_ci */
260115cd2caSopenharmony_ciHWTEST_F(ContactGroupTest, groups_Insert_test_300, testing::ext::TestSize.Level1)
261115cd2caSopenharmony_ci{
262115cd2caSopenharmony_ci    HILOG_INFO("-----groups_Insert_test_300 is starting!-----");
263115cd2caSopenharmony_ci    std::vector<std::string> columnsInt;
264115cd2caSopenharmony_ci    std::vector<std::string> columnsStr;
265115cd2caSopenharmony_ci    std::vector<std::string> columns;
266115cd2caSopenharmony_ci    std::string groups = ContactTabName::GROUPS;
267115cd2caSopenharmony_ci    GetAllGroupsColumns(columnsInt, columnsStr);
268115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket = GetAllColumnsValues(columnsInt, columnsStr);
269115cd2caSopenharmony_ci    int rawId = GroupsInsertValues(valuesBucket);
270115cd2caSopenharmony_ci    EXPECT_GT(rawId, 0);
271115cd2caSopenharmony_ci
272115cd2caSopenharmony_ci    MergeColumns(columns, columnsInt, columnsStr);
273115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
274115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(rawId));
275115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(groups, columns, predicates);
276115cd2caSopenharmony_ci    // resultSet count 1
277115cd2caSopenharmony_ci    int rowCount = -1;
278115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
279115cd2caSopenharmony_ci    EXPECT_EQ(1, rowCount);
280115cd2caSopenharmony_ci    CheckResultSet(valuesBucket, resultSet, "groups_Insert_test_300");
281115cd2caSopenharmony_ci    HILOG_INFO("-----groups_Insert_test_300 is end!-----");
282115cd2caSopenharmony_ci    ClearData();
283115cd2caSopenharmony_ci}
284115cd2caSopenharmony_ci
285115cd2caSopenharmony_ci/*
286115cd2caSopenharmony_ci * @tc.number  groups_Delete_test_400
287115cd2caSopenharmony_ci * @tc.name    Single contact group deletion
288115cd2caSopenharmony_ci * @tc.desc    Delete group ability based on group ID
289115cd2caSopenharmony_ci * @tc.level   Level1
290115cd2caSopenharmony_ci * @tc.size    MediumTest
291115cd2caSopenharmony_ci * @tc.type    Function
292115cd2caSopenharmony_ci */
293115cd2caSopenharmony_ciHWTEST_F(ContactGroupTest, groups_Delete_test_400, testing::ext::TestSize.Level1)
294115cd2caSopenharmony_ci{
295115cd2caSopenharmony_ci    HILOG_INFO("--- groups_Delete_test_400 is starting! ---");
296115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesGroup;
297115cd2caSopenharmony_ci    int64_t groupId = GroupsInsert("Personnel Group", valuesGroup);
298115cd2caSopenharmony_ci    EXPECT_GT(groupId, 0);
299115cd2caSopenharmony_ci
300115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
301115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(groupId));
302115cd2caSopenharmony_ci    std::string groups = ContactTabName::GROUPS;
303115cd2caSopenharmony_ci    int deleteCode = ContactDelete(groups, predicates);
304115cd2caSopenharmony_ci    EXPECT_EQ(deleteCode, 0);
305115cd2caSopenharmony_ci    std::vector<std::string> columns;
306115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(groups, columns, predicates);
307115cd2caSopenharmony_ci    int rowCount = 0;
308115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
309115cd2caSopenharmony_ci    EXPECT_EQ(0, rowCount);
310115cd2caSopenharmony_ci    ClearData();
311115cd2caSopenharmony_ci}
312115cd2caSopenharmony_ci
313115cd2caSopenharmony_ci/*
314115cd2caSopenharmony_ci * @tc.number  groups_Delete_test_500
315115cd2caSopenharmony_ci * @tc.name    Multiple contact groups deleted
316115cd2caSopenharmony_ci * @tc.desc    Delete group ability based on group ID
317115cd2caSopenharmony_ci * @tc.level   Level1
318115cd2caSopenharmony_ci * @tc.size    MediumTest
319115cd2caSopenharmony_ci * @tc.type    Function
320115cd2caSopenharmony_ci */
321115cd2caSopenharmony_ciHWTEST_F(ContactGroupTest, groups_Delete_test_500, testing::ext::TestSize.Level1)
322115cd2caSopenharmony_ci{
323115cd2caSopenharmony_ci    HILOG_INFO("--- groups_Delete_test_500 is starting! ---");
324115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesGroup;
325115cd2caSopenharmony_ci    int64_t groupIdOne = GroupsInsert("Personnel Group", valuesGroup);
326115cd2caSopenharmony_ci    EXPECT_GT(groupIdOne, 0);
327115cd2caSopenharmony_ci
328115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesGroupTwo;
329115cd2caSopenharmony_ci    int64_t groupIdTwo = GroupsInsert("Sell one", valuesGroupTwo);
330115cd2caSopenharmony_ci    EXPECT_GT(groupIdTwo, 0);
331115cd2caSopenharmony_ci
332115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesGroupThree;
333115cd2caSopenharmony_ci    int64_t groupIdThree = GroupsInsert("Develop a group", valuesGroupThree);
334115cd2caSopenharmony_ci    EXPECT_GT(groupIdThree, 0);
335115cd2caSopenharmony_ci
336115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
337115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(groupIdOne));
338115cd2caSopenharmony_ci    predicates.Or();
339115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(groupIdTwo));
340115cd2caSopenharmony_ci    predicates.Or();
341115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(groupIdThree));
342115cd2caSopenharmony_ci    std::string groups = ContactTabName::GROUPS;
343115cd2caSopenharmony_ci    int deleteCode = ContactDelete(groups, predicates);
344115cd2caSopenharmony_ci    HILOG_INFO("groups_Delete_test_500: deleteCode = %{public}d", deleteCode);
345115cd2caSopenharmony_ci    EXPECT_EQ(deleteCode, 0);
346115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates2;
347115cd2caSopenharmony_ci    predicates2.EqualTo("id", std::to_string(groupIdOne));
348115cd2caSopenharmony_ci    predicates2.Or();
349115cd2caSopenharmony_ci    predicates2.EqualTo("id", std::to_string(groupIdTwo));
350115cd2caSopenharmony_ci    predicates2.Or();
351115cd2caSopenharmony_ci    predicates2.EqualTo("id", std::to_string(groupIdThree));
352115cd2caSopenharmony_ci    std::vector<std::string> columns;
353115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(groups, columns, predicates2);
354115cd2caSopenharmony_ci    int rowCount = 0;
355115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
356115cd2caSopenharmony_ci    EXPECT_EQ(0, rowCount);
357115cd2caSopenharmony_ci    ClearData();
358115cd2caSopenharmony_ci}
359115cd2caSopenharmony_ci
360115cd2caSopenharmony_ci/*
361115cd2caSopenharmony_ci * @tc.number  groups_Delete_test_600
362115cd2caSopenharmony_ci * @tc.name    Delete a full field data in the groups table and verify whether the deletion is successful
363115cd2caSopenharmony_ci * @tc.desc    Groups deletion capability
364115cd2caSopenharmony_ci * @tc.level   Level1
365115cd2caSopenharmony_ci * @tc.size    MediumTest
366115cd2caSopenharmony_ci * @tc.type    Function
367115cd2caSopenharmony_ci */
368115cd2caSopenharmony_ciHWTEST_F(ContactGroupTest, groups_Delete_test_600, testing::ext::TestSize.Level1)
369115cd2caSopenharmony_ci{
370115cd2caSopenharmony_ci    HILOG_INFO("-----groups_Delete_test_600 is starting!-----");
371115cd2caSopenharmony_ci    // insert
372115cd2caSopenharmony_ci    std::vector<std::string> columns;
373115cd2caSopenharmony_ci    std::vector<std::string> columnsInt;
374115cd2caSopenharmony_ci    std::vector<std::string> columnsStr;
375115cd2caSopenharmony_ci    GetAllGroupsColumns(columnsInt, columnsStr);
376115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket = GetAllColumnsValues(columnsInt, columnsStr);
377115cd2caSopenharmony_ci    int groupId = GroupsInsertValues(valuesBucket);
378115cd2caSopenharmony_ci    EXPECT_GT(groupId, 0);
379115cd2caSopenharmony_ci
380115cd2caSopenharmony_ci    // test end delete data
381115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
382115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(groupId));
383115cd2caSopenharmony_ci    EXPECT_GT(groupId, 0);
384115cd2caSopenharmony_ci    std::string groups = ContactTabName::GROUPS;
385115cd2caSopenharmony_ci    int deleteCode = ContactDelete(groups, predicates);
386115cd2caSopenharmony_ci    EXPECT_EQ(deleteCode, 0);
387115cd2caSopenharmony_ci
388115cd2caSopenharmony_ci    MergeColumns(columns, columnsInt, columnsStr);
389115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetDeleteQuery =
390115cd2caSopenharmony_ci        ContactQuery(groups, columns, predicates);
391115cd2caSopenharmony_ci    int rowCount = -1;
392115cd2caSopenharmony_ci    resultSetDeleteQuery->GetRowCount(rowCount);
393115cd2caSopenharmony_ci    EXPECT_EQ(0, rowCount);
394115cd2caSopenharmony_ci    ClearData();
395115cd2caSopenharmony_ci}
396115cd2caSopenharmony_ci
397115cd2caSopenharmony_ci/*
398115cd2caSopenharmony_ci * @tc.number  groups_Query_test_700
399115cd2caSopenharmony_ci * @tc.name    Query all contact groups
400115cd2caSopenharmony_ci * @tc.desc    Query all group capabilities
401115cd2caSopenharmony_ci * @tc.level   Level1
402115cd2caSopenharmony_ci * @tc.size    MediumTest
403115cd2caSopenharmony_ci * @tc.type    Function
404115cd2caSopenharmony_ci */
405115cd2caSopenharmony_ciHWTEST_F(ContactGroupTest, groups_Query_test_700, testing::ext::TestSize.Level1)
406115cd2caSopenharmony_ci{
407115cd2caSopenharmony_ci    HILOG_INFO("--- groups_Query_test_700 is starting! ---");
408115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesGroupTwo;
409115cd2caSopenharmony_ci    GroupsInsert("Sell one1", valuesGroupTwo);
410115cd2caSopenharmony_ci    valuesGroupTwo.Clear();
411115cd2caSopenharmony_ci    GroupsInsert("Sell one2", valuesGroupTwo);
412115cd2caSopenharmony_ci    valuesGroupTwo.Clear();
413115cd2caSopenharmony_ci    GroupsInsert("Sell one3", valuesGroupTwo);
414115cd2caSopenharmony_ci    valuesGroupTwo.Clear();
415115cd2caSopenharmony_ci    GroupsInsert("Sell one4", valuesGroupTwo);
416115cd2caSopenharmony_ci    valuesGroupTwo.Clear();
417115cd2caSopenharmony_ci    GroupsInsert("Sell one5", valuesGroupTwo);
418115cd2caSopenharmony_ci    valuesGroupTwo.Clear();
419115cd2caSopenharmony_ci    std::vector<std::string> columns;
420115cd2caSopenharmony_ci    columns.push_back("id");
421115cd2caSopenharmony_ci    columns.push_back("group_name");
422115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
423115cd2caSopenharmony_ci    predicates.GreaterThan("id", "0");
424115cd2caSopenharmony_ci    std::string groups = ContactTabName::GROUPS;
425115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(groups, columns, predicates);
426115cd2caSopenharmony_ci    int rowCount = 0;
427115cd2caSopenharmony_ci    int currentCount = 5;
428115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
429115cd2caSopenharmony_ci    EXPECT_EQ(currentCount, rowCount);
430115cd2caSopenharmony_ci    ClearData();
431115cd2caSopenharmony_ci}
432115cd2caSopenharmony_ci
433115cd2caSopenharmony_ci/*
434115cd2caSopenharmony_ci * @tc.number  groups_Update_test_800
435115cd2caSopenharmony_ci * @tc.name    Single contact group update
436115cd2caSopenharmony_ci * @tc.desc    Contacts group update capability
437115cd2caSopenharmony_ci * @tc.level   Level1
438115cd2caSopenharmony_ci * @tc.size    MediumTest
439115cd2caSopenharmony_ci * @tc.type    Function
440115cd2caSopenharmony_ci */
441115cd2caSopenharmony_ciHWTEST_F(ContactGroupTest, groups_Update_test_800, testing::ext::TestSize.Level1)
442115cd2caSopenharmony_ci{
443115cd2caSopenharmony_ci    HILOG_INFO("--- groups_Update_test_800 is staring! ---");
444115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesGroup;
445115cd2caSopenharmony_ci    int64_t groupId = GroupsInsert("physical education", valuesGroup);
446115cd2caSopenharmony_ci    EXPECT_GT(groupId, 0);
447115cd2caSopenharmony_ci
448115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket updateValues;
449115cd2caSopenharmony_ci    updateValues.Put("group_name", std::string("Language"));
450115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
451115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(groupId));
452115cd2caSopenharmony_ci    std::string groups = ContactTabName::GROUPS;
453115cd2caSopenharmony_ci    int updateCode = ContactUpdate(groups, updateValues, predicates);
454115cd2caSopenharmony_ci    EXPECT_EQ(updateCode, 0);
455115cd2caSopenharmony_ci    QueryAndExpectResult(groups, predicates, updateValues, "groups_Update_test_800");
456115cd2caSopenharmony_ci    ClearData();
457115cd2caSopenharmony_ci}
458115cd2caSopenharmony_ci
459115cd2caSopenharmony_ci/*
460115cd2caSopenharmony_ci * @tc.number  groups_Update_test_900
461115cd2caSopenharmony_ci * @tc.name    Multiple contact group updates
462115cd2caSopenharmony_ci * @tc.desc    Contacts group update capability
463115cd2caSopenharmony_ci * @tc.level   Level1
464115cd2caSopenharmony_ci * @tc.size    MediumTest
465115cd2caSopenharmony_ci * @tc.type    Function
466115cd2caSopenharmony_ci */
467115cd2caSopenharmony_ciHWTEST_F(ContactGroupTest, groups_Update_test_900, testing::ext::TestSize.Level1)
468115cd2caSopenharmony_ci{
469115cd2caSopenharmony_ci    HILOG_INFO("--- groups_Update_test_900 is staring! ---");
470115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesGroupOne;
471115cd2caSopenharmony_ci    int64_t groupIdOne = GroupsInsert("Develop a group", valuesGroupOne);
472115cd2caSopenharmony_ci    EXPECT_GT(groupIdOne, 0);
473115cd2caSopenharmony_ci
474115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesGroupTwo;
475115cd2caSopenharmony_ci    int64_t groupIdTwo = GroupsInsert("Development Group 2", valuesGroupTwo);
476115cd2caSopenharmony_ci    EXPECT_GT(groupIdTwo, 0);
477115cd2caSopenharmony_ci
478115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesGroupThree;
479115cd2caSopenharmony_ci    int64_t groupIdThree = GroupsInsert("Development three groups", valuesGroupThree);
480115cd2caSopenharmony_ci    EXPECT_GT(groupIdThree, 0);
481115cd2caSopenharmony_ci
482115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket updateValues;
483115cd2caSopenharmony_ci    updateValues.Put("group_name", std::string("Develop a group"));
484115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
485115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(groupIdOne));
486115cd2caSopenharmony_ci    std::string groups = ContactTabName::GROUPS;
487115cd2caSopenharmony_ci    int updateCode = ContactUpdate(groups, updateValues, predicates);
488115cd2caSopenharmony_ci    EXPECT_EQ(updateCode, 0);
489115cd2caSopenharmony_ci    QueryAndExpectResult(groups, predicates, updateValues, "groups_Update_test_900");
490115cd2caSopenharmony_ci
491115cd2caSopenharmony_ci    updateValues.Clear();
492115cd2caSopenharmony_ci    updateValues.Put("group_name", std::string("Development Second Group"));
493115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates2;
494115cd2caSopenharmony_ci    predicates2.EqualTo("id", std::to_string(groupIdTwo));
495115cd2caSopenharmony_ci    updateCode = ContactUpdate(groups, updateValues, predicates2);
496115cd2caSopenharmony_ci    EXPECT_EQ(updateCode, 0);
497115cd2caSopenharmony_ci    QueryAndExpectResult(groups, predicates2, updateValues, "groups_Update_test_900");
498115cd2caSopenharmony_ci
499115cd2caSopenharmony_ci    updateValues.Clear();
500115cd2caSopenharmony_ci    updateValues.Put("group_name", std::string("Develop three groups"));
501115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates3;
502115cd2caSopenharmony_ci    predicates3.EqualTo("id", std::to_string(groupIdThree));
503115cd2caSopenharmony_ci    updateCode = ContactUpdate(groups, updateValues, predicates3);
504115cd2caSopenharmony_ci    EXPECT_EQ(updateCode, 0);
505115cd2caSopenharmony_ci    QueryAndExpectResult(groups, predicates3, updateValues, "groups_Update_test_900");
506115cd2caSopenharmony_ci    ClearData();
507115cd2caSopenharmony_ci}
508115cd2caSopenharmony_ci
509115cd2caSopenharmony_ci/*
510115cd2caSopenharmony_ci * @tc.number  groups_Update_test_1000
511115cd2caSopenharmony_ci * @tc.name    Update a full field data of the groups table and verify whether the update is successful
512115cd2caSopenharmony_ci * @tc.desc    Support all groups update capability
513115cd2caSopenharmony_ci * @tc.level   Level1
514115cd2caSopenharmony_ci * @tc.size    MediumTest
515115cd2caSopenharmony_ci * @tc.type    Function
516115cd2caSopenharmony_ci */
517115cd2caSopenharmony_ciHWTEST_F(ContactGroupTest, groups_Update_test_1000, testing::ext::TestSize.Level1)
518115cd2caSopenharmony_ci{
519115cd2caSopenharmony_ci    HILOG_INFO("-----groups_Update_test_1000 is starting!-----");
520115cd2caSopenharmony_ci    std::vector<std::string> columns;
521115cd2caSopenharmony_ci    std::vector<std::string> columnsInt;
522115cd2caSopenharmony_ci    std::vector<std::string> columnsStr;
523115cd2caSopenharmony_ci    std::string groups = ContactTabName::GROUPS;
524115cd2caSopenharmony_ci    GetAllGroupsColumns(columnsInt, columnsStr);
525115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesBucket = GetAllColumnsValues(columnsInt, columnsStr);
526115cd2caSopenharmony_ci    int groupId = GroupsInsertValues(valuesBucket);
527115cd2caSopenharmony_ci    EXPECT_GT(groupId, 0);
528115cd2caSopenharmony_ci    MergeColumns(columns, columnsInt, columnsStr);
529115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
530115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(groupId));
531115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetOne = ContactQuery(groups, columns, predicates);
532115cd2caSopenharmony_ci    CheckResultSet(valuesBucket, resultSetOne, "groups_Update_test_1000");
533115cd2caSopenharmony_ci
534115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket upDateValuesBucket = GetAllColumnsValues(columnsInt, columnsStr);
535115cd2caSopenharmony_ci    int upDateCode = ContactUpdate(groups, upDateValuesBucket, predicates);
536115cd2caSopenharmony_ci    EXPECT_EQ(upDateCode, 0);
537115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(groups, columns, predicates);
538115cd2caSopenharmony_ci    // resultSet count 1
539115cd2caSopenharmony_ci    int rowCount = -1;
540115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
541115cd2caSopenharmony_ci    EXPECT_EQ(1, rowCount);
542115cd2caSopenharmony_ci    CheckResultSet(upDateValuesBucket, resultSet, "groups_Update_test_1000");
543115cd2caSopenharmony_ci    ClearData();
544115cd2caSopenharmony_ci}
545115cd2caSopenharmony_ci
546115cd2caSopenharmony_ci/*
547115cd2caSopenharmony_ci * @tc.number  abnormal_groups_Insert_test_1100
548115cd2caSopenharmony_ci * @tc.name    An incorrect field or table name was passed in when inserting a group
549115cd2caSopenharmony_ci * @tc.desc    Exception use case
550115cd2caSopenharmony_ci * @tc.level   Level1
551115cd2caSopenharmony_ci * @tc.size    MediumTest
552115cd2caSopenharmony_ci * @tc.type    Function
553115cd2caSopenharmony_ci */
554115cd2caSopenharmony_ciHWTEST_F(ContactGroupTest, abnormal_groups_Insert_test_1100, testing::ext::TestSize.Level1)
555115cd2caSopenharmony_ci{
556115cd2caSopenharmony_ci    OHOS::Uri uriGroups(ContactsUri::GROUPS);
557115cd2caSopenharmony_ci    OHOS::Uri errorUri(ContactsUri::GROUPS_ERROR);
558115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket groupValues;
559115cd2caSopenharmony_ci    groupValues.Put("group_names", "Board of Directors");
560115cd2caSopenharmony_ci    int64_t groupId = contactsDataAbility.Insert(uriGroups, groupValues);
561115cd2caSopenharmony_ci    EXPECT_EQ(groupId, -1);
562115cd2caSopenharmony_ci
563115cd2caSopenharmony_ci    groupValues.Clear();
564115cd2caSopenharmony_ci    groupValues.Put("group_name", "Board of Directors");
565115cd2caSopenharmony_ci    groupId = contactsDataAbility.Insert(errorUri, groupValues);
566115cd2caSopenharmony_ci    EXPECT_EQ(groupId, -1);
567115cd2caSopenharmony_ci    std::vector<std::string> columns;
568115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
569115cd2caSopenharmony_ci    predicates.EqualTo("group_name", "Board of Directors");
570115cd2caSopenharmony_ci    std::string groups = ContactTabName::GROUPS;
571115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(groups, columns, predicates);
572115cd2caSopenharmony_ci    int rowCount = 0;
573115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
574115cd2caSopenharmony_ci    EXPECT_EQ(0, rowCount);
575115cd2caSopenharmony_ci    ClearData();
576115cd2caSopenharmony_ci}
577115cd2caSopenharmony_ci
578115cd2caSopenharmony_ci/*
579115cd2caSopenharmony_ci * @tc.number  abnormal_groups_Delete_test_1200
580115cd2caSopenharmony_ci * @tc.name    When deleting a group, pass in non-existent fields, field values, and table names
581115cd2caSopenharmony_ci * @tc.desc    Exception use case
582115cd2caSopenharmony_ci * @tc.level   Level1
583115cd2caSopenharmony_ci * @tc.size    MediumTest
584115cd2caSopenharmony_ci * @tc.type    Function
585115cd2caSopenharmony_ci */
586115cd2caSopenharmony_ciHWTEST_F(ContactGroupTest, abnormal_groups_Delete_test_1200, testing::ext::TestSize.Level1)
587115cd2caSopenharmony_ci{
588115cd2caSopenharmony_ci    OHOS::Uri errorUri(ContactsUri::GROUPS_ERROR);
589115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket values;
590115cd2caSopenharmony_ci    int64_t groupId = GroupsInsert("Board of Directors 2", values);
591115cd2caSopenharmony_ci    HILOG_INFO("abnormal_groups_Delete_test_1200: groupId = %{public}ld", groupId);
592115cd2caSopenharmony_ci    EXPECT_GT(groupId, 0);
593115cd2caSopenharmony_ci
594115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
595115cd2caSopenharmony_ci    predicates.EqualTo("ids", std::to_string(groupId));
596115cd2caSopenharmony_ci    std::string groups = ContactTabName::GROUPS;
597115cd2caSopenharmony_ci    int deleteCode = ContactDelete(groups, predicates);
598115cd2caSopenharmony_ci    HILOG_INFO("abnormal_groups_Delete_test_1200: deleteCode = %{public}d", deleteCode);
599115cd2caSopenharmony_ci    EXPECT_EQ(deleteCode, -1);
600115cd2caSopenharmony_ci    std::vector<std::string> columns;
601115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates2;
602115cd2caSopenharmony_ci    predicates2.EqualTo("id", std::to_string(groupId));
603115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = ContactQuery(groups, columns, predicates2);
604115cd2caSopenharmony_ci    int rowCount = 0;
605115cd2caSopenharmony_ci    resultSet->GetRowCount(rowCount);
606115cd2caSopenharmony_ci    EXPECT_EQ(1, rowCount);
607115cd2caSopenharmony_ci
608115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates3;
609115cd2caSopenharmony_ci    predicates3.EqualTo("id", std::to_string(groupId));
610115cd2caSopenharmony_ci    deleteCode = contactsDataAbility.Delete(errorUri, predicates3);
611115cd2caSopenharmony_ci    HILOG_INFO("abnormal_groups_Delete_test_1200: deleteCode = %{public}d", deleteCode);
612115cd2caSopenharmony_ci    EXPECT_EQ(deleteCode, -1);
613115cd2caSopenharmony_ci
614115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetTwo = ContactQuery(groups, columns, predicates3);
615115cd2caSopenharmony_ci    int rowCountTwo = 0;
616115cd2caSopenharmony_ci    resultSetTwo->GetRowCount(rowCountTwo);
617115cd2caSopenharmony_ci    EXPECT_EQ(1, rowCountTwo);
618115cd2caSopenharmony_ci
619115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates4;
620115cd2caSopenharmony_ci    predicates4.EqualTo("id", "10000000");
621115cd2caSopenharmony_ci    deleteCode = ContactDelete(groups, predicates4);
622115cd2caSopenharmony_ci    EXPECT_EQ(deleteCode, 0);
623115cd2caSopenharmony_ci    ClearData();
624115cd2caSopenharmony_ci}
625115cd2caSopenharmony_ci
626115cd2caSopenharmony_ci/*
627115cd2caSopenharmony_ci * @tc.number  abnormal_groups_Query_test_1300
628115cd2caSopenharmony_ci * @tc.name    When querying a group, pass in non-existent fields, field values, and table names
629115cd2caSopenharmony_ci * @tc.desc    Exception use case
630115cd2caSopenharmony_ci * @tc.level   Level1
631115cd2caSopenharmony_ci * @tc.size    MediumTest
632115cd2caSopenharmony_ci * @tc.type    Function
633115cd2caSopenharmony_ci */
634115cd2caSopenharmony_ciHWTEST_F(ContactGroupTest, abnormal_groups_Query_test_1300, testing::ext::TestSize.Level1)
635115cd2caSopenharmony_ci{
636115cd2caSopenharmony_ci    std::string tag("abnormal_groups_Query_test_1300");
637115cd2caSopenharmony_ci    OHOS::Uri errorUri(ContactsUri::GROUPS_ERROR);
638115cd2caSopenharmony_ci    std::string groups = ContactTabName::GROUPS;
639115cd2caSopenharmony_ci    std::vector<std::string> columns;
640115cd2caSopenharmony_ci    columns.push_back("id");
641115cd2caSopenharmony_ci    columns.push_back("group_name");
642115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
643115cd2caSopenharmony_ci    predicates.GreaterThan("ids", "0");
644115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetOne = ContactQuery(groups, columns, predicates);
645115cd2caSopenharmony_ci    int rowCountOne = 0;
646115cd2caSopenharmony_ci    resultSetOne->GetRowCount(rowCountOne);
647115cd2caSopenharmony_ci    EXPECT_EQ(-1, rowCountOne);
648115cd2caSopenharmony_ci
649115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates2;
650115cd2caSopenharmony_ci    predicates2.EqualTo("id", "10000000");
651115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetTwo = ContactQuery(groups, columns, predicates2);
652115cd2caSopenharmony_ci    int rowCountTwo = 0;
653115cd2caSopenharmony_ci    resultSetTwo->GetRowCount(rowCountTwo);
654115cd2caSopenharmony_ci    EXPECT_EQ(0, rowCountTwo);
655115cd2caSopenharmony_ci
656115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates3;
657115cd2caSopenharmony_ci    predicates3.GreaterThan("id", "0");
658115cd2caSopenharmony_ci    std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSetThree =
659115cd2caSopenharmony_ci        contactsDataAbility.Query(errorUri, predicates3, columns);
660115cd2caSopenharmony_ci    EXPECT_EQ(resultSetThree, nullptr);
661115cd2caSopenharmony_ci    ClearData();
662115cd2caSopenharmony_ci}
663115cd2caSopenharmony_ci
664115cd2caSopenharmony_ci/*
665115cd2caSopenharmony_ci * @tc.number  abnormal_groups_Update_test_1400
666115cd2caSopenharmony_ci * @tc.name    When modifying a group, pass in non-existent fields, field values, and table names
667115cd2caSopenharmony_ci * @tc.desc    Exception use case
668115cd2caSopenharmony_ci * @tc.level   Level1
669115cd2caSopenharmony_ci * @tc.size    MediumTest
670115cd2caSopenharmony_ci * @tc.type    Function
671115cd2caSopenharmony_ci */
672115cd2caSopenharmony_ciHWTEST_F(ContactGroupTest, abnormal_groups_Update_test_1400, testing::ext::TestSize.Level1)
673115cd2caSopenharmony_ci{
674115cd2caSopenharmony_ci    OHOS::Uri errorUri(ContactsUri::GROUPS_ERROR);
675115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket valuesInsert;
676115cd2caSopenharmony_ci    int64_t groupId = GroupsInsert("Board of Directors", valuesInsert);
677115cd2caSopenharmony_ci    HILOG_INFO("abnormal_groups_Update_test_1400: groupId = %{public}ld", groupId);
678115cd2caSopenharmony_ci    EXPECT_GT(groupId, 0);
679115cd2caSopenharmony_ci
680115cd2caSopenharmony_ci    OHOS::DataShare::DataShareValuesBucket updateValues;
681115cd2caSopenharmony_ci    updateValues.Put("group_names", "Develop a group");
682115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates;
683115cd2caSopenharmony_ci    predicates.EqualTo("id", std::to_string(groupId));
684115cd2caSopenharmony_ci    std::string groups = ContactTabName::GROUPS;
685115cd2caSopenharmony_ci    int updateCode = ContactUpdate(groups, updateValues, predicates);
686115cd2caSopenharmony_ci    HILOG_INFO("abnormal_groups_Update_test_1400: updateCode = %{public}d", updateCode);
687115cd2caSopenharmony_ci    EXPECT_EQ(updateCode, -1);
688115cd2caSopenharmony_ci    QueryAndExpectResult(groups, predicates, valuesInsert, "abnormal_groups_Update_test_1400");
689115cd2caSopenharmony_ci
690115cd2caSopenharmony_ci    updateValues.Clear();
691115cd2caSopenharmony_ci    updateValues.Put("group_name", "Develop a group");
692115cd2caSopenharmony_ci    updateCode = contactsDataAbility.Update(errorUri, predicates, updateValues);
693115cd2caSopenharmony_ci    HILOG_INFO("abnormal_groups_Update_test_1400: updateCode = %{public}d", updateCode);
694115cd2caSopenharmony_ci    EXPECT_EQ(updateCode, -1);
695115cd2caSopenharmony_ci    QueryAndExpectResult(groups, predicates, valuesInsert, "abnormal_groups_Update_test_1400");
696115cd2caSopenharmony_ci
697115cd2caSopenharmony_ci    OHOS::DataShare::DataSharePredicates predicates2;
698115cd2caSopenharmony_ci    predicates2.EqualTo("id", "10000000");
699115cd2caSopenharmony_ci    updateCode = ContactUpdate(groups, updateValues, predicates2);
700115cd2caSopenharmony_ci    EXPECT_EQ(updateCode, 0);
701115cd2caSopenharmony_ci    ClearData();
702115cd2caSopenharmony_ci}
703115cd2caSopenharmony_ci} // namespace Test
704115cd2caSopenharmony_ci} // namespace Contacts