Example #1
0
 def test_no_issue_numbers(self):
     change_note = '# {}\r\n#2 and #3 are fixed by this change'.format(
         self.title)
     pull_request = self._create_pull_request(change_note)
     parser = GithubIssuesParser(self.generator, self.title)
     parser.parse(pull_request)
     self.assertEqual(parser.content, [])
Example #2
0
 def test_issue_numbers_and_other_numbers(self):
     change_note = '# {}\r\nFixes #2 but not #5'.format(self.title)
     pull_request = self._create_pull_request(change_note)
     parser = GithubIssuesParser(None, self.title)
     parser.parse(pull_request)
     expected_content = self._create_expected_content([2])
     self.assertEqual(parser.content, expected_content)
Example #3
0
    def test_render_issue_with_prod_comment(self):
        issue_number = self.issue_number_with_prod_comment
        tag = self.tag_prod

        self.mock_util.mock_get_repo()

        # Mock the issue
        api_url = "{}/issues/{}".format(self.repo_api_url, issue_number)
        expected_issue = self._get_expected_issue(issue_number)
        responses.add(method=responses.GET, url=api_url, json=expected_issue)

        # Mock the comments list
        api_url = "{}/issues/{}/comments".format(self.repo_api_url,
                                                 issue_number)
        expected_comment_1 = self._get_expected_issue_comment(
            GithubIssuesParser.ISSUE_COMMENT["prod"])
        expected_comments = [expected_comment_1]
        responses.add(method=responses.GET,
                      url=api_url,
                      json=expected_comments)

        generator = self._create_generator(tag)
        parser = GithubIssuesParser(generator, self.title)
        parser.content = [{
            "issue_number": issue_number,
            "pr_number": self.pr_number,
            "pr_url": self.pr_url,
        }]
        expected_render = self._create_expected_render(issue_number,
                                                       expected_issue["title"],
                                                       False)
        self.assertEqual(parser.render(), expected_render)
        self.assertEqual(len(responses.calls._calls), 4)
Example #4
0
    def test_render_issue_without_comments(self):
        issue_number = self.issue_number_without_comments
        tag = self.tag_not_prod_or_beta
        self.mock_util.mock_get_repo()
        self.mock_util.mock_post_comment(issue_number)

        # Mock the issue
        api_url = "{}/issues/{}".format(self.repo_api_url, issue_number)
        expected_issue = self._get_expected_issue(issue_number)
        responses.add(method=responses.GET, url=api_url, json=expected_issue)

        # Mock the comments list
        api_url = "{}/issues/{}/comments".format(self.repo_api_url,
                                                 issue_number)
        responses.add(method=responses.GET,
                      url=api_url,
                      body="",
                      content_type="application/json")

        generator = self._create_generator(tag)
        parser = GithubIssuesParser(generator, self.title)
        parser.content = [{
            "issue_number": issue_number,
            "pr_number": self.pr_number,
            "pr_url": self.pr_url,
        }]
        expected_render = self._create_expected_render(issue_number,
                                                       expected_issue["title"],
                                                       False)
        render = parser.render()
        self.assertEqual(render, expected_render)
        self.assertEqual(len(responses.calls._calls), 3)
    def test_render_issue_without_comments(self):
        issue_number = self.issue_number_without_comments
        tag = self.tag_not_prod_or_beta
        self.mock_util.mock_get_repo()
        self.mock_util.mock_post_comment(issue_number)

        # Mock the issue
        api_url = "{}/issues/{}".format(self.repo_api_url, issue_number)
        expected_issue = self._get_expected_issue(issue_number)
        responses.add(method=responses.GET, url=api_url, json=expected_issue)

        # Mock the comments list
        api_url = "{}/issues/{}/comments".format(self.repo_api_url, issue_number)
        responses.add(
            method=responses.GET, url=api_url, json=[], content_type="application/json"
        )

        generator = self._create_generator(tag)
        parser = GithubIssuesParser(generator, self.title)
        parser.content = [
            {
                "issue_number": issue_number,
                "pr_number": self.pr_number,
                "pr_url": self.pr_url,
            }
        ]
        expected_render = self._create_expected_render(
            issue_number, expected_issue["title"], False
        )
        render = parser.render()
        self.assertEqual(render, expected_render)
        self.assertEqual(len(responses.calls._calls), 2)
    def test_render_issue_with_prod_comment(self):
        issue_number = self.issue_number_with_prod_comment
        tag = self.tag_prod

        self.mock_util.mock_get_repo()

        # Mock the issue
        api_url = "{}/issues/{}".format(self.repo_api_url, issue_number)
        expected_issue = self._get_expected_issue(issue_number)
        responses.add(method=responses.GET, url=api_url, json=expected_issue)

        # Mock the comments list
        api_url = "{}/issues/{}/comments".format(self.repo_api_url, issue_number)
        expected_comment_1 = self._get_expected_issue_comment(
            GithubIssuesParser.ISSUE_COMMENT["prod"]
        )
        expected_comments = [expected_comment_1]
        responses.add(method=responses.GET, url=api_url, json=expected_comments)

        generator = self._create_generator(tag)
        parser = GithubIssuesParser(generator, self.title)
        parser.content = [
            {
                "issue_number": issue_number,
                "pr_number": self.pr_number,
                "pr_url": self.pr_url,
            }
        ]
        expected_render = self._create_expected_render(
            issue_number, expected_issue["title"], False
        )
        self.assertEqual(parser.render(), expected_render)
        self.assertEqual(len(responses.calls._calls), 3)
