Created
May 22, 2022 22:57
-
-
Save sminnee/3b939a81615976510639786e81873c0a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from typing import Dict, Union, List, Optional | |
from app_util.tests.base import BaseTestCase | |
from app_util.tests.util import send_request | |
class MockApiClient: | |
"""A mock API client that returns a summary of the request made in its JSON response.""" | |
def get(self, url: str, data: dict, **headers): | |
return MockApiClient.Response({"method": "get", "url": url, "data": data, "headers": headers}) | |
def post(self, url: str, format: Optional[str], data: Optional[Union[Dict, List, bytes]], **headers): | |
return MockApiClient.Response( | |
{"method": "post", "url": url, "format": format, "data": data, "headers": headers} | |
) | |
def patch(self, url: str, format: Optional[str], data: Optional[Union[Dict, List, bytes]], **headers): | |
return MockApiClient.Response( | |
{"method": "patch", "url": url, "format": format, "data": data, "headers": headers} | |
) | |
def put(self, url: str, format: Optional[str], data: Optional[Union[Dict, List, bytes]], **headers): | |
return MockApiClient.Response({"method": "put", "url": url, "format": format, "data": data, "headers": headers}) | |
def delete(self, url: str, format: Optional[str], data: Optional[Union[Dict, List, bytes]], **headers): | |
return MockApiClient.Response( | |
{"method": "delete", "url": url, "format": format, "data": data, "headers": headers} | |
) | |
class Response: | |
payload: Union[Dict, List] | |
def __init__(self, payload: Union[Dict, List]) -> None: | |
self.payload = payload | |
def get(self, header: str): | |
if header.lower() == "content-type": | |
return "application/json" | |
def json(self): | |
return self.payload | |
class BulkUpdateTestCase(BaseTestCase): | |
# Apply the mock API client for all tests | |
def setUp(self) -> None: | |
# To do: implement | |
# BulkUpdateViewSet.api_client = MockApiClient | |
return super().setUp() | |
def tearDown(self) -> None: | |
# BulkUpdateViewSet.api_client = None | |
return super().tearDown() | |
def test_bulk_endpoint(self): | |
"""Basis test that the endpoint function""" | |
client, user = self.create_client() | |
response = send_request( | |
client, | |
url="/api/bulk-update", | |
method="post", | |
data={ | |
"requests": [ | |
{ | |
"url": "/api/work-order/cb01f22f/2022-05-22", | |
"method": "PATCH", | |
"body": { | |
"status": "ON_HOLD", | |
}, | |
"query": { | |
"disable_notifications": 1, | |
"edit_type": 3, | |
}, | |
}, | |
{ | |
"url": "/api/work-order/2dc47a39/2022-04-29", | |
"method": "PATCH", | |
"body": { | |
"status": "ON_HOLD", | |
}, | |
"query": { | |
"disable_notifications": 1, | |
"edit_type": 3, | |
}, | |
}, | |
] | |
}, | |
) | |
# Assert which API calls have been made by checking the responses of the mock handler | |
self.assertEqual( | |
response, | |
[ | |
{ | |
"status": 200, | |
"body": { | |
"method": "patch", | |
"url": "/api/work-order/cb01f22f/2022-05-22?disable_notifications=1&edit_type=3", | |
"format": "json", | |
"data": { | |
"status": "ON_HOLD", | |
}, | |
"headers": [], | |
}, | |
}, | |
{ | |
"status": 200, | |
"body": { | |
"method": "patch", | |
"url": "/api/work-order/2dc47a39/2022-04-29?disable_notifications=1&edit_type=3", | |
"format": "json", | |
"data": { | |
"status": "ON_HOLD", | |
}, | |
"headers": [], | |
}, | |
}, | |
], | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment