"""Functional tests for retrieving multiple tracks. Test endpoint: GET /tracks """ import json from oto import status as response_code from tests.testutils import db from tests.testutils import functions as test_funcs @db.test_schema_no_seed def test_get_mutliple_tracks( client_get_tracks, mocker, track_factory, track_localization_factory): """Test get multipe tracks is successful.""" tracks = [track_factory(), track_factory()] db.merge_model_objects(tracks) localizations = ( track_localization_factory(tracks[0], [1]) + track_localization_factory(tracks[1], [1])) res = client_get_tracks( tuids=[track.tuid for track in tracks], localizations=localizations) res_body = json.loads(res.data.decode()) assert res.status_code == response_code.OK assert res_body['pagination']['total_records'] for item in res_body['items']: assert item['localizations'] @db.test_schema_no_seed def test_get_mutliple_tracks_no_localizations( client_get_tracks, mocker, track_factory, track_localization_factory): """Verify get multiple tracks without localization.""" tracks = [track_factory(), track_factory()] db.merge_model_objects(tracks) localizations = ( track_localization_factory(tracks[0], [1]) + track_localization_factory(tracks[1], [1])) res = client_get_tracks( tuids=[track.tuid for track in tracks], localizations=localizations, exclude=['localizations']) res_body = json.loads(res.data.decode()) assert res.status_code == response_code.OK assert res_body['pagination']['total_records'] == 2 assert res_body['items'][0]['localizations'] == [] assert res_body['items'][1]['localizations'] == [] error_msg = test_funcs.validate_track_response(res_body) assert not error_msg @db.test_schema_no_seed def test_get_mutliple_tracks_bad_tuids( client_get_tracks, mocker, track_factory, track_localization_factory): """Test validation error is returned when bad tuids are passed.""" res = client_get_tracks(tuids=['a']) res_body = json.loads(res.data.decode()) assert res.status_code == response_code.BAD_REQUEST assert res_body['code'] == 'validation_error'