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#ifndef VOICEMAILABILITY_TEST_H 17115cd2caSopenharmony_ci#define VOICEMAILABILITY_TEST_H 18115cd2caSopenharmony_ci 19115cd2caSopenharmony_ci#include "base_test.h" 20115cd2caSopenharmony_ci#include "test_common.h" 21115cd2caSopenharmony_ci 22115cd2caSopenharmony_cinamespace Contacts { 23115cd2caSopenharmony_cinamespace Test { 24115cd2caSopenharmony_cinamespace Lock { 25115cd2caSopenharmony_cistd::mutex voicemailMtx_; 26115cd2caSopenharmony_ci} 27115cd2caSopenharmony_ci 28115cd2caSopenharmony_ciclass VoicemailAsync { 29115cd2caSopenharmony_cipublic: 30115cd2caSopenharmony_ci OHOS::DataShare::DataShareValuesBucket values; 31115cd2caSopenharmony_ci std::map<int, OHOS::DataShare::DataShareValuesBucket> result; 32115cd2caSopenharmony_ci OHOS::DataShare::DataShareValuesBucket updateValues; 33115cd2caSopenharmony_ci int predicatesId; 34115cd2caSopenharmony_ci std::vector<std::shared_ptr<OHOS::DataShare::DataShareResultSet>> resultSet; 35115cd2caSopenharmony_ci std::vector<int64_t> predicatesQueryId; 36115cd2caSopenharmony_ci int predicatesDeleteId; 37115cd2caSopenharmony_ci VoicemailAsync(OHOS::DataShare::DataShareValuesBucket &values, std::map<int, 38115cd2caSopenharmony_ci OHOS::DataShare::DataShareValuesBucket> &result) 39115cd2caSopenharmony_ci { 40115cd2caSopenharmony_ci this->values = values; 41115cd2caSopenharmony_ci this->result = result; 42115cd2caSopenharmony_ci this->predicatesId = -1; 43115cd2caSopenharmony_ci this->predicatesDeleteId = -1; 44115cd2caSopenharmony_ci } 45115cd2caSopenharmony_ci VoicemailAsync(OHOS::DataShare::DataShareValuesBucket &updateValues, int &predicatesId) 46115cd2caSopenharmony_ci { 47115cd2caSopenharmony_ci this->updateValues = updateValues; 48115cd2caSopenharmony_ci this->predicatesId = predicatesId; 49115cd2caSopenharmony_ci this->predicatesDeleteId = -1; 50115cd2caSopenharmony_ci } 51115cd2caSopenharmony_ci 52115cd2caSopenharmony_ci VoicemailAsync(std::vector<std::shared_ptr<OHOS::DataShare::DataShareResultSet>> resultSet, 53115cd2caSopenharmony_ci std::vector<int64_t> predicatesQueryId) 54115cd2caSopenharmony_ci { 55115cd2caSopenharmony_ci this->resultSet = resultSet; 56115cd2caSopenharmony_ci this->predicatesQueryId = predicatesQueryId; 57115cd2caSopenharmony_ci this->predicatesId = -1; 58115cd2caSopenharmony_ci this->predicatesDeleteId = -1; 59115cd2caSopenharmony_ci } 60115cd2caSopenharmony_ci 61115cd2caSopenharmony_ci explicit VoicemailAsync(int &predicatesDeleteId) 62115cd2caSopenharmony_ci { 63115cd2caSopenharmony_ci this->predicatesId = -1; 64115cd2caSopenharmony_ci this->predicatesDeleteId = predicatesDeleteId; 65115cd2caSopenharmony_ci } 66115cd2caSopenharmony_ci void Insert() 67115cd2caSopenharmony_ci { 68115cd2caSopenharmony_ci OHOS::AbilityRuntime::VoiceMailAbility voicemailAbility; 69115cd2caSopenharmony_ci OHOS::Uri voicemailUri(VoicemailUri::VOICEMAIL); 70115cd2caSopenharmony_ci int64_t code = voicemailAbility.Insert(voicemailUri, this->values); 71115cd2caSopenharmony_ci int callLogId = code; 72115cd2caSopenharmony_ci EXPECT_GT(callLogId, 0); 73115cd2caSopenharmony_ci Lock::voicemailMtx_.lock(); 74115cd2caSopenharmony_ci this->result.insert(std::map<int, OHOS::DataShare::DataShareValuesBucket>::value_type(callLogId, this->values)); 75115cd2caSopenharmony_ci Lock::voicemailMtx_.unlock(); 76115cd2caSopenharmony_ci HILOG_INFO("--- VoicemailAsync insert---%{public}s", VoicemailUri::VOICEMAIL); 77115cd2caSopenharmony_ci } 78115cd2caSopenharmony_ci void Update() 79115cd2caSopenharmony_ci { 80115cd2caSopenharmony_ci OHOS::Uri voicemailUri(VoicemailUri::VOICEMAIL); 81115cd2caSopenharmony_ci OHOS::DataShare::DataSharePredicates predicates; 82115cd2caSopenharmony_ci predicates.EqualTo("id", std::to_string(this->predicatesId)); 83115cd2caSopenharmony_ci OHOS::AbilityRuntime::VoiceMailAbility voicemailAbility; 84115cd2caSopenharmony_ci int resultCode = voicemailAbility.Update(voicemailUri, predicates, this->updateValues); 85115cd2caSopenharmony_ci EXPECT_EQ(0, resultCode); 86115cd2caSopenharmony_ci HILOG_INFO("--- VoicemailAsync Update---%{public}s", VoicemailUri::VOICEMAIL); 87115cd2caSopenharmony_ci } 88115cd2caSopenharmony_ci void Query() 89115cd2caSopenharmony_ci { 90115cd2caSopenharmony_ci OHOS::Uri voicemailUri(VoicemailUri::VOICEMAIL); 91115cd2caSopenharmony_ci OHOS::DataShare::DataSharePredicates predicates; 92115cd2caSopenharmony_ci int size = this->predicatesQueryId.size(); 93115cd2caSopenharmony_ci for (int i = 0; i < size; i++) { 94115cd2caSopenharmony_ci predicates.EqualTo("id", std::to_string(this->predicatesQueryId[i])); 95115cd2caSopenharmony_ci if (i < size - 1) { 96115cd2caSopenharmony_ci predicates.Or(); 97115cd2caSopenharmony_ci } 98115cd2caSopenharmony_ci } 99115cd2caSopenharmony_ci OHOS::AbilityRuntime::VoiceMailAbility voicemailAbility; 100115cd2caSopenharmony_ci std::vector<std::string> columns; 101115cd2caSopenharmony_ci std::shared_ptr<OHOS::DataShare::DataShareResultSet> resultSet = 102115cd2caSopenharmony_ci voicemailAbility.Query(voicemailUri, predicates, columns); 103115cd2caSopenharmony_ci Lock::voicemailMtx_.lock(); 104115cd2caSopenharmony_ci this->resultSet.push_back(resultSet); 105115cd2caSopenharmony_ci Lock::voicemailMtx_.unlock(); 106115cd2caSopenharmony_ci HILOG_INFO("--- VoicemailAsync Query---%{public}s", VoicemailUri::VOICEMAIL); 107115cd2caSopenharmony_ci } 108115cd2caSopenharmony_ci 109115cd2caSopenharmony_ci void Delete() 110115cd2caSopenharmony_ci { 111115cd2caSopenharmony_ci OHOS::Uri voicemailUri(VoicemailUri::VOICEMAIL); 112115cd2caSopenharmony_ci OHOS::DataShare::DataSharePredicates predicates; 113115cd2caSopenharmony_ci predicates.EqualTo("id", std::to_string(this->predicatesDeleteId)); 114115cd2caSopenharmony_ci OHOS::AbilityRuntime::VoiceMailAbility voicemailAbility; 115115cd2caSopenharmony_ci int resultCode = voicemailAbility.Delete(voicemailUri, predicates); 116115cd2caSopenharmony_ci HILOG_INFO("--- VoicemailAsync Delete---%{public}s", VoicemailUri::VOICEMAIL); 117115cd2caSopenharmony_ci EXPECT_EQ(0, resultCode); 118115cd2caSopenharmony_ci } 119115cd2caSopenharmony_ci}; 120115cd2caSopenharmony_ci 121115cd2caSopenharmony_ciclass VoicemailAbilityTest : public BaseTest { 122115cd2caSopenharmony_cipublic: 123115cd2caSopenharmony_ci VoicemailAbilityTest(); 124115cd2caSopenharmony_ci ~VoicemailAbilityTest(); 125115cd2caSopenharmony_ci int64_t VoicemailStatusInsert(std::string phoneNumber, int status); 126115cd2caSopenharmony_ci int VoicemailUpdate(OHOS::DataShare::DataShareValuesBucket updateValues, 127115cd2caSopenharmony_ci OHOS::DataShare::DataSharePredicates predicates); 128115cd2caSopenharmony_ci int VoicemailDelete(OHOS::DataShare::DataSharePredicates predicates); 129115cd2caSopenharmony_ci std::shared_ptr<OHOS::DataShare::DataShareResultSet> VoicemailQuery( 130115cd2caSopenharmony_ci std::vector<std::string> columns, OHOS::DataShare::DataSharePredicates predicates); 131115cd2caSopenharmony_ci OHOS::DataShare::DataShareValuesBucket GetVoiceMailValues( 132115cd2caSopenharmony_ci int columnsStart, int columnsEnd, std::vector<std::string> &columns); 133115cd2caSopenharmony_ci void GetVoiceMailValuesColumn(std::vector<std::string> &columns); 134115cd2caSopenharmony_ci int VoicemailInsertValues(OHOS::DataShare::DataShareValuesBucket &values); 135115cd2caSopenharmony_ci int64_t VoicemailInsertValue(std::string displayName, OHOS::DataShare::DataShareValuesBucket &values); 136115cd2caSopenharmony_ci void CheckResultSetBatch(OHOS::DataShare::DataSharePredicates predicates, std::vector<std::string> &columns, 137115cd2caSopenharmony_ci OHOS::DataShare::DataShareValuesBucket values, std::string testName); 138115cd2caSopenharmony_ci void ClearVoicemail(); 139115cd2caSopenharmony_ci}; 140115cd2caSopenharmony_ci} // namespace Test 141115cd2caSopenharmony_ci} // namespace Contacts 142115cd2caSopenharmony_ci#endif // VOICEMAILABILITY_TEST_H 143