"""Functional tests for patching performers data.""" import json from oto import status as response_code from tests.testutils import db from tests.testutils.functions import wrap_api_results @db.test_schema_no_seed def test_update_by_performer_type_for_product( client_update_by_performer_type_for_product, track_factory): """Test primary performers are updated for all tracks.""" tracks = [track_factory(), track_factory()] db.merge_model_objects(tracks) product_id = tracks[0].product_id performer_type = 'primary' request_data = { 'performers': [{ 'birth_name': 'Test performer', 'performer_role_id': 1, }] } expected_response_data = wrap_api_results([ { 'tuid': tracks[0].tuid, 'performers': [{ 'type': performer_type, 'birth_name': 'Test performer', 'performer_role_id': 1, 'performer_id': 1 }]}, { 'tuid': tracks[1].tuid, 'performers': [{ 'type': performer_type, 'birth_name': 'Test performer', 'performer_role_id': 1, 'performer_id': 2 }]} ]) res = client_update_by_performer_type_for_product( product_id, performer_type, request_data) data = json.loads(res.data.decode()) assert res.status_code == response_code.OK assert data == expected_response_data @db.test_schema_no_seed def test_update_by_performer_type_for_product_remove( client_update_by_performer_type_for_product, track_factory, performer_factory): """Test featured performers are removed for all tracks.""" tracks = [track_factory(), track_factory()] db.merge_model_objects(tracks) performers = [ performer_factory(tuid=tracks[0].tuid, performer_type='primary'), performer_factory(tuid=tracks[1].tuid, performer_type='primary'), performer_factory(tuid=tracks[1].tuid, performer_type='featured'), performer_factory(tuid=tracks[1].tuid, performer_type='featured') ] db.merge_model_objects(tracks) db.merge_ows_track_model_objects(performers) product_id = tracks[0].product_id performer_type = 'featured' request_data = {'performers': []} res = client_update_by_performer_type_for_product( product_id, performer_type, request_data) data = json.loads(res.data.decode()) assert res.status_code == response_code.OK assert data['pagination']['total_records'] == 2 for track_performers in data['items']: assert len(track_performers['performers']) == 1 assert track_performers['performers'][0]['type'] == 'primary'