• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
16 #include <gtest/gtest.h>
17 #include <memory>
18 #include <variant>
19 #include "native_calendar.h"
20 #include "calendar_log.h"
21 #include "native_calendar_manager.h"
22 
23 namespace OHOS::CalendarApi::Native {
24 class CalendarTest : public testing::Test {
25 public:
26     /* SetUpTestCase:The preset action of the test suite is executed before the first TestCase */
27     static void SetUpTestSuite(void);
28 
29     /* TearDownTestCase:The test suite cleanup action is executed after the last TestCase */
30     static void TearDownTestSuite(void);
31     /* SetUp:Execute before each test case */
SetUp()32     void SetUp() {};
33 
34     /* TearDown:Execute after each test case */
TearDown()35     void TearDown() {};
36     static std::shared_ptr<Calendar> calendar;
37 };
38 
39 std::shared_ptr<Calendar> CalendarTest::calendar = nullptr;
40 const std::string TEST_NAME = "unit_test";
41 static CalendarAccount account {
42     TEST_NAME,
43     "local",
44     "displayName_unit_test"
45 };
46 
SetUpTestSuite(void)47 void CalendarTest::SetUpTestSuite(void)
48 {
49     calendar = CalendarManager::GetInstance().GetCalendar(account);
50     if (calendar != nullptr && calendar->GetAccount().name == TEST_NAME) {
51         CalendarManager::GetInstance().DeleteCalendar(*calendar.get());
52     }
53     calendar = CalendarManager::GetInstance().CreateCalendar(account);
54     ASSERT_TRUE(calendar != nullptr);
55     LOG_INFO("SetUpTestCase SUCCESS");
56 }
57 
TearDownTestSuite(void)58 void CalendarTest::TearDownTestSuite(void)
59 {
60     // del calendar will del all event associated
61     LOG_INFO("DeleteCalendar");
62     auto ret = CalendarManager::GetInstance().DeleteCalendar(*calendar.get());
63     ASSERT_TRUE(ret);
64     LOG_INFO("TearDownTestSuite SUCCESS");
65 }
66 
67 HWTEST_F(CalendarTest, AddEvent_test_basic, testing::ext::TestSize.Level1)
68 {
69     Event event;
70     event.title = "AddEvent_test_basic";
71     auto eventId = calendar->AddEvent(event);
72     ASSERT_NE(eventId, 0);
73     auto events = calendar->GetEvents(FilterById({eventId}), {});
74     ASSERT_FALSE(events.empty());
75 }
76 
77 HWTEST_F(CalendarTest, AddEvent_test_title_is_Chinese, testing::ext::TestSize.Level1)
78 {
79     Event event;
80     event.title = "AddEvent_test_title_is_中文";
81     auto eventId = calendar->AddEvent(event);
82     ASSERT_NE(eventId, 0);
83     auto events = calendar->GetEvents(FilterById({eventId}), {});
84     ASSERT_FALSE(events.empty());
85 }
86 
87 HWTEST_F(CalendarTest, DeleteEvent_dupilcate, testing::ext::TestSize.Level1)
88 {
89     Event event;
90     event.title = "DeleteEvent_dupilcate";
91     auto eventId = calendar->AddEvent(event);
92     ASSERT_NE(eventId, 0);
93     auto events = calendar->GetEvents(FilterById({eventId}), {});
94     ASSERT_FALSE(events.empty());
95     auto ret = calendar->DeleteEvent(eventId);
96     EXPECT_EQ(ret, true);
97     ret = calendar->DeleteEvent(eventId);
98     EXPECT_EQ(ret, false);
99 }
100 
101 HWTEST_F(CalendarTest, AddEvents_test_normal, testing::ext::TestSize.Level1)
102 {
103     const string title_1 = "AddEvents_test_normal_1";
104     const string title_2 = "AddEvents_test_normal_2";
105     Event event1;
106     event1.title = title_1;
107     Event event2;
108     event2.title = title_2;
109     auto count = calendar->AddEvents({event1, event2});
110     EXPECT_EQ(count, 2);
111     auto queryResult = calendar->GetEvents(FilterByTitle(title_1), {});
112     ASSERT_EQ(1, queryResult.size());
113     EXPECT_EQ(queryResult.at(0).title.value(), title_1);
114     queryResult = calendar->GetEvents(FilterByTitle(title_2), {});
115     ASSERT_EQ(1, queryResult.size());
116     EXPECT_EQ(queryResult.at(0).title.value(), title_2);
117 }
118 
119 HWTEST_F(CalendarTest, AddEvents_input_empty, testing::ext::TestSize.Level1)
120 {
121     auto count = calendar->AddEvents({});
122     ASSERT_EQ(count, 0);
123 }
124 
125 HWTEST_F(CalendarTest, GetEvent_test_1, testing::ext::TestSize.Level1)
126 {
127     Event event;
128     const string title = "GetEvent_test_1";
129     event.title = title;
130     event.type = EventType::Important;
131     Location testLocation { "test", 123, 456 };
132     event.location = std::make_optional<Location>(testLocation);
133     event.startTime = 17230000;
134     event.endTime = 17630000;
135     event.isAllDay = true;
136     event.attendees =  {
137         {"xiaoming", "xiaoming@abc.com"},
138         {"xiaoqiang", "test_attendee1@abc.com"},
139         {"abc", "test_attendee2@abc.com"}
140     };
141     event.timeZone = "UTC";
142     event.reminderTime = {0, 1, 2};
143     event.description = "UpdateEvent_test_2_disp";
144     const auto eventId = calendar->AddEvent(event);
145     ASSERT_NE(eventId, 0);
146     const auto events = calendar->GetEvents(FilterByTitle(title), {});
147     ASSERT_EQ(1, events.size());
148     const auto newEvent = events.at(0);
149     EXPECT_EQ(newEvent.title, event.title);
150     EXPECT_EQ(newEvent.type, event.type);
151     EXPECT_EQ(newEvent.location, event.location);
152     EXPECT_EQ(newEvent.startTime, event.startTime);
153     EXPECT_EQ(newEvent.endTime, event.endTime);
154     EXPECT_EQ(newEvent.isAllDay, event.isAllDay);
155     EXPECT_EQ(newEvent.attendees, event.attendees);
156     EXPECT_EQ(newEvent.timeZone, event.timeZone);
157     EXPECT_EQ(newEvent.reminderTime, event.reminderTime);
158     EXPECT_EQ(newEvent.description, event.description);
159 }
160 
161 HWTEST_F(CalendarTest, UpdateEvent_test_1, testing::ext::TestSize.Level1)
162 {
163     Event event;
164     event.title = "UpdateEvent_test_1";
165     auto eventId = calendar->AddEvent(event);
166     ASSERT_NE(eventId, 0);
167     auto events = calendar->GetEvents(FilterById({eventId}), {});
168     ASSERT_EQ(1, events.size());
169     auto newEvent = events.at(0);
170     string_view newTitle = "UpdateEvent_test_1_new";
171     newEvent.title = newTitle;
172     auto ret = calendar->UpdateEvent(newEvent);
173     EXPECT_EQ(ret, true);
174     events = calendar->GetEvents(FilterByTitle(newTitle), {});
175     ASSERT_EQ(1, events.size());
176     EXPECT_EQ(events.at(0).title.value(), newTitle);
177 }
178 
179 HWTEST_F(CalendarTest, UpdateEvents_test_1, testing::ext::TestSize.Level1)
180 {
181     Event event1;
182     event1.title = "UpdateEvents_test_1";
183     Event event2;
184     event2.title = "UpdateEvents_test_2";
185     auto count = calendar->AddEvents({event1, event2});
186     EXPECT_EQ(count, 2);
187 
188     auto queryResult = calendar->GetEvents(FilterByTitle("UpdateEvents_test_1"), {});
189     ASSERT_EQ(1, queryResult.size());
190 
191     auto newEvent1 = queryResult.at(0);
192     newEvent1.title = "title_test_update_1_new";
193     queryResult = calendar->GetEvents(FilterByTitle("UpdateEvents_test_2"), {});
194     ASSERT_EQ(1, queryResult.size());
195     auto newEvent2 = queryResult.at(0);
196     newEvent2.title = "title_test_update_2_new";
197     std::vector<Event> newEvents;
198     newEvents.emplace_back(newEvent1);
199     newEvents.emplace_back(newEvent2);
200     count = calendar->UpdateEvents(newEvents);
201     EXPECT_EQ(count, newEvents.size());
202     auto delRet = calendar->DeleteEvents({newEvent1.id.value(), newEvent2.id.value()});
203     ASSERT_EQ(delRet, newEvents.size());
204 }
205 
206 HWTEST_F(CalendarTest, GetConfig_default_test, testing::ext::TestSize.Level1)
207 {
208     auto config = calendar->GetConfig();
209     EXPECT_FALSE(config.enableReminder.has_value());
210     EXPECT_TRUE(std::get<0>(config.color).empty());
211 }
212 
213 HWTEST_F(CalendarTest, SetConfig_empty_param_test, testing::ext::TestSize.Level1)
214 {
215     CalendarConfig config;
216     auto ret = calendar->SetConfig(config);
217     ASSERT_TRUE(ret);
218     auto configExpect = calendar->GetConfig();
219     EXPECT_FALSE(configExpect.enableReminder.has_value());
220     EXPECT_TRUE(std::get<0>(config.color).empty());
221 }
222 
223 HWTEST_F(CalendarTest, SetConfig_with_color_test, testing::ext::TestSize.Level1)
224 {
225     CalendarConfig config;
226     config.color = 0xaabbcc;
227     config.enableReminder = false;
228     ASSERT_TRUE(calendar->SetConfig(config));
229     auto configExpect = calendar->GetConfig();
230     EXPECT_EQ(config, configExpect);
231     config.color = 0xaabbccdd;
232     config.enableReminder = true;
233     ASSERT_TRUE(calendar->SetConfig(config));
234     configExpect = calendar->GetConfig();
235     EXPECT_EQ(config, configExpect);
236 }
237 
238 }