Skip to content

Commit

Permalink
[TEST] fetch several issues
Browse files Browse the repository at this point in the history
  • Loading branch information
bclenet committed Sep 26, 2023
1 parent 6a8472c commit e18ea00
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 57 deletions.
3 changes: 2 additions & 1 deletion narps_open/utils/status.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
def get_opened_issues():
""" Return a list of opened issues and pull requests for the NARPS Open Pipelines project """
request_url = 'https://api.github.com/repos/Inria-Empenn/narps_open_pipelines/issues'
request_url += '?page={page_number}'
request_url += '?page={page_number}?per_page=100'

issues = []
page = True # Will later be replaced by a table
Expand All @@ -29,6 +29,7 @@ def get_opened_issues():
response.raise_for_status()
page = response.json()
issues += page
page_number += 1

return issues

Expand Down
133 changes: 77 additions & 56 deletions tests/utils/test_status.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,48 +34,62 @@ def mock_api_issue(mocker):
which is actually imported as `get` inside the `narps_open.utils.status` module.
Hence, we patch the `narps_open.utils.status.get` method.
"""
response = Response()
response.status_code = 200
def json_func_page_0():
return [
{
"html_url": "url_issue_2",
"number": 2,
"title" : "Issue for pipeline UK24",
"body" : "Nothing to add here."
},
{
"html_url": "url_pull_3",
"number": 3,
"title" : "Pull request for pipeline 2T6S",
"pull_request" : {},
"body" : "Work has been done."
}
]

json_func_page_1 = json_func_page_0

def json_func_page_2():
return [
{
"html_url": "url_issue_4",
"number": 4,
"title" : None,
"body" : "This is a malformed issue about C88N."
},
{
"html_url": "url_issue_5",
"number": 5,
"title" : "Issue about 2T6S",
"body" : "Something about 2T6S."
}
]

def json_func_page_3():
return []

response.json = json_func
mocker.patch('narps_open.utils.status.get', return_value = response)

# Create a method to mock requests.get
def mocked_requests_get(url, params=None, **kwargs):

response = Response()
response.status_code = 200
def json_func_page_0():
return [
{
"html_url": "url_issue_2",
"number": 2,
"title" : "Issue for pipeline UK24",
"body" : "Nothing to add here."
},
{
"html_url": "url_pull_3",
"number": 3,
"title" : "Pull request for pipeline 2T6S",
"pull_request" : {},
"body" : "Work has been done."
}
]

json_func_page_1 = json_func_page_0

def json_func_page_2():
return [
{
"html_url": "url_issue_4",
"number": 4,
"title" : None,
"body" : "This is a malformed issue about C88N."
},
{
"html_url": "url_issue_5",
"number": 5,
"title" : "Issue about 2T6S",
"body" : "Something about 2T6S."
}
]

def json_func_page_3():
return []

if '?page=1' in url:
response.json = json_func_page_1
elif '?page=2' in url:
response.json = json_func_page_2
elif '?page=3' in url:
response.json = json_func_page_3
else:
response.json = json_func_page_0

return response

mocker.patch('narps_open.utils.status.get', side_effect = mocked_requests_get)
mocker.patch(
'narps_open.utils.status.get_teams_with_pipeline_files',
return_value = ['2T6S', 'UK24', 'Q6O0']
Expand Down Expand Up @@ -104,8 +118,6 @@ def test_get_issues(mocker):
which is actually imported as `get` inside the `narps_open.utils.status` module.
Hence, we patch the `narps_open.utils.status.get` method.
"""
get_opened_issues()

# Create a mock API response for 404 error
response = Response()
response.status_code = 404
Expand All @@ -124,18 +136,27 @@ def json_func():
assert len(get_opened_issues()) == 0

# Create a mock API response for the general usecase
response = Response()
response.status_code = 200
def json_func():
return [
{
"html_url": "urls",
"number": 2,
}
]
response.json = json_func

mocker.patch('narps_open.utils.status.get', return_value = response)
def mocked_requests_get(url, params=None, **kwargs):
response = Response()
response.status_code = 200
def json_func_page_1():
return [
{
"html_url": "urls",
"number": 2,
}
]
def json_func_page_2():
return []

if '?page=2' in url:
response.json = json_func_page_2
else:
response.json = json_func_page_1

return response

mocker.patch('narps_open.utils.status.get', side_effect = mocked_requests_get)
issues = get_opened_issues()
assert len(issues) == 1
assert issues[0]['html_url'] == 'urls'
Expand Down

0 comments on commit e18ea00

Please sign in to comment.