Example #7
0
 def test_issue_numbers(self):
     change_note = '# {}\r\nFixes #2, Closed #3 and Resolve #5'.format(
         self.title)
     pull_request = self._create_pull_request(change_note)
     parser = GithubIssuesParser(self.generator, self.title)
     parser.parse(pull_request)
     expected_content = self._create_expected_content([2, 3, 5])
     self.assertEqual(parser.content, expected_content)
Example #8
0
 def test_render_issue_number_valid(self):
     api_url = "{}/issues/{}".format(self.repo_api_url, self.issue_number_valid)
     expected_response = self._get_expected_issue(self.issue_number_valid)
     responses.add(method=responses.GET, url=api_url, json=expected_response)
     generator = self._create_generator()
     parser = GithubIssuesParser(generator, self.title)
     parser.content = [self.issue_number_valid]
     expected_render = "# {}\r\n\r\n#{}: {}".format(self.title, self.issue_number_valid, expected_response["title"])
     self.assertEqual(parser.render(), expected_render)
Example #9
0
 def test_render_issue_number_invalid(self):
     api_url = "{}/issues/{}".format(self.repo_api_url, self.issue_number_invalid)
     expected_response = self._get_expected_not_found()
     responses.add(method=responses.GET, url=api_url, json=expected_response, status=httplib.NOT_FOUND)
     generator = self._create_generator()
     parser = GithubIssuesParser(generator, self.title)
     parser.content = [self.issue_number_invalid]
     with self.assertRaises(GithubApiNotFoundError):
         parser.render()
Example #10
0
 def test_no_issue_numbers(self):
     pr_number = 1
     self.mock_util.mock_get_repo()
     change_note = "# {}\r\n#2 and #3 are fixed by this change".format(self.title)
     self.mock_util.mock_pull_request(pr_number, body=change_note)
     generator = self._create_generator()
     repo = generator.get_repo()
     pull_request = repo.pull_request(pr_number)
     parser = GithubIssuesParser(generator, self.title)
     parser.parse(pull_request)
     self.assertEqual(parser.content, [])
Example #11
0
 def test_issue_numbers_and_other_numbers(self):
     self.mock_util.mock_get_repo()
     change_note = "# {}\r\nFixes #2 but not #5".format(self.title)
     self.mock_util.mock_pull_request(self.pr_number, body=change_note)
     generator = self._create_generator()
     repo = generator.get_repo()
     pull_request = repo.pull_request(self.pr_number)
     parser = GithubIssuesParser(generator, self.title)
     parser.parse(pull_request)
     pr_url = "https://github.com/TestOwner/TestRepo/pulls/{}".format(self.pr_number)
     expected_content = self._create_expected_content([2], pr_url)
     self.assertEqual(parser.content, expected_content)
Example #12
0
    def test_render_issue_with_beta_comment(self):
        issue_number = self.issue_number_with_beta_comment
        tag = self.tag_beta
        self.mock_util.mock_get_repo()
        self.mock_util.mock_post_comment(issue_number)

        # Mock the issue
        api_url = '{}/issues/{}'.format(
            self.repo_api_url,
            issue_number,
        )
        expected_issue = self._get_expected_issue(issue_number)
        responses.add(
            method=responses.GET,
            url=api_url,
            json=expected_issue,
        )

        # Mock the comments list
        api_url = '{}/issues/{}/comments'.format(
            self.repo_api_url,
            issue_number,
        )
        expected_comment_1 = self._get_expected_issue_comment(
            GithubIssuesParser.ISSUE_COMMENT['beta'],
        )
        expected_comments = [
            expected_comment_1,
        ]
        responses.add(
            method=responses.GET,
            url=api_url,
            json=expected_comments,
        )

        generator = self._create_generator(tag)
        parser = GithubIssuesParser(generator, self.title)
        parser.content = [{
            'issue_number': issue_number,
            'pr_number': self.pr_number,
            'pr_url': self.pr_url,
        }]
        expected_render = self._create_expected_render(
            issue_number,
            expected_issue['title'],
            False,
        )
        render = parser.render()
        self.assertEqual(render, expected_render)
        self.assertEqual(len(responses.calls._calls), 4)
