"""Test Release Artist Model.""" from ows_product_physical.connector.mysql import db_session from ows_product_physical.models import release_artist as release_artist_model from ows_product_physical.models.release_artist import ReleaseArtist def _fetch_release_artist(product_id, session): """Util to fetch release subgenre row by product_id.""" return session.query(ReleaseArtist) \ .filter(ReleaseArtist.release_id == product_id) \ .one().to_dict() def test_create_release_artist(db_fixture): """Test successful creation of a release artist.""" product_id = 42 values = {'release_id': product_id, 'upc': 12345123451, 'artist_name': 'Z'} with db_session() as session: release_artist_model.create(values, session) result = _fetch_release_artist(product_id, session) assert result == { 'release_artist_id': 1, 'release_id': 42, 'upc': 12345123451, 'artist_name': 'Z' } def test_update_release_artist(db_fixture): """Test successful update of a release artist.""" product_id = 42 values = {'release_id': product_id, 'upc': 12345123451, 'artist_name': 'Z'} update_values = {'artist_name': 'Apollonia', 'upc': 12345123452} with db_session() as session: release_artist_model.create(values, session) release_artist_model.update(update_values, product_id, session) result = _fetch_release_artist(product_id, session) assert result == { 'release_artist_id': 1, 'release_id': 42, 'upc': 12345123452, 'artist_name': 'Apollonia' } def test_delete_release_artist(db_fixture): """Test successful deletion of a release artist.""" product_id = 42 values = {'release_id': product_id, 'upc': 12345123451, 'artist_name': 'Z'} with db_session() as session: release_artist_model.create(values, session) release_artist_model.delete(product_id, session) result = session.query(ReleaseArtist).all() assert result == []