|
| 1 | +import uuid |
| 2 | +from unittest.mock import MagicMock |
| 3 | +import unittest |
| 4 | +import json |
| 5 | +import sys |
| 6 | +import os |
| 7 | + |
| 8 | +sys.path.append(f"{os.path.dirname(os.path.abspath(__file__))}/../src") |
| 9 | + |
| 10 | +from dynamodb import EventTable |
| 11 | +from get_imms_handler import get_imms, create_response |
| 12 | + |
| 13 | + |
| 14 | +class TestGetImms(unittest.TestCase): |
| 15 | + def setUp(self): |
| 16 | + self.dynamodb_service = EventTable() |
| 17 | + |
| 18 | + def test_get_imms_happy_path(self): |
| 19 | + # Arrange |
| 20 | + self.dynamodb_service.get_event_by_id = MagicMock(return_value={"message": "Mocked event data"}) |
| 21 | + formatted_event = {"pathParameters": {"id": "sampleid"}} |
| 22 | + |
| 23 | + # Act |
| 24 | + result = get_imms(formatted_event, self.dynamodb_service) |
| 25 | + |
| 26 | + # Assert |
| 27 | + self.dynamodb_service.get_event_by_id.assert_called_once_with(formatted_event["pathParameters"]["id"]) |
| 28 | + assert result['statusCode'] == 200 |
| 29 | + self.assertEquals(result['headers']['Content-Type'], "application/fhir+json") |
| 30 | + assert json.loads(result['body']) == {"message": "Mocked event data"} |
| 31 | + |
| 32 | + def test_get_imms_handler_sad_path_400(self): |
| 33 | + unformatted_event = {"pathParameters": {"id": "unexpected_id"}} |
| 34 | + |
| 35 | + # Act |
| 36 | + result = get_imms(unformatted_event, None) |
| 37 | + |
| 38 | + # Assert |
| 39 | + assert result['statusCode'] == 400 |
| 40 | + self.assertEquals(result['headers']['Content-Type'], "application/fhir+json") |
| 41 | + act_body = json.loads(result['body']) |
| 42 | + exp_body = create_response(str(uuid.uuid4()), |
| 43 | + "he provided event ID is either missing or not in the expected format.", |
| 44 | + "invalid") |
| 45 | + act_body["id"] = None |
| 46 | + exp_body["id"] = None |
| 47 | + self.assertDictEqual(act_body, exp_body) |
| 48 | + |
| 49 | + def test_get_imms_handler_sad_path_404(self): |
| 50 | + # Arrange |
| 51 | + self.dynamodb_service.get_event_by_id = MagicMock(return_value=None) |
| 52 | + incorrect_event = {"pathParameters": {"id": "incorrectid"}} |
| 53 | + |
| 54 | + # Act |
| 55 | + result = get_imms(incorrect_event, self.dynamodb_service) |
| 56 | + |
| 57 | + # Assert |
| 58 | + assert result['statusCode'] == 404 |
| 59 | + self.assertEquals(result['headers']['Content-Type'], "application/fhir+json") |
| 60 | + act_body = json.loads(result['body']) |
| 61 | + exp_body = create_response(str(uuid.uuid4()), "The requested resource was not found.", "not-found") |
| 62 | + act_body["id"] = None |
| 63 | + exp_body["id"] = None |
| 64 | + self.assertDictEqual(act_body, exp_body) |
0 commit comments