"""Unit tests for track_pricing_override_territory model.""" from pricing.models import track_pricing_override_territory import pytest from tests.utils import db_operations @pytest.fixture def db_fixture(): """Drop and re-create all the SQLite tables and seed them.""" db_operations.create_tables() db_operations.seed_data() def check_territories(items, territory_list): """Check that the territory_codes on items match territory_list.""" territory_codes = set([item['territory_code'] for item in items]) expected_territory_codes = set(territory_list) assert territory_codes == expected_territory_codes def test_get_by_track_pricing_override_id(db_fixture): """Test that the product override territories can be retrieved.""" track_pricing_override_territory_id = 1 result = track_pricing_override_territory.\ get_by_track_pricing_override_id(track_pricing_override_territory_id) assert result message = result.message assert len(message) == 1 items = message['items'] check_territories(items, ['US', 'FR']) def test_get_by_product_pricing_override_id_no_territories(db_fixture): """Test that override with no territories returns empty list.""" result = track_pricing_override_territory.\ get_by_track_pricing_override_id(3) assert result message = result.message assert len(message) == 1 check_territories(message['items'], []) def test_create(db_fixture): """Test that a product pricing override territory can be created.""" override_id = 5 territory_code = 'BE' result = track_pricing_override_territory.create( override_id, territory_code) assert result created = result.message assert created['track_pricing_override_id'] == override_id assert created['territory_code'] == territory_code def test_update_territories(db_fixture): """Test that store pricing tier code territories can be updated.""" track_pricing_override_id = 1 territory_codes = ['GR'] result = track_pricing_override_territory.\ update_territories(track_pricing_override_id, territory_codes) assert result message = result.message check_territories(message['created'], ['GR']) check_territories(message['deleted'], ['US', 'FR']) def test_delete(db_fixture): """Test that a product pricing override territory can be deleted.""" track_pricing_override_id = 6 territory_code = 'AU' track_pricing_override_territory.create( track_pricing_override_id, territory_code) intermediate_result = track_pricing_override_territory.\ get_by_track_pricing_override_id(track_pricing_override_id) assert intermediate_result message = intermediate_result.message items = message['items'] check_territories(items, ['AU']) track_pricing_override_territory.delete( track_pricing_override_id, territory_code) end_result = track_pricing_override_territory. \ get_by_track_pricing_override_id(track_pricing_override_id) assert end_result message = end_result.message items = message['items'] check_territories(items, []) def test_delete_not_found(db_fixture): """Test that a deleting missing row returns a not found response.""" track_pricing_override_id = 100 territory_code = 'AU' result = track_pricing_override_territory.delete( track_pricing_override_id, territory_code) assert result.status == 404 def test_delete_by_track_pricing_override_id(db_fixture): """Test DELETE a track pricing override territory with tpo id.""" track_pricing_override_id = 10 territory_code = 'GB' created_override_territory = track_pricing_override_territory.create( track_pricing_override_id, territory_code) assert created_override_territory.message assert created_override_territory.status == 200 result = track_pricing_override_territory\ .delete_by_track_pricing_override_id(track_pricing_override_id) assert result assert result.message['deleted'] == 1 assert result.status == 200