"""Tests for TrackPublisher model.""" import pytest from ows_product_physical.connector.mysql import db_session from ows_product_physical.models import track_publisher from ows_product_physical.models.track import Track def test_track_publisher_to_dict(): """Test TrackPublisher.to_dict() method.""" expected_result = { 'track_publisher_id': 1, 'type': 'publisher', 'name': 'Publisher Name'} publisher = track_publisher.TrackPublisher( track_publisher_id=1, track_id=1, publisher_name='Publisher Name') assert expected_result == publisher.to_dict() def test_track_publisher_name_setter(): """Test TrackPublisher name setter.""" new_name = 'New name' publisher = track_publisher.TrackPublisher( track_publisher_id=1, track_id=1, publisher_name='Publisher Name') publisher.name = new_name assert publisher.publisher_name == new_name @pytest.mark.parametrize( 'publisher_to_create', [['Test create publisher'], ['First created publisher', 'Second created publisher']]) def test_create_publisher_for_track(db_with_data, publisher_to_create): """Assert track_publisher.create method success.""" test_publisher_created = { 'name': publisher_to_create[0], 'track_publisher_id': 2, 'type': 'publisher'} with db_session() as session: track_from_db = session.query(Track).get(2).to_dict() assert test_publisher_created not in track_from_db['publishers'] track_publisher.create(publisher_to_create, 2, session) track_from_db = session.query(Track).get(2).to_dict() assert test_publisher_created in track_from_db['publishers'] def test_delete_publisher_for_track(db_with_data): """Assert track_publisher.delete_by_track_id method success.""" with db_session() as session: track_from_db = session.query(Track).get(1).to_dict() assert track_from_db['publishers'] == [{ 'name': 'Publisher 1', 'track_publisher_id': 0, 'type': 'publisher'}] track_publisher.delete_by_track_id(1, session) track_from_db = session.query(Track).get(1).to_dict() assert track_from_db['publishers'] == [] def test_bulk_delete_by_track_id_publisher_for_track(db_with_data): """Assert track_publisher.bulk_delete_by_track_id method success.""" track_numbers = [1, 2, 3] with db_session() as session: publishers_for_tracks = ( session.query(track_publisher.TrackPublisher) .filter( track_publisher.TrackPublisher.track_id.in_(track_numbers))) assert publishers_for_tracks.count() == 2 track_publisher.bulk_delete_by_track_id([1, 2], session) publishers_for_tracks = ( session.query(track_publisher.TrackPublisher) .filter( track_publisher.TrackPublisher.track_id.in_(track_numbers))) assert publishers_for_tracks.count() == 0