"""Tests for ows-product model.""" from contextlib import nullcontext as does_not_raise import pytest from product_review.constants import services from product_review.models import ows_product as ows_product_model @pytest.mark.parametrize( ( "test_description", "response_status", "expected_result", "expected_raise", "expected_raise_message", ), [ ( "Success", 200, {"applesauce": "bananas"}, does_not_raise(), "None", ), ( "Error", 808, None, pytest.raises(Exception), '{"status": 808, "code": "ows_product_error", ' '"message": "{\\"applesauce\\": \\"bananas\\"}"}', ), ], ) def test_get_product( test_description, response_status, expected_result, expected_raise, expected_raise_message, request_engine, app_context, ): """Test get_product.""" request_engine[services.OWS_PRODUCT].add_spec( "GET", "/product/12321", {"applesauce": "bananas"}, status=response_status ) result = None with expected_raise as er: result = ows_product_model.get_product(12321) assert str(getattr(er, "value", None)) == expected_raise_message assert result == expected_result @pytest.mark.parametrize( ( "test_description", "response_status", "expected_result", "expected_raise", "expected_raise_message", ), [ ( "Success", 200, {"applesauce": "bananas"}, does_not_raise(), "None", ), ( "No localizations", 404, {"items": [], "product_id": 12321}, does_not_raise(), "None", ), ( "Error", 808, None, pytest.raises(Exception), '{"status": 808, "code": "ows_product_error", ' '"message": {"applesauce": "bananas"}}', ), ], ) def test_get_product_localization( test_description, response_status, expected_result, expected_raise, expected_raise_message, request_engine, app_context, ): """Test get_product_localization.""" request_engine[services.OWS_PRODUCT].add_spec( "GET", "/localization/product/12321", {"applesauce": "bananas"}, status=response_status, ) result = None with expected_raise as er: result = ows_product_model.get_product_localization(12321) assert str(getattr(er, "value", None)) == expected_raise_message assert result == expected_result