"""Unit tests for product_pricing_override_territory model.""" from pricing.models import product_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_product_pricing_override_id(db_fixture): """Test that the product override territories can be retrieved.""" result = product_pricing_override_territory.\ get_by_product_pricing_override_id(1) 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 = product_pricing_override_territory.\ get_by_product_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 = product_pricing_override_territory.create( override_id, territory_code) assert result created = result.message assert created['product_pricing_override_id'] == override_id assert created['territory_code'] == territory_code def test_delete(db_fixture): """Test that a product pricing override territory can be deleted.""" product_pricing_override_id = 6 territory_code = 'AU' product_pricing_override_territory.create( product_pricing_override_id, territory_code) intermediate_result = product_pricing_override_territory.\ get_by_product_pricing_override_id(product_pricing_override_id) assert intermediate_result message = intermediate_result.message items = message['items'] check_territories(items, ['AU']) product_pricing_override_territory.delete( product_pricing_override_id, territory_code) end_result = product_pricing_override_territory. \ get_by_product_pricing_override_id(product_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.""" product_pricing_override_id = 100 territory_code = 'AU' result = product_pricing_override_territory.delete( product_pricing_override_id, territory_code) assert result.status == 404 def test_update_territories(db_fixture): """Test that store pricing tier code territories can be updated.""" product_pricing_override_id = 1 territory_codes = ['GR', 'US'] result = product_pricing_override_territory.\ update_territories(product_pricing_override_id, territory_codes) assert result message = result.message check_territories(message['created'], ['GR']) check_territories(message['deleted'], ['FR']) def test_delete_by_product_pricing_override_id(db_fixture): """Test DELETE a product pricing override territory with ppo id.""" product_pricing_override_id = 10 territory_code = 'GB' created_override_territory = product_pricing_override_territory.create( product_pricing_override_id, territory_code) assert created_override_territory.message assert created_override_territory.status == 200 result = product_pricing_override_territory\ .delete_by_product_pricing_override_id(product_pricing_override_id) assert result assert result.message['deleted'] == 1 assert result.status == 200