"""Tests for track localization.""" from backend.constants import error from backend.logic import track_localization as track_localization_logic from tests.testutils import mocks from tests.testutils.fixtures import localization_fixture as loc_fixture def test_update_track_localization( mocker, track_localization_data, update_track_localization_response, logic_headers, track_factory, test_product_id): """Verify track localization is updated.""" tuid = 123 language_id = 1 track = track_factory.create( meta_language_code='RUS', track_name='Some name', performer__count=1) mocks.ows_product_verify_product_ownership(mocker) mocks.ows_product_get_localization_languages(mocker) mocks.track_persister.get_by_tuid(mocker, track) mocks.ows_product_digital_get_chinese_product_by_id( mocker, product_id=test_product_id) mocks.ows_product_update_track_localization( mocker, update_track_localization_response) mocks.track_persister.get_by_tuid(mocker, track) localization_response = track_localization_logic.update( tuid=tuid, language_id=language_id, localization_data=track_localization_data, **logic_headers) assert localization_response assert ( localization_response.message == update_track_localization_response.message) def test_update_track_localization_invalid_track_name( track_localization_data, logic_headers, track_factory, mocker, test_product_id): """Verify track localization with invalid track name.""" tuid = 123 language_id = 1 track_localization_data[ 'track_name'] = loc_fixture.LONG_LOCALIZED_TRACK_NAME track = track_factory.create( meta_language_code='ru', track_name='Some name', tuid=tuid, performer__count=1) mocks.ows_product_verify_product_ownership(mocker) mocks.ows_product_get_localization_languages(mocker) mocks.track_persister.get_by_tuid(mocker, track) mocks.ows_product_digital_get_product_by_id( mocker, product_id=test_product_id, meta_language='ru') localization_response = track_localization_logic.update( tuid=tuid, language_id=language_id, localization_data=track_localization_data, **logic_headers) assert not localization_response assert localization_response.errors['message'] == \ 'Localized track name cannot be longer than 200 characters.' assert localization_response.errors['code'] == 'validation_error' def test_update_track_localization_invalid_language( track_localization_data, logic_headers, track_factory, mocker, test_product_id): """Verify track localization with invalid language.""" tuid = 234 language_id = 1 track_localization_data['track_name'] = 'Some name' track = track_factory.create( meta_language_code='AFR', track_name='Some name', tuid=tuid, performer__count=1) mocks.ows_product_verify_product_ownership(mocker) mocks.ows_product_get_localization_languages(mocker) mocks.track_persister.get_by_tuid(mocker, track) mocks.ows_product_digital_get_product_by_id( mocker, product_id=test_product_id, meta_language='AFR') localization_response = track_localization_logic.update( tuid=tuid, language_id=language_id, localization_data=track_localization_data, **logic_headers) assert not localization_response assert localization_response.errors['message'] == \ 'Localization language cannot be the same as product meta language.' assert localization_response.errors['code'] == 'validation_error' def test_delete_track_localization( mocker, track_factory, logic_headers): """Verify track localization is deleted.""" tuid = 123 language_id = 1 track = track_factory.create(tuid=123) mocks.track_persister.get_by_tuid(mocker, track) mocks.ows_product_verify_product_ownership(mocker) mocks.ows_product_delete_track_localization(mocker, tuid, language_id) localization_response = track_localization_logic.delete( tuid=tuid, language_id=language_id, **logic_headers) assert localization_response assert localization_response.message['tuid'] == tuid assert localization_response.message['language_id'] == language_id def test_update_track_localization_by_product_meta_language( mocker, mock_app, track_localization_data, logic_headers, track_factory, test_product_id ): """Verify track localization with invalid language.""" tuid = 234 language_id = 12 track_localization_data['track_name'] = 'Some name' track = track_factory.create( meta_language_code='ENG', track_name='Some name', tuid=tuid, performer__count=1) mocks.ows_product_verify_product_ownership(mocker) mocks.ows_product_get_localization_languages(mocker) mocks.track_persister.get_by_tuid(mocker, track) mocks.ows_product_digital_get_product_by_id( mocker, product_id=test_product_id, meta_language='ENG') localization_response = track_localization_logic.update( tuid=tuid, language_id=language_id, localization_data=track_localization_data, **logic_headers) assert not localization_response assert localization_response.errors['message'] == \ error.VALIDATION_ERROR_SIMILAR_LOCALIZATION.format('product') assert localization_response.errors['code'] == 'validation_error'