"""Functional test for get product tracks.""" import json from ows_product_physical.constant import error from ows_product_physical.constant import header from ows_product_physical.constant import service_name def test_get_product_publishing_obligation( client, valid_get_header, db_release_id_with_tracks, ows_request_mocker, db_with_data): """Test get publishing obligations succeeds.""" ows_request_mocker.mock_response( method='head', service=service_name.OWS_PRODUCT, path='/{}/{}/product/{}'.format( valid_get_header[header.GRASS_ACCOUNT_TYPE], valid_get_header[header.GRASS_ACCOUNT_ID], db_release_id_with_tracks )) client_response = client.get( '/product/{}/tracks/publishing-obligation'.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_name': 'First track', 'track_number': 1, 'us_publishing_obligation': 'ControlledByYourLabel', 'publisher_names': ['Publisher 1'], 'third_party_publisher': 'Y' }, { 'track_name': 'Second track', 'track_number': 2, 'publisher_names': ['Publisher 2'], 'third_party_publisher': 'N', 'track_id': 2, 'us_publishing_obligation': None } ] assert actual_items == expected_items def test_get_product_publishing_obligation_if_no_tracks_for_product( client, valid_get_header, ows_request_mocker, db_with_data, db_release_id_with_no_tracks): """Test get publishing obligations succeeds.""" ows_request_mocker.mock_response( method='head', service=service_name.OWS_PRODUCT, path='/{}/{}/product/{}'.format( valid_get_header[header.GRASS_ACCOUNT_TYPE], valid_get_header[header.GRASS_ACCOUNT_ID], db_release_id_with_no_tracks )) client_response = client.get( '/product/{}/tracks/publishing-obligation'.format( db_release_id_with_no_tracks), headers=valid_get_header ) assert client_response.status_code == 404 actual_response_error_code = ( json.loads(client_response.data.decode('utf-8'))['code']) assert actual_response_error_code == ( error.PUBLISHING_OBLIGATION_NOT_FOUND_NO_TRACK_CODE.format( db_release_id_with_no_tracks))