"""Unit tests for store_pricing_tier_code_territory model.""" from pricing.models import store_pricing_tier_code_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_store_pricing_tier_code_id(db_fixture): """Test that the store pricing tier code territories can be retrieved.""" result = store_pricing_tier_code_territory.\ get_by_store_pricing_tier_code_id(1) assert result message = result.message assert len(message) == 1 items = message['items'] assert len(items) == 2 check_territories(items, ['US', 'CA']) def test_get_by_store_pricing_tier_code_id_no_territories(db_fixture): """Test that code with no territories returns empty list.""" result = store_pricing_tier_code_territory.\ get_by_store_pricing_tier_code_id(3) assert result message = result.message assert len(message) == 1 store_pricing_tier_code_territories = message['items'] assert len(store_pricing_tier_code_territories) == 0 def test_create(db_fixture): """Test that a store pricing tier code territory can be created.""" store_pricing_tier_code_id = 5 territory_code = 'FR' result = store_pricing_tier_code_territory.create( store_pricing_tier_code_id, territory_code) assert result created = result.message assert created['store_pricing_tier_code_id'] == store_pricing_tier_code_id assert created['territory_code'] == territory_code def test_delete(db_fixture): """Test that a store pricing tier code territory can be deleted.""" store_pricing_tier_code_id = 6 territory_code = 'FR' store_pricing_tier_code_territory.create( store_pricing_tier_code_id, territory_code) intermediate_result = store_pricing_tier_code_territory.\ get_by_store_pricing_tier_code_id(store_pricing_tier_code_id) assert intermediate_result message = intermediate_result.message items = message['items'] check_territories(items, ['FR']) store_pricing_tier_code_territory.delete( store_pricing_tier_code_id, territory_code) end_result = store_pricing_tier_code_territory.\ get_by_store_pricing_tier_code_id(store_pricing_tier_code_id) assert end_result message = end_result.message items = message['items'] check_territories(items, []) def test_delete_not_found(db_fixture): """Test that a missing territory cannot be deleted.""" store_pricing_tier_code_id = 6 territory_code = 'ZZ' result = store_pricing_tier_code_territory.delete( store_pricing_tier_code_id, territory_code) assert result.status == 404 def test_update_territories(db_fixture): """Test that store pricing tier code territories can be updated.""" store_pricing_tier_code_id = 1 territory_codes = ['US', 'FR'] result = store_pricing_tier_code_territory.\ update_territories(store_pricing_tier_code_id, territory_codes) assert result message = result.message check_territories(message['created'], ['FR']) check_territories(message['deleted'], ['CA']) def test_delete_by_store_pricing_tier_code_id(db_fixture): """Test that can delete store pricing tier code id.""" store_pricing_tier_code_id = 1 result = store_pricing_tier_code_territory.\ delete_by_store_pricing_tier_code_id(store_pricing_tier_code_id) assert result assert result.status == 200