class BitbucketTests(TestCase): def setUp(self): self.tracker = Bitbucket(repo_user='******', repo_name='repo_name') def test_get_issue_list_url(self): with patch.object(self.tracker, 'get_list_limit') as mock_get_limit: mock_get_limit.return_value = '12345' eq_(self.tracker.get_issue_list_url(sentinel.config, sentinel.options), "https://bitbucket.org/api/1.0/repositories/repo_user" "/repo_name/issues?limit=12345") mock_get_limit.assert_called_once_with(sentinel.config, sentinel.options) def test_parse_issue_list(self): objects = { sentinel.json_1: sentinel.issue_1, sentinel.json_2: sentinel.issue_2, sentinel.json_3: sentinel.issue_3, } json_list = list(objects) with patch.object(self.tracker, 'parse_issue') as mock_parse_issue: mock_parse_issue.side_effect = lambda x, c, o: objects[x] parsed = self.tracker.parse_issue_list({'issues': json_list}, sentinel.config, sentinel.options) mock_parse_issue.assert_any_call(sentinel.json_1, sentinel.config, sentinel.options) mock_parse_issue.assert_any_call(sentinel.json_2, sentinel.config, sentinel.options) mock_parse_issue.assert_any_call(sentinel.json_3, sentinel.config, sentinel.options) eq_(parsed, [objects[x] for x in json_list]) def test_get_issue_url(self): eq_(self.tracker.get_issue_url('the_issue', sentinel.config, sentinel.options), 'https://bitbucket.org/api/1.0/repositories/repo_user/' 'repo_name/issues/the_issue')