mirror of
https://github.com/b4tman/sync_ics2gcal
synced 2025-02-01 12:28:29 +00:00
type annotations - tests
This commit is contained in:
parent
9dab3c5709
commit
c41b3a4dbd
@ -1,3 +1,5 @@
|
|||||||
|
from typing import Tuple
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from sync_ics2gcal import CalendarConverter
|
from sync_ics2gcal import CalendarConverter
|
||||||
@ -26,11 +28,11 @@ LAST-MODIFIED:20180326T120235Z
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
def ics_test_cal(content):
|
def ics_test_cal(content: str) -> str:
|
||||||
return "BEGIN:VCALENDAR\r\n{}END:VCALENDAR\r\n".format(content)
|
return "BEGIN:VCALENDAR\r\n{}END:VCALENDAR\r\n".format(content)
|
||||||
|
|
||||||
|
|
||||||
def ics_test_event(content):
|
def ics_test_event(content: str) -> str:
|
||||||
return ics_test_cal("BEGIN:VEVENT\r\n{}END:VEVENT\r\n".format(content))
|
return ics_test_cal("BEGIN:VEVENT\r\n{}END:VEVENT\r\n".format(content))
|
||||||
|
|
||||||
|
|
||||||
@ -68,7 +70,7 @@ def param_events_start_end(request):
|
|||||||
return request.param
|
return request.param
|
||||||
|
|
||||||
|
|
||||||
def test_event_start_end(param_events_start_end):
|
def test_event_start_end(param_events_start_end: Tuple[str, str, str, str]):
|
||||||
(date_type, ics_str, start, end) = param_events_start_end
|
(date_type, ics_str, start, end) = param_events_start_end
|
||||||
converter = CalendarConverter()
|
converter = CalendarConverter()
|
||||||
converter.loads(ics_str)
|
converter.loads(ics_str)
|
||||||
|
@ -3,6 +3,7 @@ import hashlib
|
|||||||
import operator
|
import operator
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from random import shuffle
|
from random import shuffle
|
||||||
|
from typing import Union, List, Dict, Optional
|
||||||
|
|
||||||
import dateutil.parser
|
import dateutil.parser
|
||||||
import pytest
|
import pytest
|
||||||
@ -11,7 +12,7 @@ from pytz import timezone, utc
|
|||||||
from sync_ics2gcal import CalendarSync
|
from sync_ics2gcal import CalendarSync
|
||||||
|
|
||||||
|
|
||||||
def sha1(string):
|
def sha1(string: Union[str, bytes]) -> str:
|
||||||
if isinstance(string, str):
|
if isinstance(string, str):
|
||||||
string = string.encode('utf8')
|
string = string.encode('utf8')
|
||||||
h = hashlib.sha1()
|
h = hashlib.sha1()
|
||||||
@ -19,55 +20,57 @@ def sha1(string):
|
|||||||
return h.hexdigest()
|
return h.hexdigest()
|
||||||
|
|
||||||
|
|
||||||
def gen_events(start, stop, start_time, no_time=False):
|
def gen_events(start: int,
|
||||||
|
stop: int,
|
||||||
|
start_time: Union[datetime.datetime, datetime.date],
|
||||||
|
no_time: bool = False) -> List[Dict[str, Union[str, Dict[str, str]]]]:
|
||||||
if no_time:
|
if no_time:
|
||||||
start_time = datetime.date(
|
start_time = datetime.date(
|
||||||
start_time.year, start_time.month, start_time.day)
|
start_time.year, start_time.month, start_time.day)
|
||||||
duration = datetime.date(1, 1, 2) - datetime.date(1, 1, 1)
|
duration: datetime.timedelta = datetime.date(1, 1, 2) - datetime.date(1, 1, 1)
|
||||||
date_key = "date"
|
date_key: str = "date"
|
||||||
suff = ''
|
date_end: str = ''
|
||||||
else:
|
else:
|
||||||
start_time = utc.normalize(
|
start_time = utc.normalize(
|
||||||
start_time.astimezone(utc)).replace(tzinfo=None)
|
start_time.astimezone(utc)).replace(tzinfo=None)
|
||||||
duration = datetime.datetime(
|
duration: datetime.timedelta = datetime.datetime(1, 1, 1, 2) - datetime.datetime(1, 1, 1, 1)
|
||||||
1, 1, 1, 2) - datetime.datetime(1, 1, 1, 1)
|
date_key: str = "dateTime"
|
||||||
date_key = "dateTime"
|
date_end: str = 'Z'
|
||||||
suff = 'Z'
|
|
||||||
|
|
||||||
result = []
|
result: List[Dict[str, Union[str, Dict[str, str]]]] = []
|
||||||
for i in range(start, stop):
|
for i in range(start, stop):
|
||||||
event_start = start_time + (duration * i)
|
event_start = start_time + (duration * i)
|
||||||
event_end = event_start + duration
|
event_end = event_start + duration
|
||||||
|
|
||||||
updated = event_start
|
updated: Union[datetime.datetime, datetime.date] = event_start
|
||||||
if no_time:
|
if no_time:
|
||||||
updated = datetime.datetime(
|
updated = datetime.datetime(
|
||||||
updated.year, updated.month, updated.day, 0, 0, 0, 1, tzinfo=utc)
|
updated.year, updated.month, updated.day, 0, 0, 0, 1, tzinfo=utc)
|
||||||
|
|
||||||
event = {
|
event: Dict[str, Union[str, Dict[str, str]]] = {
|
||||||
'summary': 'test event __ {}'.format(i),
|
'summary': 'test event __ {}'.format(i),
|
||||||
'location': 'la la la {}'.format(i),
|
'location': 'la la la {}'.format(i),
|
||||||
'description': 'test TEST -- test event {}'.format(i),
|
'description': 'test TEST -- test event {}'.format(i),
|
||||||
"iCalUID": "{}@test.com".format(sha1("test - event {}".format(i))),
|
"iCalUID": "{}@test.com".format(sha1("test - event {}".format(i))),
|
||||||
"updated": updated.isoformat() + 'Z',
|
"updated": updated.isoformat() + 'Z',
|
||||||
"created": updated.isoformat() + 'Z'
|
"created": updated.isoformat() + 'Z',
|
||||||
|
'start': {date_key: event_start.isoformat() + date_end},
|
||||||
|
'end': {date_key: event_end.isoformat() + date_end}
|
||||||
}
|
}
|
||||||
event['start'] = {date_key: event_start.isoformat() + suff}
|
|
||||||
event['end'] = {date_key: event_end.isoformat() + suff}
|
|
||||||
result.append(event)
|
result.append(event)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def gen_list_to_compare(start, stop):
|
def gen_list_to_compare(start: int, stop: int) -> List[Dict[str, str]]:
|
||||||
result = []
|
result: List[Dict[str, str]] = []
|
||||||
for i in range(start, stop):
|
for i in range(start, stop):
|
||||||
result.append({'iCalUID': 'test{:06d}'.format(i)})
|
result.append({'iCalUID': 'test{:06d}'.format(i)})
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def get_start_date(event):
|
def get_start_date(event: Dict[str, Union[str, Dict[str, str]]]) -> Union[datetime.datetime, datetime.date]:
|
||||||
event_start = event['start']
|
event_start: Dict[str, str] = event['start']
|
||||||
start_date = None
|
start_date: Optional[str] = None
|
||||||
is_date = False
|
is_date = False
|
||||||
if 'date' in event_start:
|
if 'date' in event_start:
|
||||||
start_date = event_start['date']
|
start_date = event_start['date']
|
||||||
@ -113,7 +116,7 @@ def test_compare():
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("no_time", [True, False], ids=['date', 'dateTime'])
|
@pytest.mark.parametrize("no_time", [True, False], ids=['date', 'dateTime'])
|
||||||
def test_filter_events_by_date(no_time):
|
def test_filter_events_by_date(no_time: bool):
|
||||||
msk = timezone('Europe/Moscow')
|
msk = timezone('Europe/Moscow')
|
||||||
now = utc.localize(datetime.datetime.utcnow())
|
now = utc.localize(datetime.datetime.utcnow())
|
||||||
msk_now = msk.normalize(now.astimezone(msk))
|
msk_now = msk.normalize(now.astimezone(msk))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user