# -*- coding: utf-8 -*- from __future__ import unicode_literals import datetime import json from django.test import TestCase from ..models.eventchange import EventChange from .generic import EventMixin TEST_EVENT_DATA = { 'title': 'Täst', 'description': 'Teßt', 'mode': 'joint', 'sport': 'W', 'level': 'beginner', 'first_day': datetime.date(2019, 3, 1), 'country': 'DE', 'trainer_firstname': 'Übungsleiter', 'trainer_familyname': 'Weißalles', 'trainer_email': 'trainer@localhost', } class EventsTestCase(EventMixin, TestCase): def test_changelog(self): data = TEST_EVENT_DATA event = self.create_event_by_model(data) event.alt_first_day = event.first_day + datetime.timedelta(1) event.sport = 'M' event.ski_lift = True event.save() event.country = 'FR' event.save() event.trainer_familyname += '-Ömlaut' event.max_participants = 8 event.save() changes = event.changes self.assertEqual(changes.count(), 4) change = changes.get(pk=1) self.assertEqual(change.operation, EventChange.RAISE_FLAG) self.assertEqual(change.content, 'draft') change = changes.get(pk=2) self.assertEqual(change.operation, EventChange.UPDATE) subchanges = json.loads(change.content) self.assertEqual(len(subchanges), 3) self.assertIn({'field': 'alt_first_day', 'refer': None, 'current': '2019-03-02'}, subchanges) self.assertIn({'field': 'sport', 'refer': 'W', 'current': 'M'}, subchanges) self.assertIn({'field': 'ski_lift', 'refer': False, 'current': True}, subchanges) change = changes.get(pk=3) self.assertEqual(change.operation, EventChange.UPDATE) subchanges = json.loads(change.content) self.assertEqual(len(subchanges), 1) self.assertIn({'field': 'country', 'refer': 'DE', 'current': 'FR'}, subchanges) change = changes.get(pk=4) self.assertEqual(change.operation, EventChange.UPDATE) subchanges = json.loads(change.content) self.assertEqual(len(subchanges), 2) self.assertIn({'field': 'trainer_familyname', 'refer': 'Weißalles', 'current': 'Weißalles-Ömlaut'}, subchanges) self.assertIn({'field': 'max_participants', 'refer': 0, 'current': 8}, subchanges)