"""Unit tests for store_pricing_tier_code model.""" from pricing.models import store_pricing_tier_code 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 test_get_by_store_pricing_tier_id(db_fixture): """Test that the store pricing tier codes can be retrieved.""" result = store_pricing_tier_code.get_by_store_pricing_tier_id(1) message = result.message assert len(message) == 1 store_pricing_tier_codes = message['items'] assert len(store_pricing_tier_codes) == 4 assert store_pricing_tier_codes[0]['price_code'] == '100' def test_create(db_fixture): """Test that a store pricing tier code can be created.""" store_pricing_tier_id = 1 data = { 'price_code': 'Code', 'applies_worldwide': True, 'store_pricing_tier_code_id': 100 } result = store_pricing_tier_code.create( store_pricing_tier_id, data) assert result created = result.message assert created['store_pricing_tier_id'] == 1 assert created['price_code'] == 'Code' assert created['applies_worldwide'] is True def test_create_empty_body(db_fixture): """Test that a store pricing tier code requires fields to be created.""" store_pricing_tier_code_id = 1 data = {} result = store_pricing_tier_code.create( store_pricing_tier_code_id, data) assert result.status == 400 def test_update(db_fixture): """Test that a store pricing tier code can be updated.""" store_pricing_tier_id = 1 store_pricing_tier_code_id = 1 data = { 'price_code': 'Updated' } result = store_pricing_tier_code.update( store_pricing_tier_id, store_pricing_tier_code_id, data) assert result updated = result.message assert updated['store_pricing_tier_code_id'] == 1 assert updated['price_code'] == 'Updated' def test_update_empty_body(db_fixture): """Test that a store pricing tier code requires fields to be updated.""" store_pricing_tier_id = 1 store_pricing_tier_code_id = 1 data = {} result = store_pricing_tier_code.update( store_pricing_tier_id, store_pricing_tier_code_id, data) assert result.status == 400 def test_update_tier_code_not_found(db_fixture): """Test that updates fails if store pricing tier code does not exist.""" store_pricing_tier_id = 1 store_pricing_tier_code_id = 100 data = { 'price_code': 'Updated' } result = store_pricing_tier_code.update( store_pricing_tier_id, store_pricing_tier_code_id, data) assert result.status == 404 def test_update_tier_not_found(db_fixture): """Test that updates fails if store pricing tier code does not exist.""" store_pricing_tier_id = 100 store_pricing_tier_code_id = 1 data = { 'price_code': 'Updated' } result = store_pricing_tier_code.update( store_pricing_tier_id, store_pricing_tier_code_id, data) assert result.status == 404 def test_find_duplicate_true(db_fixture): """Test finding an existing duplicate store pricing tier code.""" store_pricing_tier_id = 1 data = { 'price_code': '100', 'resolution': '4K', 'applies_worldwide': False, 'territory_list_include': True } result = store_pricing_tier_code.find_duplicate( store_pricing_tier_id, data) assert result assert result.message['found'] assert result.message['item']['store_pricing_tier_id'] == 1 def test_find_duplicate_false(db_fixture): """Test finding a non-exisiting duplicate store pricing tier code.""" store_pricing_tier_id = 1 data = { 'price_code': '500', 'resolution': 'SD', 'applies_worldwide': True, 'territory_list_include': False } result = store_pricing_tier_code.find_duplicate( store_pricing_tier_id, data) assert result assert not result.message['found'] def test_find_duplicate_empty_body(db_fixture): """Test that a data dict is required to find a duplicate.""" store_pricing_tier_id = 1 data = {} result = store_pricing_tier_code.find_duplicate( store_pricing_tier_id, data) assert result.status == 400 def test_delete(db_fixture): """Test delete a store pricing tier code.""" store_pricing_tier_id = 1 intermediate_result = store_pricing_tier_code.\ get_by_store_pricing_tier_code_id(store_pricing_tier_id) assert intermediate_result store_pricing_tier_code_item = intermediate_result.message store_pricing_tier_code.delete( store_pricing_tier_code_item['store_pricing_tier_code_id']) end_result = store_pricing_tier_code. \ get_by_store_pricing_tier_code_id(store_pricing_tier_id) assert end_result.errors assert end_result.errors['code'] == 'not_found_error' def test_delete_not_found_response(db_fixture): """Test delete with a not found response.""" store_pricing_tier_code_id = 8 result = store_pricing_tier_code.delete(store_pricing_tier_code_id) assert result.errors assert result.status == 404 def test_get_by_store_pricing_tier_code_id(db_fixture): """Test get by store pricing tier code id.""" store_pricing_tier_code_id = 2 store_pricing_tier_code_item = store_pricing_tier_code. \ get_by_store_pricing_tier_code_id(store_pricing_tier_code_id) assert store_pricing_tier_code_item assert store_pricing_tier_code_item.status == 200 message = store_pricing_tier_code_item.message assert message assert message['store_pricing_tier_code_id'] == store_pricing_tier_code_id