• 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     const int startTime = 12;
134     event.startTime = startTime;
135     const int endTime = 100;
136     event.endTime =  endTime;
137     event.isAllDay = true;
138     event.attendees =  {
139         {"xiaoming", "xiaoming@abc.com"},
140         {"xiaoqiang", "test_attendee1@abc.com"},
141         {"abc", "test_attendee2@abc.com"}
142     };
143     event.timeZone = "shanghai";
144     event.reminderTime = {0, 1, 2};
145     event.description = "UpdateEvent_test_2_disp";
146     const auto eventId = calendar->AddEvent(event);
147     ASSERT_NE(eventId, 0);
148     const auto events = calendar->GetEvents(FilterByTitle(title), {});
149     ASSERT_EQ(1, events.size());
150     const auto newEvent = events.at(0);
151     EXPECT_EQ(newEvent.title, event.title);
152     EXPECT_EQ(newEvent.type, event.type);
153     EXPECT_EQ(newEvent.location, event.location);
154     EXPECT_EQ(newEvent.startTime, event.startTime);
155     EXPECT_EQ(newEvent.endTime, event.endTime);
156     EXPECT_EQ(newEvent.isAllDay, event.isAllDay);
157     EXPECT_EQ(newEvent.attendees, event.attendees);
158     EXPECT_EQ(newEvent.timeZone, event.timeZone);
159     EXPECT_EQ(newEvent.reminderTime, event.reminderTime);
160     EXPECT_EQ(newEvent.description, event.description);
161 }
162 
163 HWTEST_F(CalendarTest, UpdateEvent_test_1, testing::ext::TestSize.Level1)
164 {
165     Event event;
166     event.title = "UpdateEvent_test_1";
167     auto eventId = calendar->AddEvent(event);
168     ASSERT_NE(eventId, 0);
169     auto events = calendar->GetEvents(FilterById({eventId}), {});
170     ASSERT_EQ(1, events.size());
171     auto newEvent = events.at(0);
172     string_view newTitle = "UpdateEvent_test_1_new";
173     newEvent.title = newTitle;
174     auto ret = calendar->UpdateEvent(newEvent);
175     EXPECT_EQ(ret, true);
176     events = calendar->GetEvents(FilterByTitle(newTitle), {});
177     ASSERT_EQ(1, events.size());
178     EXPECT_EQ(events.at(0).title.value(), newTitle);
179 }
180 
181 HWTEST_F(CalendarTest, UpdateEvents_test_1, testing::ext::TestSize.Level1)
182 {
183     Event event1;
184     event1.title = "UpdateEvents_test_1";
185     Event event2;
186     event2.title = "UpdateEvents_test_2";
187     auto count = calendar->AddEvents({event1, event2});
188     EXPECT_EQ(count, 2);
189 
190     auto queryResult = calendar->GetEvents(FilterByTitle("UpdateEvents_test_1"), {});
191     ASSERT_EQ(1, queryResult.size());
192 
193     auto newEvent1 = queryResult.at(0);
194     newEvent1.title = "title_test_update_1_new";
195     queryResult = calendar->GetEvents(FilterByTitle("UpdateEvents_test_2"), {});
196     ASSERT_EQ(1, queryResult.size());
197     auto newEvent2 = queryResult.at(0);
198     newEvent2.title = "title_test_update_2_new";
199     std::vector<Event> newEvents;
200     newEvents.emplace_back(newEvent1);
201     newEvents.emplace_back(newEvent2);
202     count = calendar->UpdateEvents(newEvents);
203     EXPECT_EQ(count, newEvents.size());
204     auto delRet = calendar->DeleteEvents({newEvent1.id.value(), newEvent2.id.value()});
205     ASSERT_EQ(delRet, newEvents.size());
206 }
207 
208 HWTEST_F(CalendarTest, GetConfig_default_test, testing::ext::TestSize.Level1)
209 {
210     auto config = calendar->GetConfig();
211     EXPECT_FALSE(config.enableReminder.has_value());
212     EXPECT_TRUE(std::get<0>(config.color).empty());
213 }
214 
215 HWTEST_F(CalendarTest, SetConfig_empty_param_test, testing::ext::TestSize.Level1)
216 {
217     CalendarConfig config;
218     auto ret = calendar->SetConfig(config);
219     ASSERT_TRUE(ret);
220     auto configExpect = calendar->GetConfig();
221     EXPECT_FALSE(configExpect.enableReminder.has_value());
222     EXPECT_TRUE(std::get<0>(config.color).empty());
223 }
224 
225 HWTEST_F(CalendarTest, SetConfig_with_color_test, testing::ext::TestSize.Level1)
226 {
227     CalendarConfig config;
228     config.color = 0xaabbcc;
229     config.enableReminder = false;
230     ASSERT_TRUE(calendar->SetConfig(config));
231     auto configExpect = calendar->GetConfig();
232     EXPECT_EQ(config, configExpect);
233     config.color = 0xaabbccdd;
234     config.enableReminder = true;
235     ASSERT_TRUE(calendar->SetConfig(config));
236     configExpect = calendar->GetConfig();
237     EXPECT_EQ(config, configExpect);
238 }
239 
240 }