"""Functional tests for updating a track role. Test endpoint: PATCH /track/// """ import json from oto import status as response_code from tests.testutils import db from tests.testutils import mocks def update_role(client, headers, tuid, role, role_id, data): """Make PATCH request to update role.""" endpoint = 'track/{}/{}/{}'.format(tuid, role, role_id) return client.patch(endpoint, headers=headers, data=json.dumps(data)) @db.test_schema_no_seed def test_update_track_role(mocker, client, client_headers, track_factory): """Test update track role is successful.""" test_track = track_factory.create(product_id=1, performer__count=1) tuid = test_track.tuid mocks.head_response(mocker) db.merge_model_objects([test_track]) update_payload = { 'artist_info_id': 123, 'name': 'hello world' } response = update_role( client, client_headers, tuid, 'performer', 1, data=update_payload ) response_json = json.loads(response.data.decode()) assert response.status_code == response_code.OK assert response_json['type'] == 'performer' assert response_json['artist_info_id'] == update_payload['artist_info_id'] assert response_json['name'] == update_payload['name'] @db.test_schema_no_seed def test_update_track_role_without_grass_headers( mocker, client, valid_headers, track_factory): """Test update track role is successful without grass headers.""" test_track = track_factory.create(product_id=1, performer__count=1) tuid = test_track.tuid mocks.head_response(mocker) db.merge_model_objects([test_track]) update_payload = { 'artist_info_id': 123, 'name': 'hello world' } response = update_role( client, valid_headers, tuid, 'performer', 1, data=update_payload ) response_json = json.loads(response.data.decode()) assert response.status_code == response_code.OK assert response_json['type'] == 'performer' assert response_json['artist_info_id'] == update_payload['artist_info_id'] assert response_json['name'] == update_payload['name'] @db.test_schema_no_seed def test_update_track_role_with_invalid_grass_headers( mocker, client, invalid_grass_headers, track_factory): """Test create track artist role fails with invalid grass headers.""" test_track = track_factory.create(product_id=1, performer__count=1) tuid = test_track.tuid mocks.head_response(mocker) db.merge_model_objects([test_track]) update_payload = { 'artist_info_id': 123, 'name': 'hello world' } response = update_role( client, invalid_grass_headers, tuid, 'performer', 1, data=update_payload ) assert response.status_code == response_code.BAD_REQUEST