Ejemplo n.º 1
0
    def test_get_ready_prs(self, mock_utcnow, mock_get_is_mergeable,
                           mock_get_open_prs, mock_get_events):
        mock_get_open_prs.return_value = [
            create_mock_pr(10, "WIP", "2017-01-01T00:00:00Z",
                           "2017-01-01T00:00:00Z"),
            create_mock_pr(11, "OK", "2017-01-01T00:00:00Z",
                           "2017-01-01T00:00:00Z"),
            create_mock_pr(12, "Not in window", "2017-01-01T00:00:10Z",
                           "2017-01-01T00:00:00Z"),
            create_mock_pr(13, "Not mergeable", "2017-01-01T00:00:00Z",
                           "2017-01-01T00:00:00Z"),
            create_mock_pr(14, "Stale", "2016-01-01T00:00:00Z",
                           "2017-01-01T00:00:00Z")
        ]

        def get_is_mergeable_side_effect(api, urn, pr_num):
            return False if pr_num in [13, 14] else True

        mock_get_is_mergeable.side_effect = get_is_mergeable_side_effect
        mock_utcnow.return_value = arrow.get("2017-01-01T00:00:10Z")
        mock_get_events.return_value = []
        api = MagicMock()
        api.BASE_URL = "api_base_url"
        ready_prs = prs.get_ready_prs(api, "urn", 5)
        ready_prs_list = [pr for pr in ready_prs]
        self.assertEqual(len(ready_prs_list), 1)
        self.assertEqual(ready_prs_list[0].get("number"), 11)
Ejemplo n.º 2
0
    def test_get_ready_prs(self, mock_utcnow, mock_get_is_mergeable,
                           mock_get_open_prs, mock_get_events,
                           mock_has_build_failed, mock_has_build_passed):
        # Title of each PR describes it's state
        mock_get_open_prs.return_value = [
            create_mock_pr(10, "WIP", "2017-01-01T00:00:00Z",
                           "2017-01-01T00:00:00Z"),
            create_mock_pr(11, "OK", "2017-01-01T00:00:00Z",
                           "2017-01-01T00:00:00Z"),
            create_mock_pr(12, "Not in window", "2017-01-01T00:00:10Z",
                           "2017-01-01T00:00:00Z"),
            create_mock_pr(13, "Not mergeable", "2017-01-01T00:00:00Z",
                           "2017-01-01T00:00:00Z"),
            create_mock_pr(14, "Stale", "2016-01-01T00:00:00Z",
                           "2017-01-01T00:00:00Z"),
            create_mock_pr(15, "Build failed", "2017-01-01T00:00:00Z",
                           "2017-01-01T00:00:00Z")
        ]

        master_build_status = True

        def get_is_mergeable_side_effect(api, urn, pr_num):
            return False if pr_num in [13, 14] else True

        def has_build_passed_side_effect(api, urn, ref):
            return master_build_status

        def has_build_failed_side_effect(api, urn, ref):
            return True if "15" in ref else False

        mock_get_is_mergeable.side_effect = get_is_mergeable_side_effect
        mock_has_build_passed.side_effect = has_build_passed_side_effect
        mock_has_build_failed.side_effect = has_build_failed_side_effect
        mock_utcnow.return_value = arrow.get("2017-01-01T00:00:10Z")
        mock_get_events.return_value = []
        api = MagicMock()
        api.BASE_URL = "api_base_url"

        # In this scenario only PR with number 11 should be returned.
        ready_prs = prs.get_ready_prs(api, "urn", 5)
        ready_prs_list = [pr for pr in ready_prs]
        self.assertEqual(len(ready_prs_list), 1)
        self.assertEqual(ready_prs_list[0].get("number"), 11)

        # Test for the case when master branch is failing.
        # PR 15 will be also returned in this case as we don't
        # block PRs if master is also failing
        master_build_status = False
        ready_prs = prs.get_ready_prs(api, "urn", 5)
        ready_prs_list = [pr for pr in ready_prs]
        self.assertTrue(len(ready_prs_list) is 2)
        self.assertTrue(ready_prs_list[0].get("number") is 11)
        self.assertTrue(ready_prs_list[1].get("number") is 15)
Ejemplo n.º 3
0
    def test_get_pr_last_updated_with_events(self, mock_get_events):
        mock_get_events.return_value = \
            create_mock_events([("PushEvent", "test_ref", "2017-01-04T00:00:10Z"),
                                ("PushEvent", "blah", "2017-01-03T00:00:10Z")])

        api = MagicMock()
        api.BASE_URL = "api_base_url"

        last_updated = prs.get_pr_last_updated(api,
                                               create_mock_pr(10, "OK", "2017-01-05T00:00:00Z",
                                                              "2017-01-02T00:00:00Z"))

        self.assertEqual(last_updated, arrow.get("2017-01-04T00:00:10Z"))