Example #1
0
class GetIssueListUrlTests(TestCase):
    def setUp(self):
        self.tracker = Redmine('http://the_base_url')
        self.mock_get_limit = self.patch_object(Redmine, 'get_list_limit')
        self.mock_get_limit.return_value = 12345
        self.mock_get_project = self.patch_object(Redmine, 'get_project')
        self.mock_get_project.return_value = None
        self.no_options = MockRedmineOptions()

    def test_querystring_defaults(self):
        url = self.tracker.get_issue_list_url(sentinel.config, self.no_options)

        parsed_qs = parse_qs(urlparse(url).query)
        self.assertNotIn('assigned_to_id', parsed_qs)
        self.assertNotIn('fixed_version_id', parsed_qs)
        self.assertNotIn('status_id', parsed_qs)

    def test_limit(self):
        url = self.tracker.get_issue_list_url(sentinel.config, self.no_options)

        self.mock_get_limit.assert_called_once_with(sentinel.config,
                                                    self.no_options)
        parsed_qs = parse_qs(urlparse(url).query)
        eq_(parsed_qs['limit'], ['12345'])

    def test_mine(self):
        options = MockRedmineOptions(mine=True)
        url = self.tracker.get_issue_list_url(sentinel.config, options)

        parsed_qs = parse_qs(urlparse(url).query)
        eq_(parsed_qs['assigned_to_id'], ['me'])

    def test_version(self):
        options = MockRedmineOptions(version='v30')
        url = self.tracker.get_issue_list_url(sentinel.config, options)

        parsed_qs = parse_qs(urlparse(url).query)
        eq_(parsed_qs['fixed_version_id'], ['v30'])

    def test_all(self):
        options = MockRedmineOptions(all=True)
        url = self.tracker.get_issue_list_url(sentinel.config, options)

        parsed_qs = parse_qs(urlparse(url).query)
        eq_(parsed_qs['status_id'], ['*'])

    def test_no_project_url(self):
        url = self.tracker.get_issue_list_url(sentinel.config, self.no_options)
        eq_(url.split("?", 1)[0], 'http://the_base_url/issues.json')

    def test_project_url(self):
        self.mock_get_project.return_value = 'the_project'
        url = self.tracker.get_issue_list_url(sentinel.config, self.no_options)
        eq_(url.split("?", 1)[0],
            'http://the_base_url/projects/the_project/issues.json')