1/* 2 * Copyright (c) 2023 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#include <gtest/gtest.h> 16#include <gmock/gmock.h> 17#include <memory> 18#include "native_calendar.h" 19#include "calendar_log.h" 20#include "native_calendar_manager.h" 21 22 23namespace OHOS::CalendarApi::Native { 24const std::string TEST_NAME = "EventReminderTest"; 25static CalendarAccount account { 26 TEST_NAME, 27 "local", 28 "EventReminderTest" 29}; 30class EventReminderTest : public testing::Test { 31public: 32 static void SetUpTestSuite(void) 33 { 34 calendar = CalendarManager::GetInstance().CreateCalendar(account); 35 ASSERT_TRUE(calendar != nullptr); 36 LOG_INFO("SetUpTestCase SUCCESS"); 37 } 38 39 static void TearDownTestSuite(void) 40 { 41 auto ret = CalendarManager::GetInstance().DeleteCalendar(*calendar.get()); 42 ASSERT_TRUE(ret); 43 LOG_INFO("TearDownTestSuite SUCCESS"); 44 } 45 void SetUp() {}; 46 void TearDown() {}; 47 static std::shared_ptr<Calendar> calendar; 48}; 49 50std::shared_ptr<Calendar> EventReminderTest::calendar = nullptr; 51 52HWTEST_F(EventReminderTest, AddEventWithReminder, testing::ext::TestSize.Level1) 53{ 54 Event event; 55 const string title = "AddEventWithReminder"; 56 const std::vector<int> reminderTime = {0, 1, 2}; 57 event.title = title; 58 event.reminderTime = reminderTime; 59 auto eventId = calendar->AddEvent(event); 60 std::vector<string> eventKey; 61 ASSERT_NE(eventId, 0); 62 auto events = calendar->GetEvents(FilterByTitle(title), eventKey); 63 ASSERT_EQ(events.size(), 1); 64 auto resultEvent = events.at(0); 65 EXPECT_NE(resultEvent.reminderTime, std::nullopt); 66 ASSERT_THAT(resultEvent.reminderTime.value(), ::testing::ElementsAreArray(reminderTime)); 67} 68 69HWTEST_F(EventReminderTest, DelEventWithReminder, testing::ext::TestSize.Level1) 70{ 71 Event event; 72 const string title = "DelEventWithReminder"; 73 const std::vector<int> reminderTime = {0, 1, 2}; 74 event.title = title; 75 event.reminderTime = reminderTime; 76 auto eventId = calendar->AddEvent(event); 77 ASSERT_NE(eventId, 0); 78 std::vector<string> eventKey; 79 auto events = calendar->GetEvents(FilterByTitle(title), eventKey); 80 ASSERT_EQ(events.size(), 1); 81 auto resultEvent = events.at(0); 82 EXPECT_NE(resultEvent.reminderTime, std::nullopt); 83 ASSERT_THAT(resultEvent.reminderTime.value(), ::testing::ElementsAreArray(reminderTime)); 84 auto ret = calendar->DeleteEvent(eventId); 85 ASSERT_EQ(ret, 1); 86 auto reminders = calendar->GetRemindersByEventId(eventId); 87 ASSERT_EQ(reminders, std::nullopt); 88} 89 90HWTEST_F(EventReminderTest, UpdateEventWithReminder, testing::ext::TestSize.Level1) 91{ 92 Event event; 93 const string title = "UpdateEventWithReminder"; 94 const std::vector<int> reminderTime = {0, 1, 2}; 95 event.title = title; 96 event.reminderTime = reminderTime; 97 auto eventId = calendar->AddEvent(event); 98 ASSERT_NE(eventId, 0); 99 std::vector<string> eventKey; 100 auto events = calendar->GetEvents(FilterByTitle(title), eventKey); 101 ASSERT_EQ(events.size(), 1); 102 auto resultEvent = events.at(0); 103 EXPECT_NE(resultEvent.reminderTime, std::nullopt); 104 ASSERT_THAT(resultEvent.reminderTime.value(), ::testing::ElementsAreArray(reminderTime)); 105 const std::vector<int> newReminderTime = {4, 5, 6}; 106 resultEvent.reminderTime = newReminderTime; 107 auto ret = calendar->UpdateEvent(resultEvent); 108 ASSERT_EQ(ret, 1); 109 events = calendar->GetEvents(FilterByTitle(title), eventKey); 110 ASSERT_EQ(events.size(), 1); 111 auto newResultEvent = events.at(0); 112 EXPECT_NE(newResultEvent.reminderTime, std::nullopt); 113 ASSERT_THAT(newResultEvent.reminderTime.value(), ::testing::ElementsAreArray(newReminderTime)); 114} 115}