diff --git a/server/src/test/return_luas_data/test_lambda_function.py b/server/src/test/return_luas_data/test_lambda_function.py new file mode 100644 index 0000000..f0c80e6 --- /dev/null +++ b/server/src/test/return_luas_data/test_lambda_function.py @@ -0,0 +1,38 @@ +import json +import unittest +from unittest.mock import patch, MagicMock +from src.functions.return_luas_data.lambda_function import lambda_handler + +class TestLambdaFunction(unittest.TestCase): + + @patch('src.functions.return_luas_data.lambda_function.requests.get') + @patch('src.functions.return_luas_data.lambda_function.xmltodict.parse') + def test_lambda_handler_returns_forecast_for_valid_luasStopCode(self, mock_parse, mock_get): + mock_response = MagicMock() + mock_response.text = 'test' + mock_get.return_value = mock_response + mock_parse.return_value = {'forecast': 'data'} + + event = { + 'queryStringParameters': {'luasStopCode': 'test_stop'} + } + context = {} + + response = lambda_handler(event, context) + + self.assertEqual(response['statusCode'], 200) + self.assertEqual(json.loads(response['body']), {'forecast': 'data'}) + + @patch('src.functions.return_luas_data.lambda_function.requests.get') + def test_lambda_handler_returns_error_on_exception(self, mock_get): + mock_get.side_effect = Exception('Test exception') + + event = { + 'queryStringParameters': {'luasStopCode': 'test_stop'} + } + context = {} + + response = lambda_handler(event, context) + + self.assertEqual(response['statusCode'], 500) + self.assertIn('error', json.loads(response['body'])) \ No newline at end of file