Esempio n. 1
0
    def get_forms(self):
        kwargs = {'initial': None}
        if self.request.method == 'POST':
            kwargs['data'] = self.request.POST
        batch_form = TaskImportBatchForm(instance=None,
                                         prefix='batch',
                                         **kwargs)
        criterion_formset = TaskInvalidCriteriaFormSet(prefix='criterion',
                                                       **kwargs)
        kwargs['initial'] = {
            'end_date': date.today() + timedelta(days=30),
            'repeatable': False,
            'owner': self.request.user
        }

        task_form = TaskForm(instance=None, prefix='task', **kwargs)

        forms = {
            'criterion_formset': criterion_formset,
            'batch_form': batch_form,
            'task_form': task_form
        }

        # Create a hidden form for each possible PreviewConfirmationForm stage.
        # These forms are used to signal what the next stage should be.
        make_stage = lambda x: PreviewConfirmationForm(data={'stage': x})
        stages = PreviewConfirmationForm.submission_stages
        forms.update({'stage_form__' + s: make_stage(s) for s in stages})
        return forms
Esempio n. 2
0
    def test_validation_query_returns_bugzilla_error(self):
        """ The form is invalid if given a query that returns any errors """
        data = {'query': 'http://www.example.com?x=y', 'description': 'foo'}
        with patch('oneanddone.tasks.forms.BugzillaUtils') as BugzillaUtils:
            request_bugcount = BugzillaUtils().request_bugcount
            message = ('Sorry. we cannot retrieve any data from Bugzilla at '
                       'this time. Please report this to the '
                       'One and Done team.')

            request_bugcount.side_effect = RuntimeError
            form = TaskImportBatchForm(data=data)
            self.assertFalse(form.is_valid())
            eq_(form.non_field_errors(), [message])

            request_bugcount.side_effect = RequestException
            form = TaskImportBatchForm(data=data)
            self.assertFalse(form.is_valid())
            eq_(form.non_field_errors(), [message])
Esempio n. 3
0
 def test_validation_query_returns_external_error(self):
     """ The form is invalid if given a query that returns any errors """
     data = {'query': 'http://www.example.com?x=y', 'description': 'foo'}
     with patch('oneanddone.tasks.forms.BugzillaUtils') as BugzillaUtils:
         message = 'bar'
         BugzillaUtils().request_bugcount.side_effect = ValueError(message)
         form = TaskImportBatchForm(data=data)
         self.assertFalse(form.is_valid())
         eq_(form.non_field_errors(), ['External error: ' + message])
Esempio n. 4
0
 def test_validation_invalid_query(self):
     """
     The form is invalid when the query has no URL parameters.
     """
     data = {'query': 'http://www.example.com', 'description': 'foo'}
     form = TaskImportBatchForm(data=data)
     self.assertFalse(form.is_valid())
     eq_(form.non_field_errors(), [('For the query URL, please provide '
                                    'a full URL that includes search '
                                    'parameters.')])
Esempio n. 5
0
 def test_validation_no_query_results(self):
     """
     The form is invalid when given a query that returns 0 results.
     """
     data = {'query': 'http://www.example.com?x=y', 'description': 'foo'}
     with patch('oneanddone.tasks.forms.BugzillaUtils') as BugzillaUtils:
         BugzillaUtils().request_bugcount.return_value = 0
         form = TaskImportBatchForm(data=data)
         self.assertFalse(form.is_valid())
         eq_(form.non_field_errors(), [('Your query does not return'
                                        ' any results.')])