"""Unit tests for track_pricing_override_store model.""" from pricing.models import track_pricing_override_store 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_store_ids(items, store_list): """Check that the store_ids on items match the store list.""" store_ids = set([item['store_id'] for item in items]) expected_store_ids = set(store_list) assert store_ids == expected_store_ids def test_get_by_track_pricing_override_id(db_fixture): """Test that the track override stores can be retrieved.""" track_pricing_override_id = 1 result = track_pricing_override_store.\ get_by_track_pricing_override_id(track_pricing_override_id) assert result message = result.message assert len(message) == 1 items = message['items'] check_store_ids(items, [1, 2]) def test_get_by_track_pricing_override_id_no_stores(db_fixture): """Test that override with no stores returns empty list.""" result = track_pricing_override_store.\ get_by_track_pricing_override_id(3) assert result message = result.message assert len(message) == 1 check_store_ids(message['items'], []) def test_create(db_fixture): """Test that a track pricing override store can be created.""" override_id = 5 store_id = 5 result = track_pricing_override_store.create( override_id, store_id) assert result created = result.message assert created['track_pricing_override_id'] == override_id assert created['store_id'] == store_id def test_update_territories(db_fixture): """Test that track pricing override stores can be updated.""" track_pricing_override_id = 1 store_ids = [5] result = track_pricing_override_store.\ update_stores(track_pricing_override_id, store_ids) assert result message = result.message check_store_ids(message['created'], [5]) check_store_ids(message['deleted'], [1, 2]) def test_delete(db_fixture): """Test that a track pricing override store can be deleted.""" track_pricing_override_id = 6 store_id = 6 track_pricing_override_store.create( track_pricing_override_id, store_id) intermediate_result = track_pricing_override_store.\ get_by_track_pricing_override_id(track_pricing_override_id) assert intermediate_result message = intermediate_result.message items = message['items'] check_store_ids(items, [6]) track_pricing_override_store.delete( track_pricing_override_id, store_id) end_result = track_pricing_override_store. \ get_by_track_pricing_override_id(track_pricing_override_id) assert end_result message = end_result.message items = message['items'] check_store_ids(items, []) def test_delete_not_found(db_fixture): """Test that a deleting missing row returns a not found response.""" track_pricing_override_id = 100 store_id = 6 result = track_pricing_override_store.delete( track_pricing_override_id, store_id) 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 store_id = 1 created_override_store = track_pricing_override_store.create( track_pricing_override_id, store_id) assert created_override_store.message assert created_override_store.status == 200 result = track_pricing_override_store\ .delete_by_track_pricing_override_id(track_pricing_override_id) assert result assert result.message['deleted'] == 1 assert result.status == 200