"""Unit tests for product_migration_status model.""" from pricing.models import product_migration_status 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_migration_status(db_fixture): """Test that the product migration status can be retrieved.""" migration_status = 'NeedPhase1Migration' result = product_migration_status.get_by_migration_status(migration_status) assert result items = result.message['items'] assert len(items) == 1 assert items[0]['product_migration_status_id'] == 1 assert items[0]['migration_status'] == migration_status def test_get_by_migration_status_not_found(db_fixture): """Test that the nto found response.""" migration_status = 'Invalid Status' result = product_migration_status.get_by_migration_status(migration_status) assert result.status == 404 def test_create(db_fixture): """Test that a product migration status can be created.""" data = { 'product_migration_status_id': 3, 'product_id': 3, 'migration_status': 'Status' } result = product_migration_status.create(data) assert result created = result.message assert created['product_id'] == 3 assert created['migration_status'] == 'Status' def test_create_empty_body(db_fixture): """Test that a product migration status requires fields to be created.""" data = {} result = product_migration_status.create(data) assert result.status == 400 def test_update_by_status_and_product_id(db_fixture): """Test that a product migration status can be updated.""" status = 'NeedPhase1Migration' product_id = 1 data = { 'migration_status': 'StatusUpdated' } result = product_migration_status.update_by_status_and_product_id( status, product_id, data) updated = result.message assert updated['migration_status'] == 'StatusUpdated' def test_update_by_status_and_product_id_empty_body(db_fixture): """Test that a product migration status cannot be updated with no data.""" status = 'NeedPhase1Migration' product_id = 1 data = {} result = product_migration_status.update_by_status_and_product_id( status, product_id, data) assert result.status == 400 def test_update_not_found(db_fixture): """Test that update fails if product migration status is not found.""" status = 'NeedPhase1Migration' product_id = 100 data = { 'migration_status': 'StatusUpdated' } result = product_migration_status.update_by_status_and_product_id( status, product_id, data) assert result.status == 404