예제 #1
0
 def test_invalidation_criteria_exists(self):
     batch = TaskImportBatchFactory.create()
     criterion = TaskInvalidationCriterionFactory.create()
     criterion.batches.add(batch)
     criterion.save()
     task = TaskFactory.create(batch=batch)
     eq_(criterion, task.invalidation_criteria[0])
 def test_invalidation_criteria_exists(self):
     batch = TaskImportBatchFactory.create()
     criterion = TaskInvalidationCriterionFactory.create()
     criterion.batches.add(batch)
     criterion.save()
     task = TaskFactory.create(batch=batch)
     eq_(criterion, task.invalidation_criteria[0])
예제 #3
0
 def test_invalidate_tasks_not_equals_criterion(self):
     """
     The invalidate_tasks routine should invalidate tasks which match the
     invalidation criteria.
     This tests a not equals criterion.
     """
     bug_to_become_invalid, bug_to_stay_valid = BugzillaBugFactory.create_batch(2)
     batch = TaskImportBatchFactory.create()
     criterion = TaskInvalidationCriterionFactory.create(
         field_name='name',
         relation=TaskInvalidationCriterion.NOT_EQUAL,
         field_value='value')
     criterion.batches.add(batch)
     criterion.save()
     task1, task2 = TaskFactory.create_batch(2,
                                             batch=batch,
                                             imported_item=bug_to_become_invalid,
                                             is_invalid=False)
     task2.imported_item = bug_to_stay_valid
     task2.save()
     with patch('oneanddone.tasks.models.BugzillaUtils.request_bug') as request_bug:
         request_bug.side_effect = lambda x: {
             bug_to_become_invalid.bugzilla_id: {'name': 'value'},
             bug_to_stay_valid.bugzilla_id: {'name': 'not value'}}[x]
         eq_(Task.invalidate_tasks(), 1)
     eq_(Task.objects.get(pk=task1.pk).is_invalid, False)
     eq_(Task.objects.get(pk=task2.pk).is_invalid, True)
 def test_invalidate_tasks_not_equals_criterion(self):
     """
     The invalidate_tasks routine should invalidate tasks which match the
     invalidation criteria.
     This tests a not equals criterion.
     """
     bug_to_become_invalid, bug_to_stay_valid = BugzillaBugFactory.create_batch(
         2)
     batch = TaskImportBatchFactory.create()
     criterion = TaskInvalidationCriterionFactory.create(
         field_name='name',
         relation=TaskInvalidationCriterion.NOT_EQUAL,
         field_value='value')
     criterion.batches.add(batch)
     criterion.save()
     task1, task2 = TaskFactory.create_batch(
         2,
         batch=batch,
         imported_item=bug_to_become_invalid,
         is_invalid=False)
     task2.imported_item = bug_to_stay_valid
     task2.save()
     with patch('oneanddone.tasks.models.BugzillaUtils.request_bug'
                ) as request_bug:
         request_bug.side_effect = lambda x: {
             bug_to_become_invalid.bugzilla_id: {
                 'name': 'value'
             },
             bug_to_stay_valid.bugzilla_id: {
                 'name': 'not value'
             }
         }[x]
         eq_(Task.invalidate_tasks(), 1)
     eq_(Task.objects.get(pk=task1.pk).is_invalid, False)
     eq_(Task.objects.get(pk=task2.pk).is_invalid, True)
예제 #5
0
 def test_not_equal_passes_true(self):
     """
     Return true if the criterion passes for the bug, using NOT_EQUAL.
     """
     criterion = TaskInvalidationCriterionFactory.create(
         field_name='name',
         relation=TaskInvalidationCriterion.NOT_EQUAL,
         field_value='not value')
     bug = {'name': 'value'}
     ok_(criterion.passes(bug))
