"""Unit tests for Language.""" from product_digital.models import language from product_digital.models import release from product_digital.models import track from tests.factories import language as lang_factory from tests.testutils import db def test_to_dict(): """Test that the expected properties are returned with correct values.""" lang = language.Language() lang.language_code = 'CHI' lang.language = 'Mandarin (Simplified)' lang.apple_compatible = True iso_639_1_code = 'ZH' lang.iso_639_1_code = iso_639_1_code lang.iso_639_3_code = 'cmn' lang.iso_code = iso_639_1_code # deprecated: use iso_639_1_code expected_dict = { 'code': lang.language_code, 'name': lang.language, 'apple_compatible': lang.apple_compatible, 'iso_639_1_code': lang.iso_639_1_code, 'iso_639_3_code': lang.iso_639_3_code, 'iso_code': lang.iso_639_1_code, # deprecated: use iso_639_1_code } assert lang.to_dict() == expected_dict @db.test_schema def test_get_languages_items(): """Test that the result includes the expected items.""" lang_count = 3 apple_incompatible_language = language.Language( language_code='SUP', language='Leet', apple_compatible=False) db.seed_models(apple_incompatible_language) apple_compatible_languages = lang_factory.LanguageFactory.build_batch( lang_count) db.seed_models(apple_compatible_languages) result = language.get_languages() dictified_languages = [lang.to_dict() for lang in apple_compatible_languages] assert result.message.get('items') == dictified_languages assert len(result.message.get('items')) == lang_count assert apple_incompatible_language.to_dict() not in result.message.get('items') @db.test_schema def test_get_languages_items_with_product_id(): """Test that the result includes the expected items.""" lang_count = 3 apple_incompatible_language_1 = language.Language( language_code='SUP', language='Leet', apple_compatible=False) db.seed_models(apple_incompatible_language_1) apple_incompatible_language_2 = language.Language( language_code='LOL', language='Lawlz', apple_compatible=False) db.seed_models(apple_incompatible_language_2) product = release.Release( upc='12345', meta_language=apple_incompatible_language_1.language_code) db.seed_models(product) apple_compatible_languages = lang_factory.LanguageFactory.build_batch( lang_count) db.seed_models(apple_compatible_languages) result = language.get_languages(product.release_id) assert len(result.message.get('items')) == 4 assert apple_incompatible_language_1.to_dict() in result.message.get('items') assert apple_incompatible_language_2.to_dict() not in result.message.get('items') @db.test_schema def test_get_languages_items_with_product_id_no_meta_language(): """Test that the result includes the expected items.""" lang_count = 3 apple_incompatible_language = language.Language( language_code='SUP', language='Leet', apple_compatible=False) db.seed_models(apple_incompatible_language) product = release.Release(upc='12345') db.seed_models(product) apple_compatible_languages = lang_factory.LanguageFactory.build_batch( lang_count) db.seed_models(apple_compatible_languages) result = language.get_languages(product.release_id) assert len(result.message.get('items')) == lang_count assert apple_incompatible_language.to_dict() not in result.message.get('items') @db.test_schema def test_get_languages_items_different_product_and_track_languages(): """Test that the result includes the expected items.""" lang_count = 3 apple_incompatible_language = language.Language( language_code='SUP', language='Leet', apple_compatible=False) db.seed_models(apple_incompatible_language) product = release.Release(upc='12345') db.seed_models(product) product_track = track.Track( release_id=product.release_id, meta_language=apple_incompatible_language.language_code) db.seed_models(product_track) apple_compatible_languages = lang_factory.LanguageFactory.build_batch( lang_count) db.seed_models(apple_compatible_languages) result = language.get_languages(product.release_id) assert len(result.message.get('items')) == 4 assert apple_incompatible_language.to_dict() in result.message.get('items')