Exemplo n.º 1
0
class JiraProviderChangeTest(MockJiraTestMixin, TestCase):
    def setUp(self):
        self.test_provider = ProviderFactory()

    def test_creating_provider_doesnt_create_jira_record(self, mock_JIRA):
        with self.assertRaises(JiraUpdateRecord.DoesNotExist):
            self.jira_record = self.test_provider.jira_records.get(
                update_type=JiraUpdateRecord.PROVIDER_CHANGE)

    def test_provider_notify_jira_of_change_creates_record(self, mock_JIRA):
        self.test_provider.notify_jira_of_change()
        jira_record = self.test_provider.jira_records.get(
            update_type=JiraUpdateRecord.PROVIDER_CHANGE)
        self.assertEqual(self.test_provider, jira_record.provider)

    def test_provider_change_jira_work(self, mock_JIRA):
        self.test_provider.notify_jira_of_change()
        jira_record = self.test_provider.jira_records.get(
            update_type=JiraUpdateRecord.PROVIDER_CHANGE)
        self.assertEqual('', jira_record.jira_issue_key)
        issue_key = self.setup_issue_key(mock_JIRA)
        jira_record.do_jira_work()
        expected_duedate = datetime.date.today() + datetime.timedelta(days=settings.JIRA_DUEIN_DAYS)
        mock_JIRA.return_value.create_issue.assert_called_with(
            description=mock.ANY,
            project={'key': settings.JIRA_SERVICES_PROJECT_KEY},
            issuetype={'name': 'Task'},
            duedate=str(expected_duedate),
            summary="Changed provider from %s" % str(self.test_provider),
        )
        description = mock_JIRA.return_value.create_issue.call_args[1]['description']
        self.assertIn(absolute_url(self.test_provider.get_admin_edit_url()), description)
        self.assertIn(self.test_provider.name_en, description)
        jira_record = JiraUpdateRecord.objects.get(pk=jira_record.pk)
        self.assertEqual(issue_key, jira_record.jira_issue_key)