Example #13
0
    def test_render_issue_with_prod_comment(self):
        issue_number = self.issue_number_with_prod_comment
        tag = self.tag_prod

        # Mock the issue
        api_url = '{}/issues/{}'.format(
            self.repo_api_url,
            issue_number,
        )
        expected_issue = self._get_expected_issue(issue_number)
        responses.add(
            method=responses.GET,
            url=api_url,
            json=expected_issue,
        )

        # Mock the comments list
        api_url = '{}/issues/{}/comments'.format(
            self.repo_api_url,
            issue_number,
        )
        expected_comment_1 = self._get_expected_issue_comment(
            GithubIssuesParser.ISSUE_COMMENT['prod'],
        )
        expected_comments = [
            expected_comment_1,
        ]
        responses.add(
            method=responses.GET,
            url=api_url,
            json=expected_comments,
        )

        generator = self._create_generator(tag)
        parser = GithubIssuesParser(generator, self.title)
        parser.content = [{
            'issue_number': issue_number,
            'pr_number': self.pr_number,
            'pr_url': self.pr_url,
        }]
        expected_render = self._create_expected_render(
            issue_number,
            expected_issue['title'],
            False,
        )
        self.assertEqual(parser.render(), expected_render)

        # Only 2 api calls were made, ensuring comment creation
        # was not attempted
        self.assertEqual(len(responses.calls._calls), 2)
Example #14
0
 def test_render_issue_number_invalid(self):
     api_url = '{}/issues/{}'.format(self.repo_api_url,
                                     self.issue_number_invalid)
     expected_response = self._get_expected_not_found()
     responses.add(
         method=responses.GET,
         url=api_url,
         json=expected_response,
         status=httplib.NOT_FOUND,
     )
     generator = self._create_generator()
     parser = GithubIssuesParser(generator, self.title)
     parser.content = [self.issue_number_invalid]
     with self.assertRaises(GithubApiNotFoundError):
         parser.render()
Example #15
0
 def _init_parsers(self):
     self.parsers.append(ChangeNotesLinesParser(
         self,
         'Critical Changes',
     ))
     self.parsers.append(ChangeNotesLinesParser(self, 'Changes'))
     self.parsers.append(GithubIssuesParser(self, 'Issues Closed'))
Example #16
0
    def test_render_issue_without_comments(self):
        issue_number = self.issue_number_without_comments
        tag = self.tag_not_prod_or_beta

        # Mock the issue
        api_url = '{}/issues/{}'.format(
            self.repo_api_url,
            issue_number,
        )
        expected_issue = self._get_expected_issue(issue_number)
        responses.add(
            method=responses.GET,
            url=api_url,
            json=expected_issue,
        )

        # Mock the comments list
        api_url = '{}/issues/{}/comments'.format(
            self.repo_api_url,
            issue_number,
        )
        responses.add(
            method=responses.GET,
            url=api_url,
            body=[],
            content_type='application/json',
        )

        generator = self._create_generator(tag)
        parser = GithubIssuesParser(generator, self.title)
        parser.content = [{
            'issue_number': issue_number,
            'pr_number': self.pr_number,
            'pr_url': self.pr_url,
        }]
        expected_render = self._create_expected_render(
            issue_number,
            expected_issue['title'],
            False,
        )
        self.assertEqual(parser.render(), expected_render)

        # Only 2 api calls were made, ensuring comment creation
        # was not attempted
        self.assertEqual(len(responses.calls._calls), 2)
Example #17
0
 def test_render_issue_number_valid(self):
     api_url = "{}/issues/{}".format(self.repo_api_url,
                                     self.issue_number_valid)
     expected_response = self._get_expected_issue(self.issue_number_valid)
     self.mock_util.mock_get_repo()
     responses.add(method=responses.GET,
                   url=api_url,
                   json=expected_response)
     generator = self._create_generator()
     parser = GithubIssuesParser(generator, self.title)
     parser.content = [{
         "issue_number": self.issue_number_valid,
         "pr_number": self.pr_number,
         "pr_url": self.pr_url,
     }]
     expected_render = self._create_expected_render(
         self.issue_number_valid, expected_response["title"], False)
     self.assertEqual(parser.render(), expected_render)
