"""Tests for Handlers.""" import json from unittest.mock import MagicMock from unittest.mock import patch import application from oto import response from oto import status as response_code from backend import handlers from backend.logic import vendor as label_logic def test_handler_get_track(mocker): """Test get_track handler is successful.""" mocker.patch.object( label_logic, 'get_vendor_details', return_value=response.Response(message={'name': 'Foo bar'})) with application.app.test_request_context(): res = handlers.get_vendor_details(1) assert res.status_code == response_code.OK def test_handler_get_track_not_found(mocker): """Test get_track handler fails.""" mocker.patch.object( label_logic, 'get_vendor_details', return_value=response.create_not_found_response()) with application.app.test_request_context(): res = handlers.get_vendor_details(1) assert res.status_code == response_code.NOT_FOUND # Test Exception Handler @patch('backend.handlers.g') def test_exception_handler(mock_g): """Verify exception_Handler returns 500 status code and json payload.""" message = ( 'The server encountered an internal error ' 'and was unable to complete your request.') mock_error = MagicMock() server_response = handlers.exception_handler(mock_error) mock_g.log.exception.assert_called_with(mock_error) # assert status code is 500 assert server_response.status_code == response_code.INTERNAL_ERROR # assert json payload response_message = json.loads(server_response.data.decode()) assert response_message['message'] == message assert response_message['code'] == response.error.ERROR_CODE_INTERNAL_ERROR