"""Test Tracks Model.""" from ows_product_physical.models import track def test_create_track_success( db_fixture, single_track_data, minimal_product_for_tracks): """Test successful creation of a track.""" result = track.process_tracks( minimal_product_for_tracks['product_id'], minimal_product_for_tracks['upc'], single_track_data) assert result.status == 201 expected_message = { 'items': [{ 'track_id': 'generated_id', 'track_number': 1, 'track_name': 'First track', 'side': None, 'song_writers': [], 'performer': ['John Doe'], 'isrc': 'US123456789', 'disc': 1, 'us_publishing_obligation': 'Composition', 'third_party_publisher': 'Y', 'publisher_names': [], 'length': { 'formatted': '01:12:32', 'hours': 1, 'minutes': 12, 'seconds': 32 }}], 'pagination': { 'type': 'standard', 'offset': 0, 'limit': 1, 'total_records': 1}} actual_message = result.message for single_track in actual_message['items']: single_track['track_id'] = 'generated_id' assert actual_message == expected_message def test_create_minimal_track( db_fixture, minimal_product_for_tracks, single_track_minimal_data): """Assert tracks table was written to.""" result = track.process_tracks( minimal_product_for_tracks['product_id'], minimal_product_for_tracks['upc'], single_track_minimal_data) assert result.status == 201 expected_message = {'items': [{ 'track_id': 'generated_id', 'track_number': 1, 'track_name': 'First track', 'side': None, 'song_writers': [], 'performer': ['John Doe'], 'isrc': None, 'disc': 1, 'length': None, 'us_publishing_obligation': None, 'third_party_publisher': 'N', 'publisher_names': [] }], 'pagination': { 'type': 'standard', 'offset': 0, 'limit': 1, 'total_records': 1 }} actual_message = result.message for tracks in actual_message['items']: tracks['track_id'] = 'generated_id' assert actual_message == expected_message def test_create_multiple_tracks( db_fixture, multiple_tracks_data, minimal_product_for_tracks): """Assert tracks table was written to.""" result = track.process_tracks( minimal_product_for_tracks['product_id'], minimal_product_for_tracks['upc'], multiple_tracks_data) assert result.status == 201 expected_message = {'items': [ { 'track_id': 'generated_id', 'track_number': 1, 'track_name': 'First track', 'performer': ['John Doe'], 'isrc': 'US123456789', 'side': None, 'song_writers': [], 'disc': 1, 'length': { 'formatted': '01:12:32', 'hours': 1, 'minutes': 12, 'seconds': 32}, 'us_publishing_obligation': 'Composition', 'third_party_publisher': 'Y', 'publisher_names': [] }, { 'track_id': 'generated_id', 'track_number': 2, 'track_name': 'Second track', 'performer': ['John Doe'], 'isrc': 'US123456789X', 'side': None, 'song_writers': [], 'disc': 1, 'length': { 'formatted': '00:04:23', 'hours': 0, 'minutes': 4, 'seconds': 23}, 'us_publishing_obligation': 'ControlledByYourLabel', 'third_party_publisher': 'Y', 'publisher_names': [] } ], 'pagination': { 'type': 'standard', 'offset': 0, 'limit': 2, 'total_records': 2 }} actual_message = result.message for tracks in actual_message['items']: tracks['track_id'] = 'generated_id' assert actual_message == expected_message