"""Tests for Track Pricing Override Tier logic.""" from unittest.mock import MagicMock from oto import response from pricing.constants import error from pricing.logic import track_pricing_override from pricing.models import ows_track as ows_track_model from pricing.models import track_pricing_override as \ track_pricing_override_model from pricing.models import track_pricing_override_store as \ track_pricing_override_store_model from pricing.models import track_pricing_override_territory as \ track_pricing_override_territory_model import pytest @pytest.fixture def fixture_track_pricing_override(): """Fixture for single track pricing override.""" return response.Response( message={ 'track_id': 1, 'track_pricing_override_id': 1, 'applies_worldwide': True, 'store_id': 1, 'orchard_pricing_tier_id': 3 }, status=200) @pytest.fixture def fixture_track_pricing_override_no_id(): """Fixture for single track pricing override.""" return response.Response( message={ 'track_id': 1, 'applies_worldwide': True, 'store_id': 1, 'orchard_pricing_tier_id': 3 }, status=200) @pytest.fixture def fixture_track_pricing_overrides(): """Fixture for multiple track pricing overrides.""" return response.Response( message={ 'items': [ { 'track_id': 1, 'track_pricing_override_id': 1, 'applies_worldwide': True, 'store_id': 1, 'orchard_pricing_tier_id': 3 } ] }, status=200) @pytest.fixture def fixture_track_pricing_overrides_with_names(): """Fixture for multiple track pricing overrides.""" return response.Response( message={ 'items': [ { 'track_id': 1, 'track_pricing_override_id': 1, 'applies_worldwide': True, 'store_id': 1, 'orchard_pricing_tier_id': 3, 'track_name': 'Test Track' } ] }, status=200) @pytest.fixture def fixture_track(): """Fixture for track.""" return response.Response( message={ 'items': [ {'tuid': 1, 'product_id': 1, 'track_name': 'Test Track'} ] }, status=200) @pytest.fixture def fixture_tracks(): """Fixture for tracks.""" return response.Response( message={ 'items': [ {'tuid': 1, 'product_id': 1}, {'tuid': 2, 'product_id': 1} ] }, status=200) @pytest.fixture def fixture_track_pricing_override_territories(): """Fixture for a track pricing override territories update response.""" return response.Response({ 'created': [ { 'territory_code': 'US' } ], 'deleted': [] }) @pytest.fixture def fixture_track_pricing_override_stores(): """Fixture for a track pricing override stores update response.""" return response.Response({ 'created': [ { 'store_id': 1 } ], 'deleted': [] }) @pytest.fixture def fixture_error(): """Fixture for an error response.""" return response.Response(status=500) @pytest.fixture def fixture_not_found(): """Fixture for a not found response.""" return response.Response(status=404) @pytest.fixture def fixture_find_duplicate_true(): """Fixture for a positive find_duplicate response.""" return response.Response({ 'found': True, 'item': { 'track_pricing_override_id': 1 } }) @pytest.fixture def fixture_find_duplicate_false(): """Fixture for a negative find_duplicate response.""" return response.Response({'found': False}) @pytest.fixture def fixture_get_territories(): """Fixture for a get territories response.""" return response.Response({ 'items': [ { 'territory_code': 'US' }, { 'territory_code': 'CA' } ] }) @pytest.fixture def fixture_get_stores(): """Fixture for a get stores response.""" return response.Response({ 'items': [ { 'store_id': 1 }, { 'store_id': 2 } ] }) @pytest.fixture def fixture_track_ids(): """Fixture for a get stores response.""" return [1] def test_get_by_track_id(monkeypatch, fixture_track_pricing_override): """Test getting track pricing overrides with track id.""" monkeypatch.setattr( track_pricing_override_model, 'get_by_track_id', MagicMock(return_value=fixture_track_pricing_override)) result = track_pricing_override.get_by_track_id(1) track_pricing_override_model.get_by_track_id.assert_called_with(1) assert result assert result.message == fixture_track_pricing_override.message def test_get_track_pricing_overrides_for_product( monkeypatch, fixture_track_pricing_overrides, fixture_track): """Test getting track pricing overrides with track id.""" monkeypatch.setattr( ows_track_model, 'get_tracks_by_product_id', MagicMock(return_value=fixture_track)) monkeypatch.setattr( track_pricing_override_model, 'get_by_track_id', MagicMock(return_value=fixture_track_pricing_overrides)) result = track_pricing_override.\ get_track_pricing_overrides_for_product(1) assert result assert result.message[ 'items'] == fixture_track_pricing_overrides.message['items'] ows_track_model.get_tracks_by_product_id.assert_called_with(1) track_pricing_override_model.get_by_track_id.assert_called_with(1) def test_get_track_pricing_overrides_for_product_with_track_not_found( monkeypatch, fixture_not_found): """Test getting track pricing overrides with track id.""" monkeypatch.setattr( ows_track_model, 'get_tracks_by_product_id', MagicMock(return_value=fixture_not_found)) result = track_pricing_override.get_track_pricing_overrides_for_product(0) assert result.status == 404 def test_get_track_pricing_overrides_for_product_with_track_error( monkeypatch, fixture_track, fixture_error): """Test error response for track product pricing override.""" monkeypatch.setattr( ows_track_model, 'get_tracks_by_product_id', MagicMock(return_value=fixture_track)) monkeypatch.setattr( track_pricing_override, 'get_by_track_id', MagicMock(return_value=fixture_error)) result = track_pricing_override.get_track_pricing_overrides_for_product(1) assert result.status == 500 def test_create_track_pricing_override( monkeypatch, fixture_track_pricing_override, fixture_find_duplicate_false): """Test creating a track pricing override.""" monkeypatch.setattr( track_pricing_override_model, 'create_track_pricing_override', MagicMock(return_value=fixture_track_pricing_override)) monkeypatch.setattr( track_pricing_override_model, 'find_duplicate', MagicMock(return_value=fixture_find_duplicate_false)) data = fixture_track_pricing_override.message result = track_pricing_override.create_track_pricing_override(1, data) track_pricing_override_model.create_track_pricing_override\ .assert_called_with(1, data) assert result assert result.message == fixture_track_pricing_override.message def test_create_track_pricing_override_with_error(monkeypatch, fixture_error): """Test error response when creating a track pricing override.""" monkeypatch.setattr( track_pricing_override_model, 'create_track_pricing_override', MagicMock(return_value=fixture_error)) monkeypatch.setattr( track_pricing_override, 'has_duplicate', MagicMock(return_value=False)) track_id = 1 data = {} result = track_pricing_override.create_track_pricing_override( track_id, data) assert result == fixture_error def test_create_track_pricing_override_with_territories( monkeypatch, fixture_track_pricing_override, fixture_track_pricing_override_territories): """Test creating a track pricing override with some territories.""" monkeypatch.setattr( track_pricing_override_model, 'create_track_pricing_override', MagicMock(return_value=fixture_track_pricing_override)) monkeypatch.setattr( track_pricing_override_territory_model, 'update_territories', MagicMock(return_value=fixture_track_pricing_override_territories)) monkeypatch.setattr( track_pricing_override, 'has_duplicate', MagicMock(return_value=False)) track_id = 1 create_data = { 'applies_worldwide': True, 'store_id': 1, 'orchard_pricing_tier_id': 3 } territories = ['US'] data = dict(create_data) data['territories'] = territories expected_result = fixture_track_pricing_override.message expected_result['territories'] = ['US'] result = track_pricing_override.create_track_pricing_override( track_id, data) assert result track_pricing_override_id = result.message['track_pricing_override_id'] track_pricing_override_model.create_track_pricing_override.\ assert_called_with(track_id, create_data) track_pricing_override_territory_model.update_territories.\ assert_called_with(track_pricing_override_id, territories) assert result.message == expected_result def test_create_with_territories_and_error( monkeypatch, fixture_track_pricing_override, fixture_error): """Test error response during territories update.""" monkeypatch.setattr( track_pricing_override_model, 'create_track_pricing_override', MagicMock(return_value=fixture_track_pricing_override)) monkeypatch.setattr( track_pricing_override_territory_model, 'update_territories', MagicMock(return_value=fixture_error)) monkeypatch.setattr( track_pricing_override, 'has_duplicate', MagicMock(return_value=False)) track_id = 1 data = {'territories': ['US']} result = track_pricing_override.create_track_pricing_override( track_id, data) assert result == fixture_error def test_create_track_pricing_override_with_stores( monkeypatch, fixture_track_pricing_override, fixture_track_pricing_override_stores): """Test creating a track pricing override with some stores.""" monkeypatch.setattr( track_pricing_override_model, 'create_track_pricing_override', MagicMock(return_value=fixture_track_pricing_override)) monkeypatch.setattr( track_pricing_override_store_model, 'update_stores', MagicMock(return_value=fixture_track_pricing_override_stores)) monkeypatch.setattr( track_pricing_override, 'has_duplicate', MagicMock(return_value=False)) track_id = 1 create_data = { 'applies_worldwide': True, 'store_id': 1, 'orchard_pricing_tier_id': 3 } stores = [1] data = dict(create_data) data['stores'] = stores expected_result = fixture_track_pricing_override.message expected_result['stores'] = [1] result = track_pricing_override.create_track_pricing_override( track_id, data) assert result track_pricing_override_id = result.message['track_pricing_override_id'] track_pricing_override_model.create_track_pricing_override.\ assert_called_with(track_id, create_data) track_pricing_override_store_model.update_stores.\ assert_called_with(track_pricing_override_id, stores) assert result.message == expected_result def test_create_with_stores_and_error( monkeypatch, fixture_track_pricing_override, fixture_error): """Test error response during stores update.""" monkeypatch.setattr( track_pricing_override_model, 'create_track_pricing_override', MagicMock(return_value=fixture_track_pricing_override)) monkeypatch.setattr( track_pricing_override_store_model, 'update_stores', MagicMock(return_value=fixture_error)) monkeypatch.setattr( track_pricing_override, 'has_duplicate', MagicMock(return_value=False)) track_id = 1 data = {'stores': [1]} result = track_pricing_override.create_track_pricing_override( track_id, data) assert result == fixture_error def test_bulk_create_track_pricing_override( monkeypatch, fixture_track_pricing_override, fixture_track): """Test creating track pricing overrides.""" monkeypatch.setattr( track_pricing_override, 'create_track_pricing_override', MagicMock(return_value=fixture_track_pricing_override)) monkeypatch.setattr( ows_track_model, 'get_tracks_by_product_id', MagicMock(return_value=fixture_track)) data = { 'items': [ fixture_track_pricing_override.message, fixture_track_pricing_override.message ] } product_id = 1 result = track_pricing_override.bulk_create_track_pricing_override( product_id, data) assert track_pricing_override.\ create_track_pricing_override.call_count == 2 assert result assert result.message == data def test_bulk_create_track_pricing_override_bad_data(): """Test bad data response when creating track pricing overrides.""" data = {} product_id = 1 result = track_pricing_override.bulk_create_track_pricing_override( product_id, data) assert result.status == 400 def test_bulk_create_track_pricing_override_missing_track_id( monkeypatch, fixture_track_pricing_override, fixture_tracks): """Test missing data response when creating track pricing overrides.""" monkeypatch.setattr( ows_track_model, 'get_tracks_by_product_id', MagicMock(return_value=fixture_tracks)) data = { 'items': [ { 'track_pricing_override_id': 1, 'applies_worldwide': True, 'store_id': 1, 'orchard_pricing_tier_id': 3 }, fixture_track_pricing_override.message ] } product_id = 1 result = track_pricing_override.bulk_create_track_pricing_override( product_id, data) assert result.status == 400 def test_bulk_create_track_pricing_override_data_not_in_product_tracks( monkeypatch, fixture_track_pricing_override, fixture_tracks): """Test missing data response when creating track pricing overrides.""" monkeypatch.setattr( ows_track_model, 'get_tracks_by_product_id', MagicMock(return_value=fixture_tracks)) data = { 'items': [ { 'track_id': 3, 'track_pricing_override_id': 1, 'applies_worldwide': True, 'store_id': 1, 'orchard_pricing_tier_id': 3 }, fixture_track_pricing_override.message ] } product_id = 1 result = track_pricing_override.bulk_create_track_pricing_override( product_id, data) assert result.status == 400 def test_bulk_create_track_pricing_override_for_product_with_track_not_found( monkeypatch, fixture_track_pricing_override, fixture_not_found): """Test getting track pricing overrides with track id.""" monkeypatch.setattr( ows_track_model, 'get_tracks_by_product_id', MagicMock(return_value=fixture_not_found)) data = { 'items': [ fixture_track_pricing_override.message, fixture_track_pricing_override.message ] } product_id = 0 result = track_pricing_override.bulk_create_track_pricing_override( product_id, data) assert result.status == 404 def test_bulk_create_track_pricing_override_with_track_error( monkeypatch, fixture_track, fixture_error, fixture_track_pricing_override): """Test error response for track product pricing override.""" monkeypatch.setattr( ows_track_model, 'get_tracks_by_product_id', MagicMock(return_value=fixture_track)) monkeypatch.setattr( track_pricing_override, 'create_track_pricing_override', MagicMock(return_value=fixture_error)) data = { 'items': [ fixture_track_pricing_override.message, fixture_track_pricing_override.message ] } product_id = 1 result = track_pricing_override.bulk_create_track_pricing_override( product_id, data) assert result.status == 500 def test_bulk_update_create_track_pricing_override( monkeypatch, fixture_track_pricing_override, fixture_track_pricing_override_no_id, fixture_track): """Test bulk updating and creating track pricing overrides.""" monkeypatch.setattr( ows_track_model, 'get_tracks_by_product_id', MagicMock(return_value=fixture_track)) monkeypatch.setattr( track_pricing_override, 'create_track_pricing_override', MagicMock(return_value=fixture_track_pricing_override)) monkeypatch.setattr( track_pricing_override, 'update_track_pricing_override', MagicMock(return_value=fixture_track_pricing_override)) data = { 'items': [ fixture_track_pricing_override.message, fixture_track_pricing_override_no_id.message ] } product_id = 1 result = track_pricing_override.\ bulk_update_create_track_pricing_override(product_id, data) assert track_pricing_override.\ create_track_pricing_override.call_count == 1 assert track_pricing_override.\ update_track_pricing_override.call_count == 1 assert result assert result.message == { 'items': [ fixture_track_pricing_override.message, fixture_track_pricing_override.message ] } def test_bulk_update_create_track_pricing_override_track_error( monkeypatch, fixture_track_pricing_override, fixture_track_pricing_override_no_id, fixture_error): """Test bulk updating track pricing overrides handles track load error.""" monkeypatch.setattr( ows_track_model, 'get_tracks_by_product_id', MagicMock(return_value=fixture_error)) data = { 'items': [ fixture_track_pricing_override.message, fixture_track_pricing_override_no_id.message ] } product_id = 1 result = track_pricing_override.\ bulk_update_create_track_pricing_override(product_id, data) assert result == fixture_error def test_bulk_update_create_track_pricing_override_missing_track_id( monkeypatch, fixture_track): """Test bulk updating track pricing overrides without track_id in data.""" monkeypatch.setattr( ows_track_model, 'get_tracks_by_product_id', MagicMock(return_value=fixture_track)) data = { 'items': [ {} ] } product_id = 1 result = track_pricing_override.bulk_update_create_track_pricing_override( product_id, data) assert result.status == 400 def test_bulk_update_create_track_pricing_override_track_id_not_on_product( monkeypatch, fixture_track): """Test bulk updating track pricing overrides with track_id not exist.""" monkeypatch.setattr( ows_track_model, 'get_tracks_by_product_id', MagicMock(return_value=fixture_track)) data = { 'items': [ {'track_id': 100} ] } product_id = 1 result = track_pricing_override.bulk_update_create_track_pricing_override( product_id, data) assert result.status == 400 def test_bulk_update_create_track_pricing_override_bad_data( monkeypatch, fixture_track): """Test bad data response when updating track pricing overrides.""" monkeypatch.setattr( ows_track_model, 'get_tracks_by_product_id', MagicMock(return_value=fixture_track)) data = {} product_id = 1 result = track_pricing_override.\ bulk_update_create_track_pricing_override(product_id, data) assert result.status == 400 def test_bulk_update_create_track_pricing_override_create_error( monkeypatch, fixture_error, fixture_track_pricing_override_no_id, fixture_track): """Test error response when updating track pricing override.""" monkeypatch.setattr( ows_track_model, 'get_tracks_by_product_id', MagicMock(return_value=fixture_track)) monkeypatch.setattr( track_pricing_override, 'create_track_pricing_override', MagicMock(return_value=fixture_error)) data = { 'items': [ fixture_track_pricing_override_no_id.message ] } product_id = 1 result = track_pricing_override.\ bulk_update_create_track_pricing_override(product_id, data) assert result.status == 500 def test_bulk_update_create_track_pricing_override_update_error( monkeypatch, fixture_error, fixture_track_pricing_override, fixture_track): """Test error response when creating track pricing override.""" monkeypatch.setattr( ows_track_model, 'get_tracks_by_product_id', MagicMock(return_value=fixture_track)) monkeypatch.setattr( track_pricing_override, 'update_track_pricing_override', MagicMock(return_value=fixture_error)) data = { 'items': [ fixture_track_pricing_override.message ] } product_id = 1 result = track_pricing_override.\ bulk_update_create_track_pricing_override(product_id, data) assert result.status == 500 def test_create_duplicate(monkeypatch): """Test duplicate response when creating a track pricing override.""" monkeypatch.setattr( track_pricing_override, 'has_duplicate', MagicMock(return_value=True)) track_id = 1 data = {} result = track_pricing_override.create_track_pricing_override( track_id, data) assert result.status == 400 assert result.errors['message'] == error.ERROR_MESSAGE_DUPLICATE def test_update_track_pricing_override( monkeypatch, fixture_track_pricing_override, fixture_track_pricing_override_territories): """Test updating a track pricing override.""" monkeypatch.setattr( track_pricing_override_model, 'update_track_pricing_override', MagicMock(return_value=fixture_track_pricing_override)) monkeypatch.setattr( track_pricing_override_territory_model, 'update_territories', MagicMock(return_value=fixture_track_pricing_override_territories)) data = fixture_track_pricing_override.message result = track_pricing_override.update_track_pricing_override( 1, 1, data) track_pricing_override_model.update_track_pricing_override.\ assert_called_with(1, 1, data) assert result assert result.message == fixture_track_pricing_override.message def test_update_track_pricing_override_with_error( monkeypatch, fixture_error): """Test error response when update a track_pricing_override.""" monkeypatch.setattr( track_pricing_override_model, 'update_track_pricing_override', MagicMock(return_value=fixture_error)) track_id = 10 track_pricing_override_id = 1 data = {} result = track_pricing_override.update_track_pricing_override( track_id, track_pricing_override_id, data) assert result == fixture_error def test_update_track_pricing_override_with_territories( monkeypatch, fixture_track_pricing_override, fixture_track_pricing_override_territories): """Test updating a store pricing tier code with some territories.""" monkeypatch.setattr( track_pricing_override_model, 'update_track_pricing_override', MagicMock(return_value=fixture_track_pricing_override)) monkeypatch.setattr( track_pricing_override_territory_model, 'update_territories', MagicMock(return_value=fixture_track_pricing_override_territories)) track_pricing_override_id = 1 track_id = 1 update_data = { 'applies_worldwide': True, 'store_id': 1, 'orchard_pricing_tier_id': 3, 'territory_list_include': True } territories = ['US'] data = dict(update_data) data['territories'] = territories expected_result = fixture_track_pricing_override.message expected_result['territories'] = ['US'] result = track_pricing_override.update_track_pricing_override( track_id, track_pricing_override_id, data) assert result track_pricing_override_model.update_track_pricing_override.\ assert_called_with(track_id, track_pricing_override_id, update_data) track_pricing_override_territory_model.update_territories.\ assert_called_with(track_pricing_override_id, territories) assert result.message == expected_result def test_update_track_pricing_override_with_territories_and_error( monkeypatch, fixture_track_pricing_override, fixture_error): """Test error response during territories update.""" monkeypatch.setattr( track_pricing_override_model, 'update_track_pricing_override', MagicMock(return_value=fixture_track_pricing_override)) monkeypatch.setattr( track_pricing_override_territory_model, 'update_territories', MagicMock(return_value=fixture_error)) track_pricing_override_id = 1 track_id = 1 data = {'territories': ['US']} result = track_pricing_override.update_track_pricing_override( track_id, track_pricing_override_id, data) assert result == fixture_error def test_update_track_pricing_override_with_stores( monkeypatch, fixture_track_pricing_override, fixture_track_pricing_override_stores): """Test updating a store pricing tier code with some stores.""" monkeypatch.setattr( track_pricing_override_model, 'update_track_pricing_override', MagicMock(return_value=fixture_track_pricing_override)) monkeypatch.setattr( track_pricing_override_store_model, 'update_stores', MagicMock(return_value=fixture_track_pricing_override_stores)) track_pricing_override_id = 1 track_id = 1 update_data = { 'applies_worldwide': True, 'store_id': 1, 'orchard_pricing_tier_id': 3, 'territory_list_include': True } stores = [1] data = dict(update_data) data['stores'] = stores expected_result = fixture_track_pricing_override.message expected_result['stores'] = [1] result = track_pricing_override.update_track_pricing_override( track_id, track_pricing_override_id, data) assert result track_pricing_override_model.update_track_pricing_override.\ assert_called_with(track_id, track_pricing_override_id, update_data) track_pricing_override_store_model.update_stores.\ assert_called_with(track_pricing_override_id, stores) assert result.message == expected_result def test_update_track_pricing_override_with_stores_and_error( monkeypatch, fixture_track_pricing_override, fixture_error): """Test error response during stores update.""" monkeypatch.setattr( track_pricing_override_model, 'update_track_pricing_override', MagicMock(return_value=fixture_track_pricing_override)) monkeypatch.setattr( track_pricing_override_store_model, 'update_stores', MagicMock(return_value=fixture_error)) track_pricing_override_id = 1 track_id = 1 data = {'stores': [1]} result = track_pricing_override.update_track_pricing_override( track_id, track_pricing_override_id, data) assert result == fixture_error def test_find_duplicate_true( monkeypatch, fixture_find_duplicate_true, fixture_get_territories, fixture_get_stores): """Test finding an existing duplicate track pricing override.""" monkeypatch.setattr( track_pricing_override_model, 'find_duplicate', MagicMock(return_value=fixture_find_duplicate_true)) monkeypatch.setattr( track_pricing_override_territory_model, 'get_by_track_pricing_override_id', MagicMock(return_value=fixture_get_territories)) monkeypatch.setattr( track_pricing_override_store_model, 'get_by_track_pricing_override_id', MagicMock(return_value=fixture_get_stores)) track_id = 1 data = { 'applies_worldwide': True, 'store_id': 1, 'orchard_pricing_tier_id': 3, 'territory_list_include': True } territories = ['US', 'CA'] stores = [1, 2] result = track_pricing_override.has_duplicate( track_id, data, territories, stores) assert result is True def test_find_duplicate_false( monkeypatch, fixture_find_duplicate_false): """Test finding a non-existing duplicate track pricing override.""" monkeypatch.setattr( track_pricing_override_model, 'find_duplicate', MagicMock(return_value=fixture_find_duplicate_false)) track_id = 10 data = { 'applies_worldwide': True, 'store_id': 1, 'orchard_pricing_tier_id': 3 } territories = [] stores = [] result = track_pricing_override.has_duplicate( track_id, data, territories, stores) assert result is False def test_find_duplicate_with_territories_false( monkeypatch, fixture_find_duplicate_true, fixture_get_territories, fixture_get_stores): """Test finding a non-existing duplicate TPO with territories.""" monkeypatch.setattr( track_pricing_override_model, 'find_duplicate', MagicMock(return_value=fixture_find_duplicate_true)) monkeypatch.setattr( track_pricing_override_territory_model, 'get_by_track_pricing_override_id', MagicMock(return_value=fixture_get_territories)) monkeypatch.setattr( track_pricing_override_store_model, 'get_by_track_pricing_override_id', MagicMock(return_value=fixture_get_stores)) track_id = 1 data = { 'applies_worldwide': True, 'store_id': 1, 'orchard_pricing_tier_id': 3, 'territory_list_include': True } territories = ['US', 'CA', 'FR'] stores = [1, 2] result = track_pricing_override.has_duplicate( track_id, data, territories, stores) assert result is False def test_find_duplicate_with_stores_false( monkeypatch, fixture_find_duplicate_true, fixture_get_territories, fixture_get_stores): """Test finding a non-existing duplicate TPO with stores.""" monkeypatch.setattr( track_pricing_override_model, 'find_duplicate', MagicMock(return_value=fixture_find_duplicate_true)) monkeypatch.setattr( track_pricing_override_territory_model, 'get_by_track_pricing_override_id', MagicMock(return_value=fixture_get_territories)) monkeypatch.setattr( track_pricing_override_store_model, 'get_by_track_pricing_override_id', MagicMock(return_value=fixture_get_stores)) track_id = 1 data = { 'applies_worldwide': True, 'store_id': 1, 'orchard_pricing_tier_id': 3, 'territory_list_include': True } territories = ['US', 'CA'] stores = [1, 2, 3] result = track_pricing_override.has_duplicate( track_id, data, territories, stores) assert result is False def test_find_duplicate_error(monkeypatch, fixture_error): """Test that an exception is raised if an error occurred.""" monkeypatch.setattr( track_pricing_override_model, 'find_duplicate', MagicMock(return_value=fixture_error)) track_id = 1 data = { 'price_code': '100', 'resolution': '4K', 'applies_worldwide': False, 'territory_list_include': True } territories = [] stores = [] try: track_pricing_override.has_duplicate( track_id, data, territories, stores) except Exception as err: assert err def test_find_duplicate_with_territories_error( monkeypatch, fixture_find_duplicate_true, fixture_error): """Test that an exception is raised if an error occurred.""" monkeypatch.setattr( track_pricing_override_model, 'find_duplicate', MagicMock(return_value=fixture_find_duplicate_true)) monkeypatch.setattr( track_pricing_override_territory_model, 'get_by_track_pricing_override_id', MagicMock(return_value=fixture_error)) track_id = 1 data = { 'price_code': '100', 'resolution': '4K', 'applies_worldwide': False, 'territory_list_include': True } territories = ['US', 'CA'] stores = [1, 2] try: track_pricing_override.has_duplicate( track_id, data, territories, stores) except Exception as err: assert err def test_find_duplicate_with_stores_error( monkeypatch, fixture_find_duplicate_true, fixture_error): """Test that an exception is raised if an error occurred.""" monkeypatch.setattr( track_pricing_override_model, 'find_duplicate', MagicMock(return_value=fixture_find_duplicate_true)) monkeypatch.setattr( track_pricing_override_store_model, 'get_by_track_pricing_override_id', MagicMock(return_value=fixture_error)) track_id = 1 data = { 'price_code': '100', 'resolution': '4K', 'applies_worldwide': False, 'territory_list_include': True } territories = ['US', 'CA'] stores = [1, 2] try: track_pricing_override.has_duplicate( track_id, data, territories, stores) except Exception as err: assert err def test_convert_ows_track_response( monkeypatch, fixture_track_ids, fixture_track): """Test that a list of tracks is converted into a list of track ids.""" result = track_pricing_override.convert_ows_track_response(fixture_track) assert result == fixture_track_ids