"""Release Subgenre Model tests.""" from ows_product_physical.connector.mysql import db_session from ows_product_physical.models import release_subgenre as release_subgenre_model # noqa from ows_product_physical.models.release_subgenre import ReleaseSubgenre def _fetch_release_subgenre(product_id, session): """Util to fetch release subgenre row by product id.""" return session.query(ReleaseSubgenre) \ .filter(ReleaseSubgenre.release_id == product_id) \ .one().to_dict() def test_create_release_subgenre(db_with_data): """Test successful creation of a release subgenre.""" product_id = 42 values = {'upc': 12345123451, 'subgenre_id': 1, 'release_id': product_id} with db_session() as session: # Remove pre-seeded subgenres session.query(ReleaseSubgenre).delete() release_subgenre_model.create(values, session) result = _fetch_release_subgenre(product_id, session) assert result == { 'upc': 12345123451, 'subgenre_id': 1, 'release_id': 42, 'release_subgenre_id': 1 } def test_update_release_subgenre(db_with_data): """Test successful update of a release subgenre.""" product_id = 42 initial_values = { 'upc': 12345123451, 'subgenre_id': 1, 'release_id': product_id} updated_values = {'subgenre_id': 2} with db_session() as session: # Remove pre-seeded subgenres session.query(ReleaseSubgenre).delete() release_subgenre_model.create(initial_values, session) release_subgenre_model.update(updated_values, product_id, session) result = _fetch_release_subgenre(product_id, session) assert result == { 'upc': 12345123451, 'subgenre_id': 2, 'release_id': 42, 'release_subgenre_id': 1 } def test_delete_release_subgenre(db_with_data): """Test successful deletion of a release_subgenre.""" product_id = 42 values = {'upc': 12345123451, 'subgenre_id': 1, 'release_id': product_id} with db_session() as session: # Remove pre-seeded subgenres session.query(ReleaseSubgenre).delete() release_subgenre_model.create(values, session) release_subgenre_model.delete(product_id, session) result = session.query(ReleaseSubgenre).all() assert result == []