"""Tests for ows-carveouts model.""" from typing import Any from unittest.mock import MagicMock, call import pytest from flask.ctx import AppContext from owsrequest.utils import mock_request from vectororder.models import carveouts_model @pytest.mark.parametrize( ( "test_description", "carveout_projection_response", "expected_result", ), [ ( "Product has empty allowed territories list", { "empty_reason": "RELEASE_DISTRIBUTION_TYPE_NOT_ALLOWED_CARVEOUT", "territories": [], }, (True, "RELEASE_DISTRIBUTION_TYPE_NOT_ALLOWED_CARVEOUT"), ), ( "Product has non-empty allowed territories list", { "empty_reason": None, "territories": ["US"], }, (False, None), ), ], ) def test_has_empty_allowed_territories_list( test_description: str, carveout_projection_response: dict[str, Any], expected_result: tuple[bool, str | None], app_context: AppContext, mock_raise_for_status: MagicMock, ) -> None: """Test has_empty_allowed_territories_list.""" mock_request.get( "ows-carveouts", "/carveout/projection/199066946312/dms/286/distro/1", carveout_projection_response, ) assert ( carveouts_model.has_empty_allowed_territories_list( upc=199066946312, store_id=286, distro=1, ) == expected_result ) assert mock_raise_for_status.mock_calls == [call()]