Example #18
0
 def test_render_issue_number_valid(self):
     api_url = '{}/issues/{}'.format(self.repo_api_url,
                                     self.issue_number_valid)
     expected_response = self._get_expected_issue(self.issue_number_valid)
     responses.add(
         method=responses.GET,
         url=api_url,
         json=expected_response,
     )
     generator = self._create_generator()
     parser = GithubIssuesParser(generator, self.title)
     parser.content = [self.issue_number_valid]
     expected_render = '# {}\r\n\r\n#{}: {}'.format(
         self.title,
         self.issue_number_valid,
         expected_response['title'],
     )
     self.assertEqual(parser.render(), expected_render)
 def test_render_issue_number_valid(self):
     api_url = "{}/issues/{}".format(self.repo_api_url, self.issue_number_valid)
     expected_response = self._get_expected_issue(self.issue_number_valid)
     self.mock_util.mock_get_repo()
     responses.add(method=responses.GET, url=api_url, json=expected_response)
     generator = self._create_generator()
     generator.link_pr = True
     parser = GithubIssuesParser(generator, self.title)
     parser.content = [
         {
             "issue_number": self.issue_number_valid,
             "pr_number": self.pr_number,
             "pr_url": self.pr_url,
         }
     ]
     expected_render = self._create_expected_render(
         self.issue_number_valid, expected_response["title"], True
     )
     self.assertEqual(parser.render(), expected_render)
Example #20
0
    def test_render_issue_without_prod_comment(self):
        issue_number = self.issue_number_without_prod_comment
        tag = self.tag_prod
        self.mock_util.mock_get_repo()
        # Mock the issue
        api_url = "{}/issues/{}".format(self.repo_api_url, issue_number)
        expected_issue = self._get_expected_issue(issue_number)
        responses.add(method=responses.GET, url=api_url, json=expected_issue)

        # Mock the comments list
        api_url = "{}/issues/{}/comments".format(self.repo_api_url,
                                                 issue_number)
        expected_comment_1 = self._get_expected_issue_comment(
            "Some other comment")
        expected_comments = [expected_comment_1]
        responses.add(method=responses.GET,
                      url=api_url,
                      body="",
                      content_type="application/json")

        # Mock the comment post response
        api_url = "{}/issues/{}/comments".format(self.repo_api_url,
                                                 issue_number)
        expected_comment_1 = self._get_expected_issue_comment("{} {}".format(
            GithubIssuesParser.ISSUE_COMMENT["prod"],
            self.version_number_prod))
        responses.add(method=responses.POST,
                      url=api_url,
                      json=expected_comment_1)

        generator = self._create_generator(tag)
        parser = GithubIssuesParser(generator, self.title)
        parser.content = [{
            "issue_number": issue_number,
            "pr_number": self.pr_number,
            "pr_url": self.pr_url,
        }]
        expected_render = self._create_expected_render(issue_number,
                                                       expected_issue["title"],
                                                       False)
        render = parser.render()
        self.assertEqual(render, expected_render)
        self.assertEqual(len(responses.calls._calls), 5)
Example #21
0
 def test_render_issue_number_invalid(self):
     api_url = "{}/issues/{}".format(self.repo_api_url,
                                     self.issue_number_invalid)
     expected_response = self._get_expected_not_found()
     self.mock_util.mock_get_repo()
     responses.add(
         method=responses.GET,
         url=api_url,
         json=expected_response,
         status=http.client.NOT_FOUND,
     )
     generator = self._create_generator()
     parser = GithubIssuesParser(generator, self.title)
     parser.content = [{
         "issue_number": self.issue_number_invalid,
         "pr_number": self.pr_number,
         "pr_url": self.pr_url,
     }]
     with self.assertRaises(GithubApiNotFoundError):
         parser.render()
    def test_render_issue_without_prod_comment(self):
        issue_number = self.issue_number_without_prod_comment
        tag = self.tag_prod
        self.mock_util.mock_get_repo()
        # Mock the issue
        api_url = "{}/issues/{}".format(self.repo_api_url, issue_number)
        expected_issue = self._get_expected_issue(issue_number)
        responses.add(method=responses.GET, url=api_url, json=expected_issue)

        # Mock the comments list
        api_url = "{}/issues/{}/comments".format(self.repo_api_url, issue_number)
        expected_comment_1 = self._get_expected_issue_comment("Some other comment")
        responses.add(
            method=responses.GET, url=api_url, json=[], content_type="application/json"
        )

        # Mock the comment post response
        api_url = "{}/issues/{}/comments".format(self.repo_api_url, issue_number)
        expected_comment_1 = self._get_expected_issue_comment(
            "{} {}".format(
                GithubIssuesParser.ISSUE_COMMENT["prod"], self.version_number_prod
            )
        )
        responses.add(method=responses.POST, url=api_url, json=expected_comment_1)

        generator = self._create_generator(tag)
        parser = GithubIssuesParser(generator, self.title)
        parser.content = [
            {
                "issue_number": issue_number,
                "pr_number": self.pr_number,
                "pr_url": self.pr_url,
            }
        ]
        expected_render = self._create_expected_render(
            issue_number, expected_issue["title"], False
        )
        render = parser.render()
        self.assertEqual(render, expected_render)
        self.assertEqual(len(responses.calls._calls), 4)