예제 #6
0
 def test_equal_passes_false(self):
     """
     Return false if the criterion does not pass for the bug, using EQUAL.
     """
     criterion = TaskInvalidationCriterionFactory.create(
         field_name='name',
         relation=TaskInvalidationCriterion.EQUAL,
         field_value='value')
     bug = {'name': 'not value'}
     ok_(not criterion.passes(bug))
 def test_not_equal_passes_true(self):
     """
     Return true if the criterion passes for the bug, using NOT_EQUAL.
     """
     criterion = TaskInvalidationCriterionFactory.create(
         field_name='name',
         relation=TaskInvalidationCriterion.NOT_EQUAL,
         field_value='not value')
     bug = {'name': 'value'}
     ok_(criterion.passes(bug))
 def test_equal_passes_false(self):
     """
     Return false if the criterion does not pass for the bug, using EQUAL.
     """
     criterion = TaskInvalidationCriterionFactory.create(
         field_name='name',
         relation=TaskInvalidationCriterion.EQUAL,
         field_value='value')
     bug = {'name': 'not value'}
     ok_(not criterion.passes(bug))
예제 #9
0
    def test_create_batch_of_tasks(self):
        def save_batch(user):
            return TaskImportBatchFactory.create(creator=user)

        def save_task(user, **kwargs):
            return TaskFactory.create(creator=user)

        user = UserFactory.create()
        self.view.request = Mock(spec=HttpRequest, _messages=Mock(), user=user)
        bugs = [{u'id': 51, u'summary': u'a'}, {u'id': 52, u'summary': u'b'}]
        forms = {
            'batch_form': Mock(spec=TaskImportBatchForm),
            'task_form': Mock(spec=TaskForm),
            'criterion_formset': Mock(spec=TaskInvalidCriteriaFormSet)
        }
        forms['batch_form'].cleaned_data = {'_fresh_bugs': bugs}
        forms['batch_form'].save.side_effect = save_batch
        forms['task_form'].save.side_effect = save_task
        forms['task_form'].cleaned_data = {'keywords': 'foo, bar'}
        forms['criterion_formset'].forms = [
            Mock(cleaned_data={
                'criterion': TaskInvalidationCriterionFactory.create()
            }) for i in range(2)
        ]

        self.view.done(forms)

        batch = TaskImportBatch.objects.get(creator=user)
        BugzillaBug.objects.get(bugzilla_id=51)

        ok_(Task.objects.filter(creator=user, batch=batch).exists())
        eq_(Task.objects.filter(batch=batch).count(), len(bugs))
        eq_(BugzillaBug.objects.count(), len(bugs))
        eq_(batch.taskinvalidationcriterion_set.count(),
            len(forms['criterion_formset'].forms))
        eq_(sorted(Task.objects.filter(batch=batch)[0].keywords_list),
            sorted(forms['task_form'].cleaned_data['keywords']))
예제 #10
0
    def test_create_batch_of_tasks(self):
        def save_batch(user):
            return TaskImportBatchFactory.create(creator=user)

        def save_task(user, **kwargs):
            return TaskFactory.create(creator=user)

        user = UserFactory.create()
        self.view.request = Mock(spec=HttpRequest,
                                 _messages=Mock(),
                                 user=user)
        bugs = [{u'id': 51, u'summary': u'a'}, {u'id': 52, u'summary': u'b'}]
        forms = {'batch_form': Mock(spec=TaskImportBatchForm),
                 'task_form': Mock(spec=TaskForm),
                 'criterion_formset': Mock(spec=TaskInvalidCriteriaFormSet)}
        forms['batch_form'].cleaned_data = {'_fresh_bugs': bugs}
        forms['batch_form'].save.side_effect = save_batch
        forms['task_form'].save.side_effect = save_task
        forms['task_form'].cleaned_data = {'keywords': 'foo, bar'}
        forms['criterion_formset'].forms = [
            Mock(
                cleaned_data={'criterion': TaskInvalidationCriterionFactory.create()})
            for i in range(2)]

        self.view.done(forms)

        batch = TaskImportBatch.objects.get(creator=user)
        BugzillaBug.objects.get(bugzilla_id=51)

        ok_(Task.objects.filter(creator=user,
                                batch=batch).exists())
        eq_(Task.objects.filter(batch=batch).count(), len(bugs))
        eq_(BugzillaBug.objects.count(), len(bugs))
        eq_(batch.taskinvalidationcriterion_set.count(),
            len(forms['criterion_formset'].forms))
        eq_(sorted(Task.objects.filter(batch=batch)[0].keywords_list),
            sorted(forms['task_form'].cleaned_data['keywords']))