"""Lambda test module.""" import pytest from src import app from src import service def test_handler_success(request_engine, mock_event): """Test handler success.""" request_engine[service.OWS_PRODUCT_WORKFLOW].add_spec( 'GET', '/correction', status=200, response={ 'items': [{ 'table_name': 'track', 'field_name': 'lyrics', 'key_id': 1, 'key_value': 'abc' }] } ) request_engine[service.OWS_LYRICS].add_spec( 'PUT', '/tracks', status=200, response={'foo': 'bar'} ) result = app.handler(mock_event, None) assert result == {'status': 'success'} def test_handler_put_error(request_engine, mock_event): """Test handler put error.""" request_engine[service.OWS_PRODUCT_WORKFLOW].add_spec( 'GET', '/correction', status=200, response={'items': [ { 'table_name': 'track', 'field_name': 'lyrics', 'key_id': 777, 'key_value': 'abc' }, { 'table_name': 'track', 'field_name': 'lyrics', 'key_id': 700, 'key_value': 'def' }] } ) request_engine[service.OWS_LYRICS].add_spec( 'PUT', '/tracks', status=400, response='xyz' ) expected_error_msg = ( 'Failed to apply revision to lyrics for track ids [777, 700]\n' 'put_track_lyrics failed for track id 777\n' 'Status code: 400\n' 'Error: "xyz"\n' ) with pytest.raises(Exception) as excinfo: app.handler(mock_event, None) assert excinfo.value.args[0] == expected_error_msg def test_handler_delete_error(request_engine, mock_event): """Test handler delete error.""" request_engine[service.OWS_PRODUCT_WORKFLOW].add_spec( 'GET', '/correction', status=200, response={ 'items': [{ 'table_name': 'track', 'field_name': 'lyrics', 'key_id': 700, 'key_value': '' }] } ) request_engine[service.OWS_LYRICS].add_spec( 'DELETE', '/tracks', status=400, response='xyz' ) expected_error_msg = ( 'Failed to apply revision to lyrics for track ids [700]\n' 'delete_track_lyrics failed for track id 700\n' 'Status code: 400\n' 'Error: "xyz"\n' ) with pytest.raises(Exception) as excinfo: app.handler(mock_event, None) assert excinfo.value.args[0] == expected_error_msg