Example #1
0
class TakeIssueTests(TestCase):
    def setUp(self):
        self.tracker = Redmine('http://the_base_url')
        self.config = config_from_string('''
[redmine]
assignee_id = the_assignee_id
inprogress_id = the_inprogress_id
                                         ''')
        self.mock_request = self.patch_object(self.tracker, '_request')
        self.mock_get_url = self.patch_object(self.tracker, 'get_issue_url')
        self.mock_get_url.return_value = sentinel.url

    def test_missing_inprogress_config_fails(self):
        config = config_from_string('''
[redmine]
assignee_id = 2
                                    ''')
        self.assertRaisesRegexp(ConfigMissing,
                                'Option:[\'"]inprogress_id[\'"]',
                                self.tracker.take_issue,
                                sentinel.issue, config, sentinel.options)

    def test_missing_status_config_fails(self):
        config = config_from_string('''
[redmine]
inprogress_id = 2
                                    ''')
        self.assertRaisesRegexp(ConfigMissing,
                                'Option:[\'"]assignee_id[\'"]',
                                self.tracker.take_issue,
                                sentinel.issue, config, sentinel.options)


    def test_uses_put_request(self):
        self.tracker.take_issue(sentinel.issue, self.config, sentinel.options)

        eq_(self.mock_request.called, True, '_request was not called')
        eq_(self.mock_request.call_args[0][0], requests.put)

    def test_uses_issue_url(self):
        self.tracker.take_issue(sentinel.issue, self.config, sentinel.options)

        self.mock_get_url.assert_called_once_with(sentinel.issue, self.config,
                                                  sentinel.options)
        eq_(self.mock_request.called, True, '_request was not called')
        eq_(self.mock_request.call_args[0][1], sentinel.url)

    def test_sends_payload(self):
        self.tracker.take_issue(sentinel.issue, self.config, sentinel.options)

        eq_(self.mock_request.called, True, '_request was not called')
        payload = json.loads(self.mock_request.call_args[1]['data'])
        payload = payload['issue']

        eq_(payload['status_id'], 'the_inprogress_id')
        eq_(payload['assigned_to_id'], 'the_assignee_id')

    def test_send_content_type_header(self):
        self.tracker.take_issue(sentinel.issue, self.config, sentinel.options)

        eq_(self.mock_request.called, True, '_request was not called')
        headers = self.mock_request.call_args[1]['headers']

        eq_(headers['content-type'], 'application/json')