# -*- coding: utf-8 -*- from __future__ import unicode_literals import datetime from django.test import TestCase from django.utils import timezone from ..models import Participant, TrashedParticipant from .. import utils from .generic import EventMixin class PurgeParticipantsTestCase(EventMixin, TestCase): def test_purging_participants_only_with_elapsed_purge_date(self): event = self.create_event_by_model() test_dates = [ timezone.now(), timezone.now() - datetime.timedelta(days=1), timezone.now() + datetime.timedelta(days=1), timezone.now() - datetime.timedelta(days=720), timezone.now() + datetime.timedelta(days=720), ] position = 0 for date in test_dates: position += 1 participant = Participant( event=event, personal_names='Walter', family_names='Bonatti', address='Street 1', postal_code='23032', city='Bormio', email_address='walter@farbemachtstark.de', phone_number='555 1', year_of_birth=1930, dav_number='1', position=position, purge_at=date, ) participant.save() self.assertEqual(Participant.objects.count(), len(test_dates)) with self.assertLogs('dav_events.utils', level='INFO') as cm: utils.purge_participants() position = 0 expected_messages = 0 for date in test_dates: position += 1 expected_purge = date <= timezone.now() if expected_purge: expected_messages += 1 self.assertEqual(expected_purge, not Participant.objects.filter(position=position).exists()) self.assertEqual(len(cm.output), expected_messages) for i in range(expected_messages): self.assertStartsWith(cm.output[i], 'INFO:dav_events.utils:Purge participant \'') def test_purging_trashed_participants_only_with_elapsed_purge_date(self): event = self.create_event_by_model() test_dates = [ timezone.now(), timezone.now() - datetime.timedelta(days=1), timezone.now() + datetime.timedelta(days=1), timezone.now() - datetime.timedelta(days=720), timezone.now() + datetime.timedelta(days=720), ] position = 0 for date in test_dates: position += 1 participant = TrashedParticipant( event=event, personal_names='Walter', family_names='Bonatti', address='Street 1', postal_code='23032', city='Bormio', email_address='walter@farbemachtstark.de', phone_number='555 1', year_of_birth=1930, dav_number='1', position=position, created_at=timezone.now(), purge_at=date, ) participant.save() self.assertEqual(TrashedParticipant.objects.count(), len(test_dates)) with self.assertLogs('dav_events.utils', level='INFO') as cm: utils.purge_participants() position = 0 expected_messages = 0 for date in test_dates: position += 1 expected_purge = date <= timezone.now() if expected_purge: expected_messages += 1 self.assertEqual(expected_purge, not TrashedParticipant.objects.filter(position=position).exists()) self.assertEqual(len(cm.output), expected_messages) for i in range(expected_messages): self.assertStartsWith(cm.output[i], 'INFO:dav_events.utils:Purge participant from trash \'')