"""Tests for track localization schemas.""" import pytest from backend.schemas.track_localization import TrackLocalizationSchema VALID_TRACK_LOCALIZATION_REQUESTS = [ {'track_name': '', 'version': ''}, {'track_name': ' ', 'version': ' '}, {'track_name': '', 'version': '', 'artists': []}, {'track_name': '', 'version': '', 'artists': [ {'track_artist_id': 1, 'type': 'performer', 'name': 'Tubs'}]}, {'track_name': '', 'version': '', 'artists': [ {'track_artist_id': 1, 'type': 'performer', 'name': 'Tubs'}, {'track_artist_id': 2, 'type': 'performer', 'name': 'Guy Furry'}]}, {'track_name': '', 'version': '', 'artists': [ {'track_artist_id': 1, 'type': 'performer', 'name': 'Tubs'}, {'track_artist_id': 2, 'type': 'remixer', 'name': 'Tubs'}]}, {'track_name': '', 'version': '', 'artists': [ {'track_artist_id': 1, 'type': 'performer', 'name': 'Tubs'}, {'track_artist_id': 2, 'type': 'performer', 'name': 'Tubs'}]} ] INVALID_TRACK_LOCALIZATION_REQUESTS = [ {'track_name': ''}, {'version': ''}, {'track_name': '', 'version': '', 'artists': [ {'type': 'performer', 'name': 'Tubs'}]}, {'track_name': '', 'version': '', 'artists': [ {'track_artist_id': 0, 'type': 'performer', 'name': 'Tubs'}]}, {'track_name': '', 'version': '', 'artists': [ {'track_artist_id': 'a', 'type': 'performer', 'name': 'Tubs'}]}, {'track_name': '', 'version': '', 'artists': [ {'track_artist_id': 1, 'name': 'Tubs'}]}, {'track_name': '', 'version': '', 'artists': [ {'track_artist_id': 1, 'name': '', 'type': 'performer'}]}, {'track_name': '', 'version': '', 'artists': [ {'track_artist_id': 1, 'type': 'performer'}]}, {'track_name': '', 'version': '', 'artists': [ {'track_artist_id': 1, 'type': 'bad_type', 'name': 'Tubs'}]}, {'track_name': '', 'version': '', 'artists': [ {'track_artist_id': 1, 'type': 'performer', 'name': 'Tubs'}, {'track_artist_id': 1, 'type': 'performer', 'name': 'Guy Furry'}]} ] @pytest.mark.parametrize('data', VALID_TRACK_LOCALIZATION_REQUESTS) def test_track_localization_schema(data): """Test track post schema.""" result = TrackLocalizationSchema().load(data.copy()) data['track_name'] = data['track_name'].strip() data['version'] = data['version'].strip() assert not result.errors assert result.data == data @pytest.mark.parametrize('data', INVALID_TRACK_LOCALIZATION_REQUESTS) def test_track_localization_schema_bad_request(data): """Test track post schema.""" result = TrackLocalizationSchema().load(data) assert result.errors