def test_model_form_validation_occurs(self):
     form = MultipleOccurrenceForm(event=self.event, data=self.data)
     assert form.is_valid(), form.errors.as_text()
     assert_equal(len(form.valid_occurrences), 1)
     assert_equal(len(form.invalid_occurrences), 1)
     assert_equal(len(form.occurrences), 2)
     assert_equal(form.invalid_occurrences[0][1], self.validator.error_message)
 def test_until_gt_start_only_applies_when_repeat_method_until(self):
     invalid_inputs = (
         None,
         date.today(),
         date.today() - timedelta(1),
         self.tomorrow,
     )
     self.data.update({
         'repeats':                'count',
         'freq':                   rrule.DAILY,
     })
     for i in invalid_inputs:
         self.data['until'] = i
         form = MultipleOccurrenceForm(event=self.event, data=self.data)
         assert form.is_valid(), form.errors.as_text()
 def _test_formfield(self, formfield, invalid_inputs, valid_inputs):
     """Utility method: encapsulates all the 'meat' of the test to reduce
     verbosity. Make sure ``self.data`` is in the right state before running
     this."""
     form = MultipleOccurrenceForm(event=self.event, data=self.data)
     assert not form.is_valid(), (
         "form with no %s key valid when it should not be." % formfield
     )
     for i in invalid_inputs:
         self.data[formfield] = i
         form = MultipleOccurrenceForm(event=self.event, data=self.data)
         assert not form.is_valid(), (
             "Invalid %s value %s identified as valid." % (formfield, i)
         )
     for i in valid_inputs:
         self.data[formfield] = i
         form = MultipleOccurrenceForm(event=self.event, data=self.data)
         assert form.is_valid(), form.errors.as_text()
    def test_is_year_month_ordinal(self):
        """Should always be in cleaned data, and always equal bool(input)"""
        falsey_inputs = ['', None, False, []]
        truthy_inputs = [True, 1, '1', 'foo']
        self.data.update({
            'freq':                   rrule.YEARLY,
            'year_months':            [1,12],
            'year_month_ordinal':     '1',
            'year_month_ordinal_day': self.weekday_long['Tuesday'],
        })
        form = MultipleOccurrenceForm(event=self.event, data=self.data)
        assert form.is_valid(), form.errors.as_text()
        assert not form.cleaned_data['is_year_month_ordinal']

        for i in falsey_inputs:
            self.data['is_year_month_ordinal'] = i
            form = MultipleOccurrenceForm(event=self.event, data=self.data)
            assert form.is_valid(), form.errors.as_text()
            assert not form.cleaned_data['is_year_month_ordinal']
        for i in truthy_inputs:
            self.data['is_year_month_ordinal'] = i
            form = MultipleOccurrenceForm(event=self.event, data=self.data)
            assert form.is_valid(), form.errors.as_text()
            assert form.cleaned_data['is_year_month_ordinal']
 def test_calendar_required(self):
     self.data.update({'freq': rrule.DAILY})
     del self.data['calendar']
     form = MultipleOccurrenceForm(event=self.event, data=self.data)
     assert not form.is_valid()
     assert "This field is required." in form.errors.get('calendar', [])
 def test_with_good_inputs(self):
     form = MultipleOccurrenceForm(event=self.event, data=self.full_data)
     assert form.is_valid(), form.errors.as_text()
     form.save()