def setUp(self): self.tomorrow = timezone.now() + datetime.timedelta(hours=24) self.tomorrow_pl1 = timezone.now() + datetime.timedelta(hours=48) self.tomorrow_pl2 = timezone.now() + datetime.timedelta(hours=72) self.events = [ Event.objects.create( title="Test Event1", time_start=self.tomorrow, time_end=self.tomorrow, ), Event.objects.create( title="Test Event2", time_start=self.tomorrow_pl1, time_end=self.tomorrow_pl2, ), Event.objects.create( title="Test Event3", time_start=self.tomorrow, time_end=self.tomorrow_pl2, ) ] self.time_ranges = [ time_range_generator(e.time_start, e.time_end, html=True) for e in self.events ]
def test_clean_end_after_start(self): """ Test clean with an end date after the start date """ time_range_str = time_range_generator(self.today, self.tomorrow) self.field.clean(time_range_str)
def test_clean_soon_start(self): """ Test clean with a start date in the very near future """ time_range_str = time_range_generator(self.today, self.today) self.field.clean(time_range_str)
def test_clean_end_before_start(self): """ Test clean with an end date before the start date """ time_range_str = time_range_generator(self.today, self.yesterday) with self.assertRaises(ValidationError): self.field.clean(time_range_str)
def test_format_value_time_range_correct(self): """ Test format value with a time_range containing two dates in the near future """ time_range = (self.now, self.tomorrow) expected = time_range_generator(self.now, self.tomorrow) self.assertEqual(self.widget.format_value(time_range), expected)
def test_save_bad_time_range(self): """ Ensure that validations are working on the form for bad time range data """ time_range = time_range_generator(self.today, self.yesterday) data = { 'title': 'Test Event', 'time_range': time_range, } form = EventForm(data) self.assertFalse(form.is_valid())
def test_allows_past_time_range(self): """ Ensure that a time_range in the past is still valid. """ time_range = time_range_generator(self.yesterday, self.tomorrow) data = { 'title': 'Test Event', 'time_range': time_range, } form = EventFormAllowsPast(data) self.assertTrue(form.is_valid())
def test_denies_past_time_range(self): """ Ensure that a time_range in the past is not considered valid. """ time_range = time_range_generator(self.yesterday, self.tomorrow) data = { 'title': 'Test Event', 'time_range': time_range, } form = EventForm(data) self.assertFalse(form.is_valid())
def test_save_commit(self): """ Test saving a form to database """ time_range = time_range_generator(self.tomorrow, self.tomorrow) data = { 'title': 'Test Event', 'time_range': time_range, } form = EventForm(data) self.assertTrue(form.is_valid()) event = form.save() self.assertIsNotNone(event) self.assertTrue(Event.objects.filter(pk=event.pk).exists())
def test_save_no_commit(self): """ Test saving a form without committing directly to database """ time_range = time_range_generator(self.tomorrow, self.tomorrow) data = { 'title': 'Test Event', 'time_range': time_range, } form = EventFormAllowsPast(data) self.assertTrue(form.is_valid()) event = form.save(commit=False) self.assertIsNotNone(event) self.assertFalse(Event.objects.filter(pk=event.pk).exists()) event.save() self.assertTrue(Event.objects.filter(pk=event.pk).exists())
def test_post_create_event(self): """ Actually create an event using the view """ client = Client() time_range = time_range_generator(self.tomorrow, self.tomorrow_pl1) data = { 'title': 'Test Event', 'time_range': time_range, } response = client.post(CREATE_EVENT_URL, data) self.assertTemplateUsed(response, 'simpleapp/create.html') self.assertContains(response, '<strong>Success!</strong> Event has been created.') self.assertTrue(Event.objects.filter(title='Test Event').exists())
def test_post_create_even_bad_time(self): """ Send bad data to event creation form and see if an event is created or not """ client = Client() time_range = time_range_generator(self.tomorrow_pl1, self.tomorrow) data = { 'title': 'Test Event', 'time_range': time_range, } response = client.post(CREATE_EVENT_URL, data) self.assertTemplateUsed(response, 'simpleapp/create.html') self.assertContains(response, 'End date is before start date.') self.assertNotContains(response, '<strong>Success!</strong> Event has been created.') self.assertFalse(Event.objects.filter(title='Test Event').exists())
def test_clean_early_end(self): """ Test clean with an end date in the past """ time_range_str = time_range_generator(self.yesterday, self.yesterday) self.field.clean(time_range_str)
def test_clean_early_end(self): """ Test clean with an end date in the past """ time_range_str = time_range_generator(self.yesterday, self.yesterday) with self.assertRaises(ValidationError): self.field.clean(time_range_str)
def test_clean_late_start(self): """ Test clean with a start date in the future """ time_range_str = time_range_generator(self.tomorrow, self.tomorrow) self.field.clean(time_range_str)
def test_format_value_given_string(self): """ Test format_value given an already-correct string """ time_range = time_range_generator(self.now, self.now) self.assertEqual(self.widget.format_value(time_range), time_range)