"""Test Create Tracks with Artists.""" import json import pytest from ows_product_physical.constant import header from ows_product_physical.constant import service_name @pytest.fixture def tracks_test_setup( ows_request_mocker, db_release_id, db_project_id, valid_post_header): """Mock calls to other microservices for product lookup.""" ows_request_mocker.add( { 'method': 'get', 'service': service_name.OWS_MARKETING, 'path': '/highlights/release/{}?mkt_program_id=20'.format( db_release_id), 'status': 200, 'json': { 'items': [{'description': 'product_description'}] } }) ows_request_mocker.add({ 'method': 'head', 'service': service_name.OWS_PROJECT, 'path': '/ownership/{}/{}/project/{}'.format( valid_post_header[header.GRASS_ACCOUNT_TYPE], valid_post_header[header.GRASS_ACCOUNT_ID], db_project_id ), 'status': 200 }) ows_request_mocker.apply() def test_create_tracks_successful( client, db_with_data, db_release_id, valid_put_product_tracks_data, valid_put_product_tracks_response_data, valid_put_header, tracks_test_setup, feature_engine): """Test successful creation of tracks for a product.""" response = client.put( '/product/{}/tracks'.format(db_release_id), headers=valid_put_header, data=json.dumps(valid_put_product_tracks_data)) assert response.status_code == 201 response_data = json.loads(response.data.decode('utf-8')).get('items') for track in response_data: del track['track_id'] assert response_data == valid_put_product_tracks_response_data.get('items')