"""Functional test for get product tracks.""" import json from ows_product_physical.constant import header from ows_product_physical.constant import marketing from ows_product_physical.constant import service_name def test_get_product_tracks( client, valid_get_header, db_release_id_with_tracks, db_project_id, ows_request_mocker, db_with_data, feature_engine): """Test getting a product.""" ows_request_mocker.mock_response( service=service_name.OWS_MARKETING, path='/highlights/release/{}?mkt_program_id={}'.format( db_release_id_with_tracks, marketing.PROGRAM_MARKETING_HIGHLIGHTS), json={'items': [{'description': 'my thing'}]}) ows_request_mocker.mock_response( method='head', service=service_name.OWS_PROJECT, path='/ownership/{}/{}/project/{}'.format( valid_get_header[header.GRASS_ACCOUNT_TYPE], valid_get_header[header.GRASS_ACCOUNT_ID], db_project_id )) client_response = client.get( '/product/{}/tracks'.format(db_release_id_with_tracks), headers=valid_get_header ) assert client_response.status_code == 200 actual_items = json.loads(client_response.data.decode('utf-8'))['items'] expected_items = [ {'track_id': 1, 'track_number': 1, 'track_name': 'First track', 'isrc': 'SOMEISRC123', 'disc': 1, 'length': None, 'side': None, 'song_writers': ['George', 'Sally'], 'performer': ['Artist 1'], 'third_party_publisher': 'Y', 'us_publishing_obligation': 'ControlledByYourLabel', 'publisher_names': ['Publisher 1']}, {'track_id': 2, 'track_number': 2, 'track_name': 'Second track', 'side': None, 'song_writers': [], 'isrc': None, 'disc': 1, 'length': None, 'performer': ['Artist 2'], 'third_party_publisher': 'N', 'us_publishing_obligation': None, 'publisher_names': ['Publisher 2'] }] assert actual_items == expected_items