Example #23
0
 def test_no_issue_numbers(self):
     change_note = "# {}\r\n#2 and #3 are fixed by this change".format(self.title)
     parser = GithubIssuesParser(None, self.title)
     parser.parse(change_note)
     self.assertEqual(parser.content, [])
Example #24
0
 def test_issue_numbers(self):
     change_note = '# {}\r\nFixes #2, Closed #3 and Resolve #5'.format(
         self.title)
     parser = GithubIssuesParser(None, self.title)
     parser.parse(change_note)
     self.assertEqual(parser.content, [2, 3, 5])
Example #25
0
 def test_init__issues_disabled(self):
     generator = mock.Mock(has_issues=False)
     with self.assertRaises(GithubIssuesError):
         parser = GithubIssuesParser(generator, self.title)
Example #26
0
    def test_render_issue_without_prod_comment(self):
        issue_number = self.issue_number_without_prod_comment
        tag = self.tag_prod

        # Mock the issue
        api_url = '{}/issues/{}'.format(
            self.repo_api_url,
            issue_number,
        )
        expected_issue = self._get_expected_issue(issue_number)
        responses.add(
            method=responses.GET,
            url=api_url,
            json=expected_issue,
        )

        # Mock the comments list
        api_url = '{}/issues/{}/comments'.format(
            self.repo_api_url,
            issue_number,
        )
        expected_comment_1 = self._get_expected_issue_comment(
            'Some other comment',
        )
        expected_comments = [
            expected_comment_1,
        ]
        responses.add(
            method=responses.GET,
            url=api_url,
            body=[],
            content_type='application/json',
        )

        # Mock the comment post response
        api_url = '{}/issues/{}/comments'.format(
            self.repo_api_url,
            issue_number,
        )
        expected_comment_1 = self._get_expected_issue_comment(
            '{} {}'.format(
                GithubIssuesParser.ISSUE_COMMENT['prod'],
                self.version_number_prod,
            )
        )
        responses.add(
            method=responses.POST,
            url=api_url,
            json=expected_comment_1,
        )

        generator = self._create_generator(tag)
        parser = GithubIssuesParser(generator, self.title)
        parser.content = [{
            'issue_number': issue_number,
            'pr_number': self.pr_number,
            'pr_url': self.pr_url,
        }]
        expected_render = self._create_expected_render(
            issue_number,
            expected_issue['title'],
            False,
        )
        self.assertEqual(parser.render(), expected_render)

        # 3 api calls were made, ensuring comment creation
        # was attempted
        self.assertEqual(len(responses.calls._calls), 3)
Example #27
0
 def test_issue_numbers_and_other_numbers(self):
     change_note = '# {}\r\nFixes #2 but not #5'.format(self.title)
     parser = GithubIssuesParser(None, self.title)
     parser.parse(change_note)
     self.assertEqual(parser.content, [2])
Example #28
0
 def test_no_issue_numbers(self):
     change_note = '# {}\r\n#2 and #3 are fixed by this change'.format(
         self.title)
     parser = GithubIssuesParser(None, self.title)
     parser.parse(change_note)
     self.assertEqual(parser.content, [])
Example #29
0
 def test_issue_numbers(self):
     change_note = "# {}\r\nFixes #2, Closed #3 and Resolve #5".format(self.title)
     parser = GithubIssuesParser(None, self.title)
     parser.parse(change_note)
     self.assertEqual(parser.content, [2, 3, 5])
Example #30
0
 def test_issue_numbers_and_other_numbers(self):
     change_note = "# {}\r\nFixes #2 but not #5".format(self.title)
     parser = GithubIssuesParser(None, self.title)
     parser.parse(change_note)
     self.assertEqual(parser.content, [2])