110 lines
3.8 KiB
Python
110 lines
3.8 KiB
Python
# -*- 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 \'')
|