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