/* * Copyright (c) 2021-2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "contactgroup_test.h" #include "test_common.h" namespace Contacts { namespace Test { ContactGroupTest::ContactGroupTest() { } ContactGroupTest::~ContactGroupTest() { } void ContactGroupTest::ClearData() { OHOS::DataShare::DataSharePredicates predicates; predicates.GreaterThan("id", "0"); std::string groups = "groups"; int deleteCode = ContactDelete(groups, predicates); EXPECT_EQ(deleteCode, 0); } int64_t ContactGroupTest::GroupsInsert(std::string groupName, OHOS::DataShare::DataShareValuesBucket &groupValues) { OHOS::Uri uriGroups(ContactsUri::GROUPS); groupValues.Put("group_name", groupName); int64_t code = contactsDataAbility.Insert(uriGroups, groupValues); return code; } int ContactGroupTest::ContactUpdate(const std::string &tableName, OHOS::DataShare::DataShareValuesBucket updateValues, OHOS::DataShare::DataSharePredicates predicates) { int code = 0; if (tableName == ContactTabName::RAW_CONTACT) { OHOS::Uri uriRawContact(ContactsUri::RAW_CONTACT); code = contactsDataAbility.Update(uriRawContact, predicates, updateValues); } else if (tableName == ContactTabName::CONTACT_DATA) { OHOS::Uri uriContactData(ContactsUri::CONTACT_DATA); code = contactsDataAbility.Update(uriContactData, predicates, updateValues); } else if (tableName == ContactTabName::GROUPS) { OHOS::Uri uriGroups(ContactsUri::GROUPS); code = contactsDataAbility.Update(uriGroups, predicates, updateValues); } else if (tableName == ContactTabName::CONTACT_BLOCKLIST) { OHOS::Uri uriBlocklist(ContactsUri::BLOCKLIST); code = contactsDataAbility.Update(uriBlocklist, predicates, updateValues); } else { HILOG_ERROR("ContactsDataAbility ====>no match uri action"); } return code; } int ContactGroupTest::ContactDelete(const std::string &tableName, OHOS::DataShare::DataSharePredicates predicates) { int code = 0; if (tableName == ContactTabName::RAW_CONTACT) { OHOS::Uri uriRawContact(ContactsUri::RAW_CONTACT); code = contactsDataAbility.Delete(uriRawContact, predicates); } else if (tableName == ContactTabName::CONTACT_DATA) { OHOS::Uri uriContactData(ContactsUri::CONTACT_DATA); code = contactsDataAbility.Delete(uriContactData, predicates); } else if (tableName == ContactTabName::GROUPS) { OHOS::Uri uriGroups(ContactsUri::GROUPS); code = contactsDataAbility.Delete(uriGroups, predicates); } else if (tableName == ContactTabName::CONTACT_BLOCKLIST) { OHOS::Uri uriBlocklist(ContactsUri::BLOCKLIST); code = contactsDataAbility.Delete(uriBlocklist, predicates); } else if (tableName == ContactTabName::CONTACT) { OHOS::Uri uriContact(ContactsUri::CONTACT); code = contactsDataAbility.Delete(uriContact, predicates); } else { HILOG_ERROR("ContactsDataAbility ====>no match uri action"); } return code; } std::shared_ptr ContactGroupTest::ContactQuery( const std::string &tableName, std::vector columns, OHOS::DataShare::DataSharePredicates predicates) { std::shared_ptr resultSet; if (tableName == ContactTabName::RAW_CONTACT) { OHOS::Uri uriRawContact(ContactsUri::RAW_CONTACT); resultSet = contactsDataAbility.Query(uriRawContact, predicates, columns); } else if (tableName == ContactTabName::CONTACT_DATA) { OHOS::Uri uriContactData(ContactsUri::CONTACT_DATA); resultSet = contactsDataAbility.Query(uriContactData, predicates, columns); } else if (tableName == ContactTabName::CONTACT) { OHOS::Uri uriContact(ContactsUri::CONTACT); resultSet = contactsDataAbility.Query(uriContact, predicates, columns); } else if (tableName == ContactTabName::GROUPS) { OHOS::Uri uriGroups(ContactsUri::GROUPS); resultSet = contactsDataAbility.Query(uriGroups, predicates, columns); } else if (tableName == ContactTabName::CONTACT_BLOCKLIST) { OHOS::Uri uriBlocklist(ContactsUri::BLOCKLIST); resultSet = contactsDataAbility.Query(uriBlocklist, predicates, columns); } else if (tableName == ContactTabName::DELETED_RAW_CONTACT) { OHOS::Uri uriDeletedRawContact(ContactsUri::DELETED_RAW_CONTACT); resultSet = contactsDataAbility.Query(uriDeletedRawContact, predicates, columns); } else if (tableName == ContactTabName::SEARCH_CONTACT) { OHOS::Uri uriSearchContact(ContactsUri::SEARCH); resultSet = contactsDataAbility.Query(uriSearchContact, predicates, columns); } else { HILOG_ERROR("ContactsDataAbility ====>no match uri action"); } return resultSet; } void ContactGroupTest::QueryAndExpectResult(const std::string &tableName, OHOS::DataShare::DataSharePredicates predicates, OHOS::DataShare::DataShareValuesBucket &values, std::string testName) { std::vector columns; std::shared_ptr resultSet = ContactQuery(tableName, columns, predicates); CheckResultSet(values, resultSet, testName); } void ContactGroupTest::GetAllGroupsColumns(std::vector &columnInt, std::vector &columnStr) { columnInt.push_back("account_id"); columnInt.push_back("ringtone_modify_time"); columnInt.push_back("lastest_modify_time"); columnStr.push_back("group_name"); columnStr.push_back("group_notes"); columnStr.push_back("group_ringtone"); } void ContactGroupTest::MergeColumns( std::vector &columns, std::vector &columnsInt, std::vector &columnsStr) { int columnsIntSize = columnsInt.size(); for (int i = 0; i < columnsIntSize; i++) { columns.push_back(columnsInt[i]); } int columnsStrSize = columnsStr.size(); for (int i = 0; i < columnsStrSize; i++) { columns.push_back(columnsStr[i]); } } /** * @brief get ValuesBucket * @params columnsStart column start index * @params columnsEnd column end index * @return ValuesBucket */ OHOS::DataShare::DataShareValuesBucket ContactGroupTest::GetAllColumnsValues( std::vector &columnsInt, std::vector &columnsStr) { OHOS::DataShare::DataShareValuesBucket valuesBucket; int randomInt = 0; int columnsIntSize = columnsInt.size(); for (int i = 0; i < columnsIntSize; i++) { randomInt = ContactsRand(); HILOG_INFO("rand=%{public}d", randomInt); valuesBucket.Put(columnsInt[i], randomInt); } std::string randomStr = ""; int columnsStringSize = columnsStr.size(); for (int i = 0; i < columnsStringSize; i++) { randomStr = columnsStr[i] + std::to_string(ContactsRand()); valuesBucket.Put(columnsStr[i], randomStr); } return valuesBucket; } int64_t ContactGroupTest::GroupsInsertValues(OHOS::DataShare::DataShareValuesBucket &values) { OHOS::Uri uriGroups(ContactsUri::GROUPS); int64_t code = contactsDataAbility.Insert(uriGroups, values); return code; } /* * @tc.number groups_Insert_test_100 * @tc.name Add a single contact group * @tc.desc Add capabilities for contact groups * @tc.level Level1 * @tc.size MediumTest * @tc.type Function */ HWTEST_F(ContactGroupTest, groups_Insert_test_100, testing::ext::TestSize.Level1) { HILOG_INFO("--- groups_Insert_test_100 is staring! ---"); OHOS::DataShare::DataShareValuesBucket valuesGroup; int64_t groupId = GroupsInsert("personnel", valuesGroup); HILOG_INFO("groups_Insert_test_100: groupId = %{public}ld", groupId); EXPECT_GT(groupId, 0); OHOS::DataShare::DataSharePredicates predicates; predicates.EqualTo("id", std::to_string(groupId)); std::string groups = ContactTabName::GROUPS; QueryAndExpectResult(groups, predicates, valuesGroup, "groups_Insert_test_100"); ClearData(); } /* * @tc.number groups_Insert_test_200 * @tc.name Adding multiple contact groups * @tc.desc Add capabilities for contact groups * @tc.level Level1 * @tc.size MediumTest * @tc.type Function */ HWTEST_F(ContactGroupTest, groups_Insert_test_200, testing::ext::TestSize.Level1) { HILOG_INFO("--- groups_Insert_test_200 is staring! ---"); OHOS::DataShare::DataShareValuesBucket valuesGroup; int64_t groupId = GroupsInsert("Test a set", valuesGroup); HILOG_INFO("groups_Insert_test_200: groupId = %{public}ld", groupId); EXPECT_GT(groupId, 0); OHOS::DataShare::DataSharePredicates predicates; predicates.EqualTo("id", std::to_string(groupId)); std::string groups = ContactTabName::GROUPS; QueryAndExpectResult(groups, predicates, valuesGroup, "groups_Insert_test_200"); valuesGroup.Clear(); groupId = GroupsInsert("Test group two", valuesGroup); HILOG_INFO("groups_Insert_test_200: groupId = %{public}ld", groupId); EXPECT_GT(groupId, 0); OHOS::DataShare::DataSharePredicates predicates2; predicates2.EqualTo("id", std::to_string(groupId)); QueryAndExpectResult(groups, predicates2, valuesGroup, "groups_Insert_test_200"); valuesGroup.Clear(); groupId = GroupsInsert("Test three groups", valuesGroup); HILOG_INFO("groups_Insert_test_200: groupId = %{public}ld", groupId); EXPECT_GT(groupId, 0); OHOS::DataShare::DataSharePredicates predicates3; predicates3.EqualTo("id", std::to_string(groupId)); QueryAndExpectResult(groups, predicates3, valuesGroup, "groups_Insert_test_200"); ClearData(); } /* * @tc.number groups_Insert_test_300 * @tc.name Add a full field data to the groups table and verify whether the insertion is successful * @tc.desc Added ability to groups * @tc.level Level1 * @tc.size MediumTest * @tc.type Function */ HWTEST_F(ContactGroupTest, groups_Insert_test_300, testing::ext::TestSize.Level1) { HILOG_INFO("-----groups_Insert_test_300 is starting!-----"); std::vector columnsInt; std::vector columnsStr; std::vector columns; std::string groups = ContactTabName::GROUPS; GetAllGroupsColumns(columnsInt, columnsStr); OHOS::DataShare::DataShareValuesBucket valuesBucket = GetAllColumnsValues(columnsInt, columnsStr); int rawId = GroupsInsertValues(valuesBucket); EXPECT_GT(rawId, 0); MergeColumns(columns, columnsInt, columnsStr); OHOS::DataShare::DataSharePredicates predicates; predicates.EqualTo("id", std::to_string(rawId)); std::shared_ptr resultSet = ContactQuery(groups, columns, predicates); // resultSet count 1 int rowCount = -1; resultSet->GetRowCount(rowCount); EXPECT_EQ(1, rowCount); CheckResultSet(valuesBucket, resultSet, "groups_Insert_test_300"); HILOG_INFO("-----groups_Insert_test_300 is end!-----"); ClearData(); } /* * @tc.number groups_Delete_test_400 * @tc.name Single contact group deletion * @tc.desc Delete group ability based on group ID * @tc.level Level1 * @tc.size MediumTest * @tc.type Function */ HWTEST_F(ContactGroupTest, groups_Delete_test_400, testing::ext::TestSize.Level1) { HILOG_INFO("--- groups_Delete_test_400 is starting! ---"); OHOS::DataShare::DataShareValuesBucket valuesGroup; int64_t groupId = GroupsInsert("Personnel Group", valuesGroup); EXPECT_GT(groupId, 0); OHOS::DataShare::DataSharePredicates predicates; predicates.EqualTo("id", std::to_string(groupId)); std::string groups = ContactTabName::GROUPS; int deleteCode = ContactDelete(groups, predicates); EXPECT_EQ(deleteCode, 0); std::vector columns; std::shared_ptr resultSet = ContactQuery(groups, columns, predicates); int rowCount = 0; resultSet->GetRowCount(rowCount); EXPECT_EQ(0, rowCount); ClearData(); } /* * @tc.number groups_Delete_test_500 * @tc.name Multiple contact groups deleted * @tc.desc Delete group ability based on group ID * @tc.level Level1 * @tc.size MediumTest * @tc.type Function */ HWTEST_F(ContactGroupTest, groups_Delete_test_500, testing::ext::TestSize.Level1) { HILOG_INFO("--- groups_Delete_test_500 is starting! ---"); OHOS::DataShare::DataShareValuesBucket valuesGroup; int64_t groupIdOne = GroupsInsert("Personnel Group", valuesGroup); EXPECT_GT(groupIdOne, 0); OHOS::DataShare::DataShareValuesBucket valuesGroupTwo; int64_t groupIdTwo = GroupsInsert("Sell one", valuesGroupTwo); EXPECT_GT(groupIdTwo, 0); OHOS::DataShare::DataShareValuesBucket valuesGroupThree; int64_t groupIdThree = GroupsInsert("Develop a group", valuesGroupThree); EXPECT_GT(groupIdThree, 0); OHOS::DataShare::DataSharePredicates predicates; predicates.EqualTo("id", std::to_string(groupIdOne)); predicates.Or(); predicates.EqualTo("id", std::to_string(groupIdTwo)); predicates.Or(); predicates.EqualTo("id", std::to_string(groupIdThree)); std::string groups = ContactTabName::GROUPS; int deleteCode = ContactDelete(groups, predicates); HILOG_INFO("groups_Delete_test_500: deleteCode = %{public}d", deleteCode); EXPECT_EQ(deleteCode, 0); OHOS::DataShare::DataSharePredicates predicates2; predicates2.EqualTo("id", std::to_string(groupIdOne)); predicates2.Or(); predicates2.EqualTo("id", std::to_string(groupIdTwo)); predicates2.Or(); predicates2.EqualTo("id", std::to_string(groupIdThree)); std::vector columns; std::shared_ptr resultSet = ContactQuery(groups, columns, predicates2); int rowCount = 0; resultSet->GetRowCount(rowCount); EXPECT_EQ(0, rowCount); ClearData(); } /* * @tc.number groups_Delete_test_600 * @tc.name Delete a full field data in the groups table and verify whether the deletion is successful * @tc.desc Groups deletion capability * @tc.level Level1 * @tc.size MediumTest * @tc.type Function */ HWTEST_F(ContactGroupTest, groups_Delete_test_600, testing::ext::TestSize.Level1) { HILOG_INFO("-----groups_Delete_test_600 is starting!-----"); // insert std::vector columns; std::vector columnsInt; std::vector columnsStr; GetAllGroupsColumns(columnsInt, columnsStr); OHOS::DataShare::DataShareValuesBucket valuesBucket = GetAllColumnsValues(columnsInt, columnsStr); int groupId = GroupsInsertValues(valuesBucket); EXPECT_GT(groupId, 0); // test end delete data OHOS::DataShare::DataSharePredicates predicates; predicates.EqualTo("id", std::to_string(groupId)); EXPECT_GT(groupId, 0); std::string groups = ContactTabName::GROUPS; int deleteCode = ContactDelete(groups, predicates); EXPECT_EQ(deleteCode, 0); MergeColumns(columns, columnsInt, columnsStr); std::shared_ptr resultSetDeleteQuery = ContactQuery(groups, columns, predicates); int rowCount = -1; resultSetDeleteQuery->GetRowCount(rowCount); EXPECT_EQ(0, rowCount); ClearData(); } /* * @tc.number groups_Query_test_700 * @tc.name Query all contact groups * @tc.desc Query all group capabilities * @tc.level Level1 * @tc.size MediumTest * @tc.type Function */ HWTEST_F(ContactGroupTest, groups_Query_test_700, testing::ext::TestSize.Level1) { HILOG_INFO("--- groups_Query_test_700 is starting! ---"); OHOS::DataShare::DataShareValuesBucket valuesGroupTwo; GroupsInsert("Sell one1", valuesGroupTwo); valuesGroupTwo.Clear(); GroupsInsert("Sell one2", valuesGroupTwo); valuesGroupTwo.Clear(); GroupsInsert("Sell one3", valuesGroupTwo); valuesGroupTwo.Clear(); GroupsInsert("Sell one4", valuesGroupTwo); valuesGroupTwo.Clear(); GroupsInsert("Sell one5", valuesGroupTwo); valuesGroupTwo.Clear(); std::vector columns; columns.push_back("id"); columns.push_back("group_name"); OHOS::DataShare::DataSharePredicates predicates; predicates.GreaterThan("id", "0"); std::string groups = ContactTabName::GROUPS; std::shared_ptr resultSet = ContactQuery(groups, columns, predicates); int rowCount = 0; int currentCount = 5; resultSet->GetRowCount(rowCount); EXPECT_EQ(currentCount, rowCount); ClearData(); } /* * @tc.number groups_Update_test_800 * @tc.name Single contact group update * @tc.desc Contacts group update capability * @tc.level Level1 * @tc.size MediumTest * @tc.type Function */ HWTEST_F(ContactGroupTest, groups_Update_test_800, testing::ext::TestSize.Level1) { HILOG_INFO("--- groups_Update_test_800 is staring! ---"); OHOS::DataShare::DataShareValuesBucket valuesGroup; int64_t groupId = GroupsInsert("physical education", valuesGroup); EXPECT_GT(groupId, 0); OHOS::DataShare::DataShareValuesBucket updateValues; updateValues.Put("group_name", std::string("Language")); OHOS::DataShare::DataSharePredicates predicates; predicates.EqualTo("id", std::to_string(groupId)); std::string groups = ContactTabName::GROUPS; int updateCode = ContactUpdate(groups, updateValues, predicates); EXPECT_EQ(updateCode, 0); QueryAndExpectResult(groups, predicates, updateValues, "groups_Update_test_800"); ClearData(); } /* * @tc.number groups_Update_test_900 * @tc.name Multiple contact group updates * @tc.desc Contacts group update capability * @tc.level Level1 * @tc.size MediumTest * @tc.type Function */ HWTEST_F(ContactGroupTest, groups_Update_test_900, testing::ext::TestSize.Level1) { HILOG_INFO("--- groups_Update_test_900 is staring! ---"); OHOS::DataShare::DataShareValuesBucket valuesGroupOne; int64_t groupIdOne = GroupsInsert("Develop a group", valuesGroupOne); EXPECT_GT(groupIdOne, 0); OHOS::DataShare::DataShareValuesBucket valuesGroupTwo; int64_t groupIdTwo = GroupsInsert("Development Group 2", valuesGroupTwo); EXPECT_GT(groupIdTwo, 0); OHOS::DataShare::DataShareValuesBucket valuesGroupThree; int64_t groupIdThree = GroupsInsert("Development three groups", valuesGroupThree); EXPECT_GT(groupIdThree, 0); OHOS::DataShare::DataShareValuesBucket updateValues; updateValues.Put("group_name", std::string("Develop a group")); OHOS::DataShare::DataSharePredicates predicates; predicates.EqualTo("id", std::to_string(groupIdOne)); std::string groups = ContactTabName::GROUPS; int updateCode = ContactUpdate(groups, updateValues, predicates); EXPECT_EQ(updateCode, 0); QueryAndExpectResult(groups, predicates, updateValues, "groups_Update_test_900"); updateValues.Clear(); updateValues.Put("group_name", std::string("Development Second Group")); OHOS::DataShare::DataSharePredicates predicates2; predicates2.EqualTo("id", std::to_string(groupIdTwo)); updateCode = ContactUpdate(groups, updateValues, predicates2); EXPECT_EQ(updateCode, 0); QueryAndExpectResult(groups, predicates2, updateValues, "groups_Update_test_900"); updateValues.Clear(); updateValues.Put("group_name", std::string("Develop three groups")); OHOS::DataShare::DataSharePredicates predicates3; predicates3.EqualTo("id", std::to_string(groupIdThree)); updateCode = ContactUpdate(groups, updateValues, predicates3); EXPECT_EQ(updateCode, 0); QueryAndExpectResult(groups, predicates3, updateValues, "groups_Update_test_900"); ClearData(); } /* * @tc.number groups_Update_test_1000 * @tc.name Update a full field data of the groups table and verify whether the update is successful * @tc.desc Support all groups update capability * @tc.level Level1 * @tc.size MediumTest * @tc.type Function */ HWTEST_F(ContactGroupTest, groups_Update_test_1000, testing::ext::TestSize.Level1) { HILOG_INFO("-----groups_Update_test_1000 is starting!-----"); std::vector columns; std::vector columnsInt; std::vector columnsStr; std::string groups = ContactTabName::GROUPS; GetAllGroupsColumns(columnsInt, columnsStr); OHOS::DataShare::DataShareValuesBucket valuesBucket = GetAllColumnsValues(columnsInt, columnsStr); int groupId = GroupsInsertValues(valuesBucket); EXPECT_GT(groupId, 0); MergeColumns(columns, columnsInt, columnsStr); OHOS::DataShare::DataSharePredicates predicates; predicates.EqualTo("id", std::to_string(groupId)); std::shared_ptr resultSetOne = ContactQuery(groups, columns, predicates); CheckResultSet(valuesBucket, resultSetOne, "groups_Update_test_1000"); OHOS::DataShare::DataShareValuesBucket upDateValuesBucket = GetAllColumnsValues(columnsInt, columnsStr); int upDateCode = ContactUpdate(groups, upDateValuesBucket, predicates); EXPECT_EQ(upDateCode, 0); std::shared_ptr resultSet = ContactQuery(groups, columns, predicates); // resultSet count 1 int rowCount = -1; resultSet->GetRowCount(rowCount); EXPECT_EQ(1, rowCount); CheckResultSet(upDateValuesBucket, resultSet, "groups_Update_test_1000"); ClearData(); } /* * @tc.number abnormal_groups_Insert_test_1100 * @tc.name An incorrect field or table name was passed in when inserting a group * @tc.desc Exception use case * @tc.level Level1 * @tc.size MediumTest * @tc.type Function */ HWTEST_F(ContactGroupTest, abnormal_groups_Insert_test_1100, testing::ext::TestSize.Level1) { OHOS::Uri uriGroups(ContactsUri::GROUPS); OHOS::Uri errorUri(ContactsUri::GROUPS_ERROR); OHOS::DataShare::DataShareValuesBucket groupValues; groupValues.Put("group_names", "Board of Directors"); int64_t groupId = contactsDataAbility.Insert(uriGroups, groupValues); EXPECT_EQ(groupId, -1); groupValues.Clear(); groupValues.Put("group_name", "Board of Directors"); groupId = contactsDataAbility.Insert(errorUri, groupValues); EXPECT_EQ(groupId, -1); std::vector columns; OHOS::DataShare::DataSharePredicates predicates; predicates.EqualTo("group_name", "Board of Directors"); std::string groups = ContactTabName::GROUPS; std::shared_ptr resultSet = ContactQuery(groups, columns, predicates); int rowCount = 0; resultSet->GetRowCount(rowCount); EXPECT_EQ(0, rowCount); ClearData(); } /* * @tc.number abnormal_groups_Delete_test_1200 * @tc.name When deleting a group, pass in non-existent fields, field values, and table names * @tc.desc Exception use case * @tc.level Level1 * @tc.size MediumTest * @tc.type Function */ HWTEST_F(ContactGroupTest, abnormal_groups_Delete_test_1200, testing::ext::TestSize.Level1) { OHOS::Uri errorUri(ContactsUri::GROUPS_ERROR); OHOS::DataShare::DataShareValuesBucket values; int64_t groupId = GroupsInsert("Board of Directors 2", values); HILOG_INFO("abnormal_groups_Delete_test_1200: groupId = %{public}ld", groupId); EXPECT_GT(groupId, 0); OHOS::DataShare::DataSharePredicates predicates; predicates.EqualTo("ids", std::to_string(groupId)); std::string groups = ContactTabName::GROUPS; int deleteCode = ContactDelete(groups, predicates); HILOG_INFO("abnormal_groups_Delete_test_1200: deleteCode = %{public}d", deleteCode); EXPECT_EQ(deleteCode, -1); std::vector columns; OHOS::DataShare::DataSharePredicates predicates2; predicates2.EqualTo("id", std::to_string(groupId)); std::shared_ptr resultSet = ContactQuery(groups, columns, predicates2); int rowCount = 0; resultSet->GetRowCount(rowCount); EXPECT_EQ(1, rowCount); OHOS::DataShare::DataSharePredicates predicates3; predicates3.EqualTo("id", std::to_string(groupId)); deleteCode = contactsDataAbility.Delete(errorUri, predicates3); HILOG_INFO("abnormal_groups_Delete_test_1200: deleteCode = %{public}d", deleteCode); EXPECT_EQ(deleteCode, -1); std::shared_ptr resultSetTwo = ContactQuery(groups, columns, predicates3); int rowCountTwo = 0; resultSetTwo->GetRowCount(rowCountTwo); EXPECT_EQ(1, rowCountTwo); OHOS::DataShare::DataSharePredicates predicates4; predicates4.EqualTo("id", "10000000"); deleteCode = ContactDelete(groups, predicates4); EXPECT_EQ(deleteCode, 0); ClearData(); } /* * @tc.number abnormal_groups_Query_test_1300 * @tc.name When querying a group, pass in non-existent fields, field values, and table names * @tc.desc Exception use case * @tc.level Level1 * @tc.size MediumTest * @tc.type Function */ HWTEST_F(ContactGroupTest, abnormal_groups_Query_test_1300, testing::ext::TestSize.Level1) { std::string tag("abnormal_groups_Query_test_1300"); OHOS::Uri errorUri(ContactsUri::GROUPS_ERROR); std::string groups = ContactTabName::GROUPS; std::vector columns; columns.push_back("id"); columns.push_back("group_name"); OHOS::DataShare::DataSharePredicates predicates; predicates.GreaterThan("ids", "0"); std::shared_ptr resultSetOne = ContactQuery(groups, columns, predicates); int rowCountOne = 0; resultSetOne->GetRowCount(rowCountOne); EXPECT_EQ(-1, rowCountOne); OHOS::DataShare::DataSharePredicates predicates2; predicates2.EqualTo("id", "10000000"); std::shared_ptr resultSetTwo = ContactQuery(groups, columns, predicates2); int rowCountTwo = 0; resultSetTwo->GetRowCount(rowCountTwo); EXPECT_EQ(0, rowCountTwo); OHOS::DataShare::DataSharePredicates predicates3; predicates3.GreaterThan("id", "0"); std::shared_ptr resultSetThree = contactsDataAbility.Query(errorUri, predicates3, columns); EXPECT_EQ(resultSetThree, nullptr); ClearData(); } /* * @tc.number abnormal_groups_Update_test_1400 * @tc.name When modifying a group, pass in non-existent fields, field values, and table names * @tc.desc Exception use case * @tc.level Level1 * @tc.size MediumTest * @tc.type Function */ HWTEST_F(ContactGroupTest, abnormal_groups_Update_test_1400, testing::ext::TestSize.Level1) { OHOS::Uri errorUri(ContactsUri::GROUPS_ERROR); OHOS::DataShare::DataShareValuesBucket valuesInsert; int64_t groupId = GroupsInsert("Board of Directors", valuesInsert); HILOG_INFO("abnormal_groups_Update_test_1400: groupId = %{public}ld", groupId); EXPECT_GT(groupId, 0); OHOS::DataShare::DataShareValuesBucket updateValues; updateValues.Put("group_names", "Develop a group"); OHOS::DataShare::DataSharePredicates predicates; predicates.EqualTo("id", std::to_string(groupId)); std::string groups = ContactTabName::GROUPS; int updateCode = ContactUpdate(groups, updateValues, predicates); HILOG_INFO("abnormal_groups_Update_test_1400: updateCode = %{public}d", updateCode); EXPECT_EQ(updateCode, -1); QueryAndExpectResult(groups, predicates, valuesInsert, "abnormal_groups_Update_test_1400"); updateValues.Clear(); updateValues.Put("group_name", "Develop a group"); updateCode = contactsDataAbility.Update(errorUri, predicates, updateValues); HILOG_INFO("abnormal_groups_Update_test_1400: updateCode = %{public}d", updateCode); EXPECT_EQ(updateCode, -1); QueryAndExpectResult(groups, predicates, valuesInsert, "abnormal_groups_Update_test_1400"); OHOS::DataShare::DataSharePredicates predicates2; predicates2.EqualTo("id", "10000000"); updateCode = ContactUpdate(groups, updateValues, predicates2); EXPECT_EQ(updateCode, 0); ClearData(); } } // namespace Test } // namespace Contacts