import pytest from pytest_mock import MockerFixture from src.app import handle, handler from src.connectors import ows_utils def test_handle_success(mocker: MockerFixture) -> None: """Assert success when the delete call succeeds.""" mocker.patch.object(ows_utils, "delete_product", return_value=None) upc = "123456789012" assert handle(upc) == "success" def test_handle_failure(mocker: MockerFixture) -> None: """Assert that when the rest call fails, an exception is thrown.""" mocker.patch.object(ows_utils, "delete_product", side_effect=ValueError("Oh No!")) upc = "123456789012" with pytest.raises(ValueError) as exc_info: handle(upc) assert exc_info.value def test_handler_success(mocker: MockerFixture) -> None: """Assert success when product is SMEAnalyticsDummy.""" mocker.patch.object(ows_utils, "delete_product", return_value=None) mocker.patch.object( ows_utils, "get_product_by_upc", return_value={"product_id": 12345, "not_for_distribution": "SMEAnalyticsDummy"}, ) event = {"body": '{"upc": "test_upc"}'} result = handler(event, None) assert result == { "body": '{"data": [[0, {"status": "success"}]]}', "headers": {"Content-Type": "application/json"}, "isBase64Encoded": False, "statusCode": 200, } def test_handler_failure(mocker: MockerFixture) -> None: """Assert failure when product is not SMEAnalyticsDummy.""" mocker.patch.object(ows_utils, "delete_product", return_value=None) mocker.patch.object( ows_utils, "get_product_by_upc", return_value={"product_id": 12345, "not_for_distribution": "foo"}, ) event = {"body": '{"upc": "test_upc"}'} result = handler(event, None) assert result == { "body": '{"data": [[0, {"status": "failure", "error": "Product upc: test_upc is not SMEAnalyticsDummy"}]]}', "headers": {"Content-Type": "application/json"}, "isBase64Encoded": False, "statusCode": 200, }