def test_clean_dates(self):
"""
Cleaning models dates follow different type of rules, also depending on event
"""
event = Event.objects.get(title='PyCon SK 2016') # PyCon SK 2016 is in the past
tt = TicketType(title='Test Ticket', price=12, event=event)
# Past event and no dates raises error
self.assertRaises(ValidationError, tt.clean)
# Past event and dates after it raises error
tt.date_from = now
tt.date_to = now + 3 * day
self.assertRaises(ValidationError, tt.clean)
tt.date_from = parse_datetime('2016-01-11T09:00:00Z')
self.assertRaises(ValidationError, tt.clean)
# End date can not be before start date
tt.date_to = tt.date_from - 3 * day
self.assertRaises(ValidationError, tt.clean)
# Correct data in the past before event, SAVE.
tt.date_to = tt.date_from + 9 * day
tt.clean()
tt.save()
# PyCon SK 2054 is in the future
future_event = Event.objects.create(
title='PyCon SK 2054', description='test', event_type=Event.MEETUP, status=Event.PUBLISHED,
location=event.location, cfp_end=distant_future - 7 * day,
date_from=distant_future, date_to=distant_future + 7 * day)
ftt = TicketType(title='Test Future Ticket', price=120, event=future_event)
# Future event pre-populate the dates
ftt.clean()
self.assertEquals(abs(ftt.date_from - timezone.now()).seconds, 0)
self.assertEquals(abs(ftt.date_to - ftt.event.date_to).seconds, 0)
ftt.save()
评论列表
文章目录