def test_pull_requests_with_no_last_tag(self): self.mock_util.mock_get_repo() # Mock the tag calls self._mock_current_tag_ref() self._mock_current_tag() self._mock_current_tag_commit() self._mock_last_tag_ref() self._mock_last_tag() self._mock_last_tag_commit() self._mock_list_pull_requests_multiple_in_range() generator = self._create_generator(self.current_tag) provider = GithubChangeNotesProvider(generator, self.current_tag) provider._get_last_tag = mock.Mock(return_value=None) provider_list = list(provider()) pr_body_list = [] pr_body_list = [ "pull 1", "pull 2", "pull 3", "pull 4", "pull 5", "pull 7", "pull 8", ] self.assertEqual(len(provider_list), len(pr_body_list)) for pr, pr_body in zip(provider_list, pr_body_list): self.assertEqual(pr.body, pr_body)
def test_get_version_from_tag(self): self.mock_util.mock_get_repo() tag = "beta/1.0-Beta_1" generator = self._create_generator(tag) provider = GithubChangeNotesProvider(generator, tag) self.assertEqual("1.0-Beta_1", provider._get_version_from_tag(tag)) with self.assertRaises(ValueError): provider._get_version_from_tag("bogus")
def test_one_pull_request_in_range(self): # Mock the tag calls self._mock_current_tag_ref() self._mock_current_tag() self._mock_current_tag_commit() self._mock_last_tag_ref() self._mock_last_tag() self._mock_last_tag_commit() self._mock_list_pull_requests_one_in_range() generator = self._create_generator(self.current_tag, self.last_tag) provider = GithubChangeNotesProvider(generator, self.current_tag, self.last_tag) provider_list = list(provider()) pr_body_list = ['pull 1'] self.assertEqual(len(provider_list), len(pr_body_list)) for pr, pr_body in zip(provider_list, pr_body_list): self.assertEqual(pr['body'], pr_body)
def test_multiple_pull_requests_in_range(self): self.mock_util.mock_get_repo() # Mock the tag calls self._mock_current_tag_ref() self._mock_current_tag() self._mock_current_tag_commit() self._mock_last_tag_ref() self._mock_last_tag() self._mock_last_tag_commit() self._mock_list_pull_requests_multiple_in_range() generator = self._create_generator(self.current_tag, self.last_tag) provider = GithubChangeNotesProvider(generator, self.current_tag, self.last_tag) provider_list = list(provider()) pr_body_list = [] pr_body_list = ["pull 1", "pull 2", "pull 3", "pull 8"] self.assertEqual(len(provider_list), len(pr_body_list)) for pr, pr_body in zip(provider_list, pr_body_list): self.assertEqual(pr.body, pr_body)
def test_current_tag_without_last(self): self._mock_current_tag_ref() current_tag = self._mock_current_tag() self._mock_current_tag_commit() self._mock_last_tag_ref() last_tag = self._mock_last_tag() self._mock_last_tag_commit() self._mock_list_tags_multiple() generator = self._create_generator(self.current_tag) provider = GithubChangeNotesProvider(generator, self.current_tag) self.assertEqual( provider.current_tag_info['ref'], self._get_expected_tag_ref(self.current_tag, self.current_tag_sha)) self.assertEqual(provider.current_tag_info['tag'], current_tag) self.assertEqual( provider.last_tag_info['ref'], self._get_expected_tag_ref(self.last_tag, self.last_tag_sha)) self.assertEqual(provider.last_tag_info['tag'], last_tag)
def test_multiple_pull_requests_in_range(self): # Mock the tag calls self._mock_current_tag_ref() self._mock_current_tag() self._mock_current_tag_commit() self._mock_last_tag_ref() self._mock_last_tag() self._mock_last_tag_commit() self._mock_list_pull_requests_multiple_in_range() generator = self._create_generator(self.current_tag, self.last_tag) provider = GithubChangeNotesProvider(generator, self.current_tag, self.last_tag) provider_list = list(provider()) pr_body_list = [] for n in range(3, 0, -1): pr_body_list.append('pull {}'.format(n)) self.assertEqual(len(provider_list), len(pr_body_list)) for pr, pr_body in zip(provider_list, pr_body_list): self.assertEqual(pr['body'], pr_body)
def test_no_pull_requests_in_repo(self): self.mock_util.mock_get_repo() # Mock the tag calls self._mock_current_tag_ref() self._mock_current_tag() self._mock_current_tag_commit() self._mock_last_tag_ref() self._mock_last_tag() self._mock_last_tag_commit() # Mock the list all pull requests call api_url = "{}/pulls".format(self.repo_api_url) responses.add(method=responses.GET, url=api_url, json=[], content_type="application/json") generator = self._create_generator(self.current_tag, self.last_tag) provider = GithubChangeNotesProvider(generator, self.current_tag, self.last_tag) self.assertEqual(list(provider()), [])
def test_current_tag_is_lightweight(self): self.mock_util.mock_get_repo() tag = "release/lightweight" generator = self._create_generator(tag) provider = GithubChangeNotesProvider(generator, tag) api_url = "{}/git/refs/tags/{}".format(self.repo_api_url, tag) responses.add( method=responses.GET, url=api_url, json={ "object": { "type": "commit", "url": "", "sha": "" }, "url": "", "ref": "tags/{}".format(tag), }, ) with self.assertRaises(GithubApiError): provider.current_tag_info
def test_no_pull_requests_in_repo(self): # Mock the tag calls self._mock_current_tag_ref() self._mock_current_tag() self._mock_current_tag_commit() self._mock_last_tag_ref() self._mock_last_tag() self._mock_last_tag_commit() # Mock the list all pull requests call api_url = '{}/pulls'.format(self.repo_api_url) expected_response_list_pull_requests = [] responses.add( method=responses.GET, url=api_url, body=expected_response_list_pull_requests, content_type='application/json', ) generator = self._create_generator(self.current_tag, self.last_tag) provider = GithubChangeNotesProvider(generator, self.current_tag, self.last_tag) self.assertEqual(list(provider()), [])
def _init_change_notes(self): return GithubChangeNotesProvider(self, self.current_tag, self.last_tag)
def test_invalid_current_tag(self): self._mock_invalid_tag() generator = self._create_generator(self.invalid_tag) provider = GithubChangeNotesProvider(generator, self.invalid_tag) with self.assertRaises(GithubApiNotFoundError): provider.current_tag_info