68 lines
2.3 KiB
Python
68 lines
2.3 KiB
Python
# -*- 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)
|