From 84b9b748c9a63f6d84157d7baab2554b0c233392 Mon Sep 17 00:00:00 2001 From: tguler Date: Tue, 4 Feb 2025 15:11:23 +0100 Subject: [PATCH] unittest wip --- .../bitbucket/merge_requests.py | 8 ++- .../bitbucket/test_merge_requests.py | 59 +++++++------------ 2 files changed, 28 insertions(+), 39 deletions(-) diff --git a/components/collector/src/source_collectors/bitbucket/merge_requests.py b/components/collector/src/source_collectors/bitbucket/merge_requests.py index f47f0c5f7b..3d9f49384c 100644 --- a/components/collector/src/source_collectors/bitbucket/merge_requests.py +++ b/components/collector/src/source_collectors/bitbucket/merge_requests.py @@ -1,4 +1,5 @@ """Bitbucket merge requests collector.""" +import pdb from typing import cast from collector_utilities.functions import match_string_or_regular_expression @@ -28,9 +29,12 @@ async def _landing_url(self, responses: SourceResponses) -> URL: async def _get_source_responses(self, *urls: URL) -> SourceResponses: """Extend to use Bitbucket pagination, if necessary.""" responses = await super()._get_source_responses(*urls) - while not (await responses[-1].json())["isLastPage"]: - nr_merge_requests_to_skip = (await responses[-1].json())["nextPageStart"] + isLastPage = False + while not isLastPage: + json = await responses[-1].json() + nr_merge_requests_to_skip = json.get("nextPageStart", 0) responses.extend(await super()._get_source_responses(URL(f"{urls[0]}&start={nr_merge_requests_to_skip}"))) + isLastPage = json["isLastPage"] return responses async def _parse_entities(self, responses: SourceResponses) -> Entities: diff --git a/components/collector/tests/source_collectors/bitbucket/test_merge_requests.py b/components/collector/tests/source_collectors/bitbucket/test_merge_requests.py index c122dd595f..cc80c0bbff 100644 --- a/components/collector/tests/source_collectors/bitbucket/test_merge_requests.py +++ b/components/collector/tests/source_collectors/bitbucket/test_merge_requests.py @@ -74,40 +74,25 @@ async def test_merge_requests(self): landing_url=self.landing_url, ) - # async def test_pagination(self): - # """Test that pagination works.""" - # BitbucketMergeRequests.PAGE_SIZE = 1 - # bitbucket_json = [ - # { "isLastPage": False, "nextPageStart": 1, "values": [self.create_merge_request(1)]}, - # { "isLastPage": False, "nextPageStart": 2, "values": [self.create_merge_request(2)]}, - # { "isLastPage": True, "values": [self.create_merge_request(3)]}, - # ] - # response = await self.collect(get_request_json_side_effect=bitbucket_json) - # self.assert_measurement( - # response, - # value="2", - # total="2", - # entities=[self.create_entity(1), self.create_entity(2)], - # landing_url=self.landing_url, - # ) - - # async def test_pagination(self): - # """Test that pagination works.""" - # merge_requests_json1 = self.create_mr_json([self.create_merge_request(1)], has_next_page=True) - # merge_requests_json2 = self.create_mr_json([self.create_merge_request(2)]) - # # merge_request_fields_response = AsyncMock() - # merge_requests_page1 = AsyncMock() - # merge_requests_page2 = AsyncMock() - # execute = AsyncMock(side_effect=[merge_requests_page1, merge_requests_page2]) - # # merge_request_fields_response.json = AsyncMock(return_value=self.merge_request_fields_json()) - # merge_requests_page1.json = AsyncMock(return_value=merge_requests_json1) - # merge_requests_page2.json = AsyncMock(return_value=merge_requests_json2) - # entities = [self.create_entity(1), self.create_entity(2)] - # # response = await self.collect_merge_requests(execute) - # # pdb.set_trace() - # # self.assert_measurement(response, value="2", total="2", entities=entities, landing_url=self.landing_url) - # - # # links = {"next": {"url": "https://harbor/next_page"}} - # response = await self.collect(get_request_json_side_effect=[merge_requests_json1, merge_requests_json2]) - # # pdb.set_trace() - # self.assert_measurement(response, value="2", entities=entities) + async def test_pagination(self): + """Test that pagination works.""" + BitbucketMergeRequests.PAGE_SIZE = 1 + bitbucket_json = [ + { "Hallo": True, "isLastPage": False, "nextPageStart": 1, "values": [self.create_merge_request(1)]}, + { "isLastPage": False, "nextPageStart": 2, "values": [self.create_merge_request(2)]}, + { "isLastPage": True, "values": [self.create_merge_request(3)]}, + {"isLastPage": False, "nextPageStart": 1, "values": [self.create_merge_request(1)]}, + {"isLastPage": False, "nextPageStart": 2, "values": [self.create_merge_request(2)]}, + {"isLastPage": True, "values": [self.create_merge_request(3)]}, + {"isLastPage": False, "nextPageStart": 1, "values": [self.create_merge_request(1)]}, + {"isLastPage": False, "nextPageStart": 2, "values": [self.create_merge_request(2)]}, + {"isLastPage": True, "values": [self.create_merge_request(3)]}, + ] + response = await self.collect(get_request_json_side_effect=bitbucket_json) + self.assert_measurement( + response, + value="3", + total="9", + entities=[self.create_entity(1), self.create_entity(2)], + landing_url=self.landing_url, + )