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 }
61 }
62
63 HWTEST_F(EventAttendeeTest, AddEventWithOneAttendee, testing::ext::TestSize.Level1)
64 {
65 Event event;
66 string title = "AddEventWithOneAttendee";
67 event.title = title;
68 vector<Attendee> testAttendees {
69 {"test_attendee_name", "test_attendee@abc.com", ORGANIZER},
70 {"test_attendee_name1", "test_attendee1@abc.com", PARTICIPANT},
71 {"test_attendee_name2", "test_attendee2@abc.com", PARTICIPANT}
72 };
73 event.attendees = testAttendees;
74 auto eventId = calendar->AddEvent(event);
75 ASSERT_NE(eventId, 0);
76 auto events = calendar->GetEvents(FilterByTitle("AddEventWithOneAttendee"), {});
77 ASSERT_EQ(events.size(), 1);
78 auto resultEvent = events.at(0);
79 EXPECT_EQ(resultEvent.title.value(), title);
80 CompareAttendeeVec(resultEvent.attendees, testAttendees);
81 }
82
83 HWTEST_F(EventAttendeeTest, DelEventWithAttendee, testing::ext::TestSize.Level1)
84 {
85 Event event1;
86 string title1 = "DelEventWithAttendee1";
87 event1.title = title1;
88 Event event2;
89 string title2 = "DelEventWithAttendee2";
90 event2.title = title2;
91 vector<Attendee> testAttendees {
92 {"test_attendee_name", "test_attendee@abc.com", ORGANIZER},
93 {"test_attendee_name1", "test_attendee1@abc.com", PARTICIPANT},
94 {"test_attendee_name2", "test_attendee2@abc.com", PARTICIPANT}
95 };
96 event1.attendees = testAttendees;
97 event2.attendees = testAttendees;
98 auto eventId1 = calendar->AddEvent(event1);
99 ASSERT_NE(eventId1, 0);
100 auto eventId2 = calendar->AddEvent(event2);
101 ASSERT_NE(eventId2, 0);
102 auto ret = calendar->DeleteEvent(eventId1);
103 ASSERT_EQ(ret, 1);
104 auto events = calendar->GetEvents(FilterById({eventId2}), {});
105 ASSERT_EQ(events.size(), 1);
106 auto resultEvent = events.at(0);
107 ASSERT_EQ(resultEvent.title.value(), title2);
108 CompareAttendeeVec(resultEvent.attendees, testAttendees);
109 }
110
111 HWTEST_F(EventAttendeeTest, UpdateEventWithAttendee, testing::ext::TestSize.Level1)
112 {
113 Event event;
114 vector<Attendee> testAttendees {
115 {"test_attendee_name", "test_attendee@abc.com", ORGANIZER},
116 {"test_attendee_name1", "test_attendee1@abc.com", PARTICIPANT},
117 {"test_attendee_name2", "test_attendee2@abc.com", PARTICIPANT}
118 };
119 event.attendees = testAttendees;
120 auto eventId = calendar->AddEvent(event);
121 ASSERT_NE(eventId, 0);
122 auto events = calendar->GetEvents(FilterById({eventId}), {});
123 ASSERT_EQ(events.size(), 1);
124 auto resultEvent = events.at(0);
125 ASSERT_THAT(resultEvent.attendees, testing::ElementsAreArray(testAttendees));
126 vector<Attendee> newTestAttendees {
127 {"test_attendee_name_new", "test_attendee@abc.com", ORGANIZER},
128 {"test_attendee_name_new1", "test_attendee1@abc.com", PARTICIPANT},
129 {"test_attendee_name_new2", "test_attendee2@abc.com", PARTICIPANT}
130 };
131 resultEvent.attendees = newTestAttendees;
132 calendar->UpdateEvent(resultEvent);
133 events = calendar->GetEvents(FilterById({eventId}), {});
134 ASSERT_EQ(events.size(), 1);
135 resultEvent = events.at(0);
136 CompareAttendeeVec(resultEvent.attendees, newTestAttendees);
137 }
138
139 }