"""Tests for TrackArtist model.""" import pytest from ows_product_physical.connector.mysql import db_session from ows_product_physical.models import track_artist from ows_product_physical.models.track import Track def test_track_artist_to_dict(): """Test TrackArtist.to_dict() method.""" expected_result = { 'id': 1, 'name': 'Artist Name', 'track_id': 1, 'type': 'artist', } artist = track_artist.TrackArtist( id=1, name='Artist Name', track_id=1, type='artist', ) assert expected_result == artist.to_dict() @pytest.mark.parametrize( 'artist_to_create', [['Test create artist'], ['First created artist', 'Second created artist']]) def test_create_artist_for_track(db_with_data, artist_to_create): """Assert track_artist.create method success.""" test_artist_created = { 'id': 2, 'name': artist_to_create[0], 'track_id': 2, 'type': 'performer', } with db_session() as session: track = session.query(Track).get(2) artists = [ artist.to_dict() for artist in track.track_artists ] assert test_artist_created not in artists track_artist.create(artist_to_create, 2, session) session.expire_all() artists = [ artist.to_dict() for artist in track.track_artists ] assert test_artist_created in artists def test_delete_artist_for_track(db_with_data): """Assert track_artist.delete_by_track_id method success.""" with db_session() as session: track = session.query(Track).get(1) artists = [ artist.to_dict() for artist in track.track_artists ] assert artists != [{ 'id': 0, 'name': 'Artist 1', 'track_id': 1, 'type': 'artist', }] track_artist.delete_by_track_id(1, session) session.expire_all() assert len(track.track_artists) == 0 def test_bulk_delete_by_track_id_artist_for_track(db_with_data): """Assert track_artist.bulk_delete_by_track_id method success.""" track_numbers = [1, 2, 3] with db_session() as session: artists_for_tracks = ( session.query(track_artist.TrackArtist) .filter( track_artist.TrackArtist.track_id.in_(track_numbers) ) ) assert artists_for_tracks.count() == 2 track_artist.bulk_delete_by_track_id([1, 2], session) artists_for_tracks = ( session.query(track_artist.TrackArtist) .filter( track_artist.TrackArtist.track_id.in_(track_numbers) ) ) assert artists_for_tracks.count() == 0