1 /* 2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef VOICEMAILABILITY_TEST_H 17 #define VOICEMAILABILITY_TEST_H 18 19 #include "base_test.h" 20 #include "test_common.h" 21 22 namespace Contacts { 23 namespace Test { 24 namespace Lock { 25 std::mutex voicemailMtx_; 26 } 27 28 class VoicemailAsync { 29 public: 30 OHOS::DataShare::DataShareValuesBucket values; 31 std::map<int, OHOS::DataShare::DataShareValuesBucket> result; 32 OHOS::DataShare::DataShareValuesBucket updateValues; 33 int predicatesId; 34 std::vector<std::shared_ptr<OHOS::DataShare::DataShareResultSet>> resultSet; 35 std::vector<int64_t> predicatesQueryId; 36 int predicatesDeleteId; VoicemailAsync(OHOS::DataShare::DataShareValuesBucket &values, std::map<int, OHOS::DataShare::DataShareValuesBucket> &result)37 VoicemailAsync(OHOS::DataShare::DataShareValuesBucket &values, std::map<int, 38 OHOS::DataShare::DataShareValuesBucket> &result) 39 { 40 this->values = values; 41 this->result = result; 42 this->predicatesId = -1; 43 this->predicatesDeleteId = -1; 44 } VoicemailAsync(OHOS::DataShare::DataShareValuesBucket &updateValues, int &predicatesId)45 VoicemailAsync(OHOS::DataShare::DataShareValuesBucket &updateValues, int &predicatesId) 46 { 47 this->updateValues = updateValues; 48 this->predicatesId = predicatesId; 49 this->predicatesDeleteId = -1; 50 } 51 VoicemailAsync(std::vector<std::shared_ptr<OHOS::DataShare::DataShareResultSet>> resultSet, std::vector<int64_t> predicatesQueryId)52 VoicemailAsync(std::vector<std::shared_ptr<OHOS::DataShare::DataShareResultSet>> resultSet, 53 std::vector<int64_t> predicatesQueryId) 54 { 55 this->resultSet = resultSet; 56 this->predicatesQueryId = predicatesQueryId; 57 this->predicatesId = -1; 58 this->predicatesDeleteId = -1; 59 } 60 VoicemailAsync(int &predicatesDeleteId)61 explicit VoicemailAsync(int &predicatesDeleteId) 62 { 63 this->predicatesId = -1; 64 this->predicatesDeleteId = predicatesDeleteId; 65 } Insert()66 void Insert() 67 { 68 OHOS::AbilityRuntime::VoiceMailAbility voicemailAbility; 69 OHOS::Uri voicemailUri(VoicemailUri::VOICEMAIL); 70 int64_t code = voicemailAbility.Insert(voicemailUri, this->values); 71 int callLogId = code; 72 EXPECT_GT(callLogId, 0); 73 Lock::voicemailMtx_.lock(); 74 this->result.insert(std::map<int, OHOS::DataShare::DataShareValuesBucket>::value_type(callLogId, this->values)); 75 Lock::voicemailMtx_.unlock(); 76 HILOG_INFO("--- VoicemailAsync insert---%{public}s", VoicemailUri::VOICEMAIL); 77 } Update()78 void Update() 79 { 80 OHOS::Uri voicemailUri(VoicemailUri::VOICEMAIL); 81 OHOS::DataShare::DataSharePredicates predicates; 82 predicates.EqualTo("id", std::to_string(this->predicatesId)); 83 OHOS::AbilityRuntime::VoiceMailAbility voicemailAbility; 84 int resultCode = voicemailAbility.Update(voicemailUri, predicates, this->updateValues); 85 EXPECT_EQ(0, resultCode); 86 HILOG_INFO("--- VoicemailAsync Update---%{public}s", VoicemailUri::VOICEMAIL); 87 } Query()88 void Query() 89 { 90 OHOS::Uri voicemailUri(VoicemailUri::VOICEMAIL); 91 OHOS::DataShare::DataSharePredicates predicates; 92 int size = this->predicatesQueryId.size(); 93 for (int i = 0; i < size; i++) { 94 predicates.EqualTo("id", std::to_string(this->predicatesQueryId[i])); 95 if (i < size - 1) { 96 predicates.Or(); 97 } 98 } 99 OHOS::AbilityRuntime::VoiceMailAbility voicemailAbility; 100 std::vector<std::string> columns; 101 std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = 102 voicemailAbility.Query(voicemailUri, predicates, columns); 103 Lock::voicemailMtx_.lock(); 104 this->resultSet.push_back(resultSet); 105 Lock::voicemailMtx_.unlock(); 106 HILOG_INFO("--- VoicemailAsync Query---%{public}s", VoicemailUri::VOICEMAIL); 107 } 108 Delete()109 void Delete() 110 { 111 OHOS::Uri voicemailUri(VoicemailUri::VOICEMAIL); 112 OHOS::DataShare::DataSharePredicates predicates; 113 predicates.EqualTo("id", std::to_string(this->predicatesDeleteId)); 114 OHOS::AbilityRuntime::VoiceMailAbility voicemailAbility; 115 int resultCode = voicemailAbility.Delete(voicemailUri, predicates); 116 HILOG_INFO("--- VoicemailAsync Delete---%{public}s", VoicemailUri::VOICEMAIL); 117 EXPECT_EQ(0, resultCode); 118 } 119 }; 120 121 class VoicemailAbilityTest : public BaseTest { 122 public: 123 VoicemailAbilityTest(); 124 ~VoicemailAbilityTest(); 125 int64_t VoicemailStatusInsert(std::string phoneNumber, int status); 126 int VoicemailUpdate(OHOS::DataShare::DataShareValuesBucket updateValues, 127 OHOS::DataShare::DataSharePredicates predicates); 128 int VoicemailDelete(OHOS::DataShare::DataSharePredicates predicates); 129 std::shared_ptr<OHOS::DataShare::DataShareResultSet> VoicemailQuery( 130 std::vector<std::string> columns, OHOS::DataShare::DataSharePredicates predicates); 131 OHOS::DataShare::DataShareValuesBucket GetVoiceMailValues( 132 int columnsStart, int columnsEnd, std::vector<std::string> &columns); 133 void GetVoiceMailValuesColumn(std::vector<std::string> &columns); 134 int VoicemailInsertValues(OHOS::DataShare::DataShareValuesBucket &values); 135 int64_t VoicemailInsertValue(std::string displayName, OHOS::DataShare::DataShareValuesBucket &values); 136 void CheckResultSetBatch(OHOS::DataShare::DataSharePredicates predicates, std::vector<std::string> &columns, 137 OHOS::DataShare::DataShareValuesBucket values, std::string testName); 138 void ClearVoicemail(); 139 }; 140 } // namespace Test 141 } // namespace Contacts 142 #endif // VOICEMAILABILITY_TEST_H 143