"""Test Product Physical Model.""" from decimal import Decimal from ows_product_physical.connector.mysql import db_session from ows_product_physical.models import product_physical as product_physical_model # noqa from ows_product_physical.models.product_physical import ProductPhysical def test_create_physical_product( db_with_data, valid_create_physical_product_fields, ): """Test successful creation of a physical product.""" with db_session() as session: # Remove pre-seeded product physical session.query(ProductPhysical).delete() product_physical_model.create( valid_create_physical_product_fields, session) result = session.query(ProductPhysical).one().to_dict() assert result == { 'id': 1, 'release_id': 42, 'individual': 'Y', 'packaging_id': 2, 'exclusive_for': 'Taco Bell', 'initial_stock': 4500, 'units_per_set': 2, 'box_lot': 30, 'pricing': Decimal('9.99'), 'end_date': '2016-12-12', 'discount': 'discount 15', 'wholesale_price': Decimal('13.20'), 'explicit': 'Y', 'manufacturing_obligation': 'Y', 'pline': '2001 Demo Publishing', 'production_notes': 'Product Highlight Description', 'display_configuration': '2 x CD + Viking Ship', 'japan_distribution': 'no', 'edition': 'normal_edition' } def test_update_physical_product( db_with_data, valid_create_physical_product_fields, ): """Test successful update of a physical product.""" release_id = valid_create_physical_product_fields.get('release_id') update_values = { 'initial_stock': 220, 'explicit': 'N', 'pricing': 1.15, 'display_configuration': '', 'japan_distribution': 'yes_only', 'edition': 'limited_edition'} with db_session() as session: # Remove pre-seeded product physical session.query(ProductPhysical).delete() product_physical_model.create( valid_create_physical_product_fields, session) product_physical_model.update(update_values, release_id, session) result = session.query(ProductPhysical).one().to_dict() assert result == { 'id': 1, 'release_id': 42, 'individual': 'Y', 'packaging_id': 2, 'exclusive_for': 'Taco Bell', 'initial_stock': 220, 'units_per_set': 2, 'box_lot': 30, 'pricing': Decimal('1.15'), 'end_date': '2016-12-12', 'discount': 'discount 15', 'wholesale_price': Decimal('13.20'), 'explicit': 'N', 'manufacturing_obligation': 'Y', 'pline': '2001 Demo Publishing', 'production_notes': 'Product Highlight Description', 'display_configuration': '', 'japan_distribution': 'yes_only', 'edition': 'limited_edition' } def test_delete_physical_product( db_with_data, valid_create_physical_product_fields, ): """Test successful deletion of a physical product.""" release_id = valid_create_physical_product_fields.get('release_id') with db_session() as session: # Remove pre-seeded product physical session.query(ProductPhysical).delete() product_physical_model.create( valid_create_physical_product_fields, session) product_physical_model.delete(release_id, session) result = session.query(ProductPhysical).all() assert result == []