| from unittest import TestCase | |
| from gcsa.calendar import Calendar, CalendarListEntry, NotificationType, AccessRoles | |
| from gcsa.conference import SolutionType | |
| from gcsa.reminders import EmailReminder, PopupReminder | |
| from gcsa.serializers.calendar_serializer import CalendarSerializer, CalendarListEntrySerializer | |
| TEST_TIMEZONE = 'Pacific/Fiji' | |
| TEST_ALLOWED_CONFERENCE_SOLUTION_TYPES = [SolutionType.HANGOUT, SolutionType.NAMED_HANGOUT] | |
| TEST_NOTIFICATION_TYPES = [NotificationType.EVENT_CREATION, NotificationType.EVENT_CHANGE] | |
| TEST_ACCESS_ROLE = AccessRoles.OWNER | |
| class TestCalendar(TestCase): | |
| def test_init(self): | |
| c = Calendar( | |
| summary='Summary', | |
| calendar_id='Calendar id', | |
| description='Description', | |
| location='Fiji', | |
| timezone=TEST_TIMEZONE, | |
| allowed_conference_solution_types=TEST_ALLOWED_CONFERENCE_SOLUTION_TYPES | |
| ) | |
| self.assertEqual(c.summary, 'Summary') | |
| self.assertEqual(c.calendar_id, 'Calendar id') | |
| self.assertEqual(c.id, 'Calendar id') | |
| self.assertEqual(c.description, 'Description') | |
| self.assertEqual(c.location, 'Fiji') | |
| self.assertEqual(c.timezone, TEST_TIMEZONE) | |
| self.assertListEqual(c.allowed_conference_solution_types, TEST_ALLOWED_CONFERENCE_SOLUTION_TYPES) | |
| def test_to_calendar_list_entry(self): | |
| c = Calendar( | |
| summary='Summary', | |
| calendar_id='Calendar id', | |
| description='Description', | |
| location='Fiji', | |
| timezone=TEST_TIMEZONE, | |
| allowed_conference_solution_types=TEST_ALLOWED_CONFERENCE_SOLUTION_TYPES | |
| ) | |
| cle = c.to_calendar_list_entry( | |
| summary_override='Summary override', | |
| color_id='1', | |
| background_color='#123123', | |
| foreground_color='#234234', | |
| hidden=False, | |
| selected=True, | |
| default_reminders=[EmailReminder(60), PopupReminder(15)], | |
| notification_types=TEST_NOTIFICATION_TYPES | |
| ) | |
| self.assertIsInstance(cle, CalendarListEntry) | |
| self.assertEqual(cle.summary_override, 'Summary override') | |
| self.assertEqual(cle.color_id, '1') | |
| self.assertEqual(cle.background_color, '#123123') | |
| self.assertEqual(cle.foreground_color, '#234234') | |
| self.assertFalse(cle.hidden) | |
| self.assertTrue(cle.selected) | |
| self.assertEqual(cle.default_reminders, [EmailReminder(60), PopupReminder(15)]) | |
| self.assertEqual(cle.notification_types, TEST_NOTIFICATION_TYPES) | |
| c_without_id = Calendar( | |
| summary='Summary', | |
| ) | |
| with self.assertRaises(ValueError): | |
| c_without_id.to_calendar_list_entry() | |
| def test_repr_str(self): | |
| c = Calendar( | |
| summary='Summary', | |
| calendar_id='Calendar id', | |
| description='Description' | |
| ) | |
| self.assertEqual(str(c), 'Summary - Description') | |
| self.assertEqual(repr(c), '<Calendar Summary - Description>') | |
| def test_eq(self): | |
| c1 = Calendar( | |
| summary='Summary', | |
| calendar_id='Calendar id', | |
| description='Description', | |
| location='Fiji', | |
| timezone=TEST_TIMEZONE, | |
| allowed_conference_solution_types=TEST_ALLOWED_CONFERENCE_SOLUTION_TYPES | |
| ) | |
| c2 = Calendar( | |
| summary='Summary2', | |
| calendar_id='Calendar id2', | |
| description='Description2', | |
| location='Fiji', | |
| timezone=TEST_TIMEZONE, | |
| allowed_conference_solution_types=TEST_ALLOWED_CONFERENCE_SOLUTION_TYPES | |
| ) | |
| self.assertEqual(c1, c1) | |
| self.assertNotEqual(c1, c2) | |
| self.assertNotEqual(c1, 'Calendar') | |
| class TestCalendarSerializer(TestCase): | |
| def test_to_json(self): | |
| c = Calendar( | |
| summary='Summary', | |
| calendar_id='Calendar id', | |
| description='Description', | |
| location='Fiji', | |
| timezone=TEST_TIMEZONE, | |
| allowed_conference_solution_types=TEST_ALLOWED_CONFERENCE_SOLUTION_TYPES | |
| ) | |
| expected_calendar_json = { | |
| "id": 'Calendar id', | |
| "summary": 'Summary', | |
| "description": 'Description', | |
| "location": 'Fiji', | |
| "timeZone": TEST_TIMEZONE, | |
| "conferenceProperties": { | |
| "allowedConferenceSolutionTypes": TEST_ALLOWED_CONFERENCE_SOLUTION_TYPES | |
| } | |
| } | |
| self.assertDictEqual(CalendarSerializer.to_json(c), expected_calendar_json) | |
| c = Calendar( | |
| summary='Summary', | |
| description='Description', | |
| timezone=TEST_TIMEZONE | |
| ) | |
| expected_calendar_json = { | |
| "summary": 'Summary', | |
| "description": 'Description', | |
| "timeZone": TEST_TIMEZONE | |
| } | |
| self.assertDictEqual(CalendarSerializer.to_json(c), expected_calendar_json) | |
| def test_to_object(self): | |
| calendar_json = { | |
| "id": 'Calendar id', | |
| "summary": 'Summary', | |
| "description": 'Description', | |
| "location": 'Fiji', | |
| "timeZone": TEST_TIMEZONE, | |
| "conferenceProperties": { | |
| "allowedConferenceSolutionTypes": TEST_ALLOWED_CONFERENCE_SOLUTION_TYPES | |
| } | |
| } | |
| serializer = CalendarSerializer(calendar_json) | |
| c = serializer.get_object() | |
| self.assertEqual(c.summary, 'Summary') | |
| self.assertEqual(c.calendar_id, 'Calendar id') | |
| self.assertEqual(c.description, 'Description') | |
| self.assertEqual(c.location, 'Fiji') | |
| self.assertEqual(c.timezone, TEST_TIMEZONE) | |
| self.assertListEqual(c.allowed_conference_solution_types, TEST_ALLOWED_CONFERENCE_SOLUTION_TYPES) | |
| calendar_json = """{ | |
| "id": "Calendar id", | |
| "summary": "Summary", | |
| "location": "Fiji" | |
| }""" | |
| serializer = CalendarSerializer(calendar_json) | |
| c = serializer.get_object() | |
| self.assertEqual(c.summary, 'Summary') | |
| self.assertEqual(c.calendar_id, 'Calendar id') | |
| self.assertIsNone(c.description) | |
| self.assertEqual(c.location, 'Fiji') | |
| self.assertIsNone(c.timezone) | |
| self.assertIsNone(c.allowed_conference_solution_types) | |
| class TestCalendarListEntry(TestCase): | |
| def test_init(self): | |
| c = CalendarListEntry( | |
| summary_override='Summary override', | |
| color_id='1', | |
| background_color='#123123', | |
| foreground_color='#234234', | |
| hidden=False, | |
| selected=True, | |
| default_reminders=[EmailReminder(60), PopupReminder(15)], | |
| notification_types=TEST_NOTIFICATION_TYPES, | |
| _access_role=TEST_ACCESS_ROLE, | |
| _primary=True, | |
| _deleted=False, | |
| _summary='Summary', | |
| calendar_id='Calendar id', | |
| _description='Description', | |
| _location='Fiji', | |
| _timezone=TEST_TIMEZONE, | |
| _allowed_conference_solution_types=TEST_ALLOWED_CONFERENCE_SOLUTION_TYPES | |
| ) | |
| self.assertEqual(c.summary_override, 'Summary override') | |
| self.assertEqual(c.color_id, '1') | |
| self.assertEqual(c.background_color, '#123123') | |
| self.assertEqual(c.foreground_color, '#234234') | |
| self.assertFalse(c.hidden) | |
| self.assertTrue(c.selected) | |
| self.assertEqual(c.default_reminders, [EmailReminder(60), PopupReminder(15)]) | |
| self.assertEqual(c.notification_types, TEST_NOTIFICATION_TYPES) | |
| self.assertEqual(c.access_role, TEST_ACCESS_ROLE) | |
| self.assertTrue(c.primary) | |
| self.assertFalse(c.deleted) | |
| self.assertEqual(c.summary, 'Summary') | |
| self.assertEqual(c.calendar_id, 'Calendar id') | |
| self.assertEqual(c.description, 'Description') | |
| self.assertEqual(c.location, 'Fiji') | |
| self.assertEqual(c.timezone, TEST_TIMEZONE) | |
| self.assertListEqual(c.allowed_conference_solution_types, TEST_ALLOWED_CONFERENCE_SOLUTION_TYPES) | |
| c.color_id = '2' | |
| self.assertEqual(c.color_id, '2') | |
| self.assertIsNone(c.background_color) | |
| self.assertIsNone(c.foreground_color) | |
| def test_repr_str(self): | |
| c = CalendarListEntry( | |
| calendar_id='Calendar id', | |
| summary_override='Summary override', | |
| _summary='Summary', | |
| ) | |
| self.assertEqual(str(c), 'Summary override - (Summary)') | |
| self.assertEqual(repr(c), '<CalendarListEntry Summary override - (Summary)>') | |
| def test_eq(self): | |
| c1 = CalendarListEntry( | |
| calendar_id='Calendar id', | |
| summary_override='Summary override', | |
| _summary='Summary', | |
| ) | |
| c2 = CalendarListEntry( | |
| calendar_id='Calendar id2', | |
| summary_override='Summary override2', | |
| _summary='Summary2', | |
| ) | |
| self.assertEqual(c1, c1) | |
| self.assertNotEqual(c1, c2) | |
| self.assertNotEqual(c1, 'Calendar') | |
| class TestCalendarListEntrySerializer(TestCase): | |
| def test_to_json(self): | |
| c = CalendarListEntry( | |
| summary_override='Summary override', | |
| color_id='1', | |
| background_color='#123123', | |
| foreground_color='#234234', | |
| hidden=False, | |
| selected=True, | |
| default_reminders=[EmailReminder(60), PopupReminder(15)], | |
| notification_types=TEST_NOTIFICATION_TYPES, | |
| _access_role=TEST_ACCESS_ROLE, | |
| _primary=True, | |
| _deleted=False, | |
| _summary='Summary', | |
| calendar_id='Calendar id', | |
| _description='Description', | |
| _location='Fiji', | |
| _timezone=TEST_TIMEZONE, | |
| _allowed_conference_solution_types=TEST_ALLOWED_CONFERENCE_SOLUTION_TYPES | |
| ) | |
| expected_calendar_json = { | |
| 'id': 'Calendar id', | |
| 'summaryOverride': 'Summary override', | |
| 'colorId': '1', | |
| 'backgroundColor': '#123123', | |
| 'foregroundColor': '#234234', | |
| 'hidden': False, | |
| 'selected': True, | |
| 'defaultReminders': [ | |
| {'method': 'email', 'minutes': 60}, | |
| {'method': 'popup', 'minutes': 15} | |
| ], | |
| 'notificationSettings': { | |
| 'notifications': [ | |
| {'type': 'eventCreation', 'method': 'email'}, | |
| {'type': 'eventChange', 'method': 'email'} | |
| ] | |
| } | |
| } | |
| self.assertDictEqual(CalendarListEntrySerializer.to_json(c), expected_calendar_json) | |
| c = CalendarListEntry( | |
| summary_override='Summary override', | |
| calendar_id='Calendar id', | |
| _timezone=TEST_TIMEZONE, | |
| ) | |
| expected_calendar_json = { | |
| 'id': 'Calendar id', | |
| 'summaryOverride': 'Summary override', | |
| 'hidden': False, | |
| 'selected': False, | |
| } | |
| self.assertDictEqual(CalendarListEntrySerializer.to_json(c), expected_calendar_json) | |
| def test_to_object(self): | |
| calendar_json = { | |
| "id": 'Calendar id', | |
| "summary": 'Summary', | |
| "description": 'Description', | |
| "location": 'Fiji', | |
| "timeZone": TEST_TIMEZONE, | |
| "summaryOverride": 'Summary override', | |
| "colorId": '1', | |
| "backgroundColor": '#123123', | |
| "foregroundColor": '#234234', | |
| "hidden": False, | |
| "selected": True, | |
| "accessRole": TEST_ACCESS_ROLE, | |
| "defaultReminders": [ | |
| {"method": 'email', "minutes": 60}, | |
| {"method": 'popup', "minutes": 15} | |
| ], | |
| "notificationSettings": { | |
| "notifications": [ | |
| {'type': 'eventCreation', 'method': 'email'}, | |
| {'type': 'eventChange', 'method': 'email'} | |
| ] | |
| }, | |
| "primary": True, | |
| "deleted": False, | |
| "conferenceProperties": { | |
| "allowedConferenceSolutionTypes": TEST_ALLOWED_CONFERENCE_SOLUTION_TYPES | |
| } | |
| } | |
| serializer = CalendarListEntrySerializer(calendar_json) | |
| c = serializer.get_object() | |
| self.assertEqual(c.summary_override, 'Summary override') | |
| self.assertEqual(c.color_id, '1') | |
| self.assertEqual(c.background_color, '#123123') | |
| self.assertEqual(c.foreground_color, '#234234') | |
| self.assertFalse(c.hidden) | |
| self.assertTrue(c.selected) | |
| self.assertListEqual(c.default_reminders, [EmailReminder(60), PopupReminder(15)]) | |
| self.assertEqual(c.notification_types, TEST_NOTIFICATION_TYPES) | |
| self.assertEqual(c.access_role, TEST_ACCESS_ROLE) | |
| self.assertTrue(c.primary) | |
| self.assertFalse(c.deleted) | |
| self.assertEqual(c.summary, 'Summary') | |
| self.assertEqual(c.calendar_id, 'Calendar id') | |
| self.assertEqual(c.description, 'Description') | |
| self.assertEqual(c.location, 'Fiji') | |
| self.assertEqual(c.timezone, TEST_TIMEZONE) | |
| self.assertListEqual(c.allowed_conference_solution_types, TEST_ALLOWED_CONFERENCE_SOLUTION_TYPES) | |
| calendar_json = """{ | |
| "id": "Calendar id", | |
| "foregroundColor": "#234234", | |
| "defaultReminders": [ | |
| {"method": "email", "minutes": 60}, | |
| {"method": "popup", "minutes": 15} | |
| ], | |
| "primary": true, | |
| "conferenceProperties": { | |
| "allowedConferenceSolutionTypes": ["eventHangout", "eventNamedHangout"] | |
| } | |
| }""" | |
| serializer = CalendarListEntrySerializer(calendar_json) | |
| c = serializer.get_object() | |
| self.assertEqual(c.foreground_color, '#234234') | |
| self.assertListEqual(c.default_reminders, [EmailReminder(60), PopupReminder(15)]) | |
| self.assertTrue(c.primary) | |
| self.assertEqual(c.calendar_id, 'Calendar id') | |
| self.assertListEqual(c.allowed_conference_solution_types, TEST_ALLOWED_CONFERENCE_SOLUTION_TYPES) | |