"""Tests for create_product_localizations handler.""" import json from tests.factories.release_artist import ReleaseArtistFactory from tests.testutils import db @db.test_schema def test_create_product_localizations(client): """Test create_product_localizations is successful.""" db.insert_vw_product() db.insert_itunes_languages() db.seed_models(ReleaseArtistFactory.build(release_artist_id=1)) data = {'product_name': 'test name', 'performer': {1: 'artist name'}} server_response = client.post( '/localization/product/1/language/1?legacy=1', data=json.dumps(data), content_type='application/json') actual_result = json.loads(server_response.data.decode()) assert actual_result['language_id'] == 1 assert actual_result['product_name'] == 'test name' assert len(actual_result['performer']) == 1 assert server_response.status_code == 200 @db.test_schema def test_create_product_localizations_no_artist(client): """Test create_product_localizations is successful without artist too.""" db.insert_vw_product() db.insert_itunes_languages() data = {'product_name': 'test name'} server_response = client.post( '/localization/product/1/language/1?legacy=1', data=json.dumps(data), content_type='application/json') actual_result = json.loads(server_response.data.decode()) assert actual_result['language_id'] == 1 assert actual_result['product_name'] == 'test name' assert server_response.status_code == 200 @db.test_schema def test_create_product_localizations_invalid_product(client): """Test create_product_localizations fails with invalid product.""" data = {'product_name': 'test name', 'performer': {1: 'artist name'}} server_response = client.post( '/localization/product/1/language/1?legacy=1', data=json.dumps(data), content_type='application/json') assert server_response.status_code == 404 @db.test_schema def test_create_product_localizations_invalid_data(client): """Test create_product_localizations is successful.""" db.insert_vw_product() db.insert_itunes_languages() db.seed_models(ReleaseArtistFactory.build(release_artist_id=1)) data = {'dummy': 'data'} server_response = client.post( '/localization/product/1/language/1?legacy=1', data=json.dumps(data), content_type='application/json') expected_result = {'product_name': "'product_name' is a required property"} actual_result = json.loads(server_response.data.decode()) assert server_response.status_code == 400 assert actual_result['message'] == expected_result