# Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
# For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
import pytest
from harness.interface.defs import status
import copy
import time
@pytest.mark.service_desktop_test
@pytest.mark.usefixtures("phone_unlocked")
def test_calendar(harness):
# add events
add_body = {
"calendar_events":[
{
"UID":"",
"SUMMARY":"Test1",
"DTSTART":"20200129T123600",
"DTEND":"20200129T124600",
"RRULE":{
"COUNT":"0",
"FREQ":"",
"INTERVAL":"0"
},
"VALARM":{
"ACTION":"",
"TRIGGER":""
},
"provider":{
"iCalUid":"",
"id":"",
"type":""
}
}
]
}
UIDS = []
ret = harness.endpoint_request("events", "put", add_body)
assert ret["status"] == status["NoContent"]
UIDS.insert(0,ret["body"]["UID"])
event_count = 15
for new_event_counter in range(2,event_count+1):
new_event = copy.deepcopy(add_body)
new_event["calendar_events"][0]["SUMMARY"] = "Test" + str(new_event_counter)
ret = harness.endpoint_request("events", "put", new_event)
assert ret["status"] == status["NoContent"]
UIDS.insert(new_event_counter-1,ret["body"]["UID"])
# get events limit < pageSize - pagination not used
limit = 2
offset= 2
get_body = {"limit": limit, "offset": offset}
ret = harness.endpoint_request("events", "get", get_body)
assert ret["status"] == status["OK"]
# get events limit > pageSize - pagination used - basic scenario
limit = 12
offset= 1
get_body = {"limit": limit, "offset": offset}
ret = harness.endpoint_request("events", "get", get_body)
assert ret["status"] == status["OK"]
# get events limit > pageSize - pagination used - get all events
count = ret["body"]["totalCount"]
batch_size = 10
divider = int(count / batch_size)
reminder = count % batch_size
events = []
for i in range(divider):
body = {"limit": batch_size, "offset": batch_size*i}
ret = harness.endpoint_request("events", "get", body)
assert ret["status"] == status["OK"]
events = events + ret["body"]["calendar_events"]
body = {"limit": reminder, "offset": count-reminder}
ret = harness.endpoint_request("events", "get", body)
assert ret["status"] == status["OK"]
events = events + ret["body"]["calendar_events"]
events_length = len(events)
assert events_length
assert events_length == count
# remove all added events - clean up
for ev in range(0,event_count):
del_body = {"UID": UIDS[ev]}
ret = harness.endpoint_request("events", "del", del_body)
assert ret["status"] == status["NoContent"]