• 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 #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 }