"""Functional tests for deleting a track localization. Endpoint: DELETE /track//localization/ """ import json from oto import status as response_code from backend.constants import error from backend.constants import track_field as tf from tests.testutils import db from tests.testutils import mocks TRACK_NAME = 'Gangsta\'s Paradise' JSON_DATA = json.dumps({ 'track_name': TRACK_NAME, 'version': 'Explicit' }) LANGUAGE_ID = 1 def _delete_track_localization( client, mocker, client_headers, tuid, language_id, error=False): """Call delete track localization endpoint.""" mocks.ows_product_delete_track_localization( mocker, tuid, language_id, error=error) endpoint = '/track/{}/localization/{}'.format(tuid, language_id) return client.delete(endpoint, headers=client_headers) @db.test_schema def test_delete_track_localization_success( client, mocker, client_headers, test_track): """Test update track localization handler is successful.""" tuid = test_track[tf.TUID] mocks.ows_product_verify_product_ownership(mocker) result = _delete_track_localization( client, mocker, client_headers, tuid, LANGUAGE_ID) response_json = json.loads(result.data.decode()) assert result assert response_json[tf.TUID] == test_track[tf.TUID] assert response_json[tf.LANGUAGE_ID] == LANGUAGE_ID @db.test_schema def test_delete_track_localization_success_without_grass_headers( client, mocker, valid_headers, test_track): """Test update track localization handler without grass headers.""" tuid = test_track[tf.TUID] result = _delete_track_localization( client, mocker, valid_headers, tuid, LANGUAGE_ID) response_json = json.loads(result.data.decode()) assert result assert response_json[tf.TUID] == tuid assert response_json[tf.LANGUAGE_ID] == LANGUAGE_ID @db.test_schema def test_delete_track_localization_success_with_invalid_grass_headers( client, mocker, invalid_grass_headers, test_track): """Test update track localization handler with invalid grass headers.""" tuid = test_track[tf.TUID] result = _delete_track_localization( client, mocker, invalid_grass_headers, tuid, LANGUAGE_ID) assert result.status_code == response_code.BAD_REQUEST @db.test_schema def test_delete_track_localization_failed( client, mocker, client_headers, test_track): """Test update track localization handler failed.""" mocks.ows_product_verify_product_ownership(mocker) result = _delete_track_localization( client, mocker, client_headers, test_track[tf.TUID], LANGUAGE_ID, error=True) response_json = json.loads(result.data.decode()) assert result.status_code == 500 assert response_json['code'] == error.OWS_PRODUCT_ERROR_CODE