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_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)
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))
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']))
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']))