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
23 namespace OHOS::CalendarApi::Native {
24 const std::string TEST_NAME = "EventAttendeeTest";
25 static CalendarAccount account {
26 TEST_NAME,
27 "local",
28 "displayName_EventAttendeeTest"
29 };
30 class EventAttendeeTest : public testing::Test {
31 public:
SetUpTestSuite(void)32 static void SetUpTestSuite(void)
33 {
34 LOG_INFO("CreateCalendar");
35 calendar = CalendarManager::GetInstance().CreateCalendar(account);
36 ASSERT_TRUE(calendar != nullptr);
37 LOG_INFO("SetUpTestCase SUCCESS");
38 }
39
TearDownTestSuite(void)40 static void TearDownTestSuite(void)
41 {
42 LOG_INFO("DeleteCalendar");
43 auto ret = CalendarManager::GetInstance().DeleteCalendar(*calendar.get());
44 ASSERT_TRUE(ret);
45 LOG_INFO("TearDownTestSuite SUCCESS");
46 }
SetUp()47 void SetUp() {};
TearDown()48 void TearDown() {};
49 static std::shared_ptr<Calendar> calendar;
50 };
51
52 std::shared_ptr<Calendar> EventAttendeeTest::calendar = nullptr;
53
CompareAttendeeVec(const vector<Attendee> & v1,const vector<Attendee> & v2)54 void CompareAttendeeVec(const vector<Attendee> &v1, const vector<Attendee> &v2)
55 {
56 ASSERT_EQ(v1.size(), v2.size());
57 for (size_t i = 0; i < v1.size(); ++i) {
58 EXPECT_EQ(v1[i].name, v2[i].name);
59 EXPECT_EQ(v1[i].email, v2[i].email);
60 EXPECT_EQ(v1[i].role, v2[i].role);
61 EXPECT_EQ(v1[i].status, v2[i].status);
62 EXPECT_EQ(v1[i].type, v2[i].type);
63 }
64 }
65
66 HWTEST_F(EventAttendeeTest, AddEventWithOneAttendee, testing::ext::TestSize.Level1)
67 {
68 Event event;
69 string title = "AddEventWithOneAttendee";
70 event.title = title;
71 vector<Attendee> testAttendees {
72 {"test_attendee_name", "test_attendee@abc.com", ORGANIZER, UNKNOWN, REQUIRED},
73 {"test_attendee_name1", "test_attendee1@abc.com", PARTICIPANT, TENTATIVE, OPTIONAL},
74 {"test_attendee_name2", "test_attendee2@abc.com", PARTICIPANT, ACCEPTED, OPTIONAL},
75 {"test_attendee_name3", "test_attendee3@abc.com", PARTICIPANT, DECLINED, OPTIONAL},
76 {"test_attendee_name4", "test_attendee4@abc.com", PARTICIPANT, UNRESPONSIVE, RESOURCE}
77 };
78 event.attendees = testAttendees;
79 auto eventId = calendar->AddEvent(event);
80 ASSERT_NE(eventId, 0);
81 auto events = calendar->GetEvents(FilterByTitle("AddEventWithOneAttendee"), {});
82 ASSERT_EQ(events.size(), 1);
83 auto resultEvent = events.at(0);
84 EXPECT_EQ(resultEvent.title.value(), title);
85 CompareAttendeeVec(resultEvent.attendees, testAttendees);
86 }
87
88 HWTEST_F(EventAttendeeTest, DelEventWithAttendee, testing::ext::TestSize.Level1)
89 {
90 Event event1;
91 string title1 = "DelEventWithAttendee1";
92 event1.title = title1;
93 Event event2;
94 string title2 = "DelEventWithAttendee2";
95 event2.title = title2;
96 vector<Attendee> testAttendees {
97 {"test_attendee_name", "test_attendee@abc.com", ORGANIZER, UNKNOWN, REQUIRED},
98 {"test_attendee_name1", "test_attendee1@abc.com", PARTICIPANT, TENTATIVE, OPTIONAL},
99 {"test_attendee_name2", "test_attendee2@abc.com", PARTICIPANT, ACCEPTED, OPTIONAL},
100 {"test_attendee_name3", "test_attendee3@abc.com", PARTICIPANT, DECLINED, OPTIONAL},
101 {"test_attendee_name4", "test_attendee4@abc.com", PARTICIPANT, UNRESPONSIVE, RESOURCE}
102 };
103 event1.attendees = testAttendees;
104 event2.attendees = testAttendees;
105 auto eventId1 = calendar->AddEvent(event1);
106 ASSERT_NE(eventId1, 0);
107 auto eventId2 = calendar->AddEvent(event2);
108 ASSERT_NE(eventId2, 0);
109 auto ret = calendar->DeleteEvent(eventId1);
110 ASSERT_EQ(ret, 1);
111 auto events = calendar->GetEvents(FilterById({eventId2}), {});
112 ASSERT_EQ(events.size(), 1);
113 auto resultEvent = events.at(0);
114 ASSERT_EQ(resultEvent.title.value(), title2);
115 CompareAttendeeVec(resultEvent.attendees, testAttendees);
116 }
117
118 HWTEST_F(EventAttendeeTest, UpdateEventWithAttendee, testing::ext::TestSize.Level1)
119 {
120 Event event;
121 vector<Attendee> testAttendees {
122 {"test_attendee_name", "test_attendee@abc.com", ORGANIZER, UNKNOWN, REQUIRED},
123 {"test_attendee_name1", "test_attendee1@abc.com", PARTICIPANT, TENTATIVE, OPTIONAL},
124 {"test_attendee_name2", "test_attendee2@abc.com", PARTICIPANT, ACCEPTED, OPTIONAL},
125 {"test_attendee_name3", "test_attendee3@abc.com", PARTICIPANT, DECLINED, OPTIONAL},
126 {"test_attendee_name4", "test_attendee4@abc.com", PARTICIPANT, UNRESPONSIVE, RESOURCE}
127 };
128 event.attendees = testAttendees;
129 auto eventId = calendar->AddEvent(event);
130 ASSERT_NE(eventId, 0);
131 auto events = calendar->GetEvents(FilterById({eventId}), {});
132 ASSERT_EQ(events.size(), 1);
133 auto resultEvent = events.at(0);
134 ASSERT_THAT(resultEvent.attendees, testing::ElementsAreArray(testAttendees));
135 vector<Attendee> newTestAttendees {
136 {"test_attendee_name", "test_attendee@abc.com", ORGANIZER, UNKNOWN, REQUIRED},
137 {"test_attendee_name1", "test_attendee1@abc.com", PARTICIPANT, TENTATIVE, OPTIONAL},
138 {"test_attendee_name2", "test_attendee2@abc.com", PARTICIPANT, ACCEPTED, OPTIONAL},
139 {"test_attendee_name3", "test_attendee3@abc.com", PARTICIPANT, DECLINED, OPTIONAL},
140 {"test_attendee_name4", "test_attendee4@abc.com", PARTICIPANT, UNRESPONSIVE, RESOURCE}
141 };
142 resultEvent.attendees = newTestAttendees;
143 calendar->UpdateEvent(resultEvent);
144 events = calendar->GetEvents(FilterById({eventId}), {});
145 ASSERT_EQ(events.size(), 1);
146 resultEvent = events.at(0);
147 CompareAttendeeVec(resultEvent.attendees, newTestAttendees);
148 }
149
150 }