def test_project_add_locale(client_superuser): locale_kl = LocaleFactory.create(code="kl", name="Klingon") locale_gs = LocaleFactory.create(code="gs", name="Geonosian") project = ProjectFactory.create( data_source=Project.DataSource.DATABASE, locales=[locale_kl], repositories=[], ) _create_or_update_translated_resources(project, [locale_kl]) url = reverse("pontoon.admin.project", args=(project.slug,)) # Boring data creation for FormSets. Django is painful with that, # or I don't know how to handle that more gracefully. form = ProjectForm(instance=project) form_data = dict(form.initial) del form_data["width"] del form_data["deadline"] del form_data["contact"] form_data.update( { "subpage_set-INITIAL_FORMS": "0", "subpage_set-TOTAL_FORMS": "1", "subpage_set-MIN_NUM_FORMS": "0", "subpage_set-MAX_NUM_FORMS": "1000", "externalresource_set-TOTAL_FORMS": "1", "externalresource_set-MAX_NUM_FORMS": "1000", "externalresource_set-MIN_NUM_FORMS": "0", "externalresource_set-INITIAL_FORMS": "0", "tag_set-TOTAL_FORMS": "1", "tag_set-INITIAL_FORMS": "0", "tag_set-MAX_NUM_FORMS": "1000", "tag_set-MIN_NUM_FORMS": "0", "repositories-INITIAL_FORMS": "0", "repositories-MIN_NUM_FORMS": "0", "repositories-MAX_NUM_FORMS": "1000", "repositories-TOTAL_FORMS": "0", # These are the values that actually matter. "pk": project.pk, "locales": [locale_kl.id, locale_gs.id], "configuration_file": "", } ) response = client_superuser.post(url, form_data) assert response.status_code == 200 assert b". Error." not in response.content # Verify we have the right ProjectLocale objects. pl = ProjectLocale.objects.filter(project=project) assert len(pl) == 2 # Verify that TranslatedResource objects have been created. resource = Resource.objects.get(project=project, path="database") tr = TranslatedResource.objects.filter(resource=resource) assert len(tr) == 2
def test_project_add_locale(client_superuser): locale_kl = LocaleFactory.create(code='kl', name='Klingon') locale_gs = LocaleFactory.create(code='gs', name='Geonosian') project = ProjectFactory.create( data_source='database', locales=[locale_kl], repositories=[], ) _create_or_update_translated_resources(project, [locale_kl]) url = reverse('pontoon.admin.project', args=(project.slug, )) # Boring data creation for FormSets. Django is painful with that, # or I don't know how to handle that more gracefully. form = ProjectForm(instance=project) form_data = dict(form.initial) del form_data['width'] del form_data['deadline'] del form_data['contact'] form_data.update({ 'subpage_set-INITIAL_FORMS': '0', 'subpage_set-TOTAL_FORMS': '1', 'subpage_set-MIN_NUM_FORMS': '0', 'subpage_set-MAX_NUM_FORMS': '1000', 'externalresource_set-TOTAL_FORMS': '1', 'externalresource_set-MAX_NUM_FORMS': '1000', 'externalresource_set-MIN_NUM_FORMS': '0', 'externalresource_set-INITIAL_FORMS': '0', 'tag_set-TOTAL_FORMS': '1', 'tag_set-INITIAL_FORMS': '0', 'tag_set-MAX_NUM_FORMS': '1000', 'tag_set-MIN_NUM_FORMS': '0', 'repositories-INITIAL_FORMS': '0', 'repositories-MIN_NUM_FORMS': '0', 'repositories-MAX_NUM_FORMS': '1000', 'repositories-TOTAL_FORMS': '0', # These are the values that actually matter. 'pk': project.pk, 'locales': [locale_kl.id, locale_gs.id], }) response = client_superuser.post(url, form_data) assert response.status_code == 200 assert b'. Error.' not in response.content # Verify we have the right ProjectLocale objects. pl = ProjectLocale.objects.filter(project=project) assert len(pl) == 2 # Verify that TranslatedResource objects have been created. resource = Resource.objects.get(project=project, path='database') tr = TranslatedResource.objects.filter(resource=resource) assert len(tr) == 2
def test_project_add_locale(client_superuser): locale_kl = LocaleFactory.create(code='kl', name='Klingon') locale_gs = LocaleFactory.create(code='gs', name='Geonosian') project = ProjectFactory.create( data_source='database', locales=[locale_kl], repositories=[], ) _create_or_update_translated_resources(project, [locale_kl]) url = reverse('pontoon.admin.project', args=(project.slug,)) # Boring data creation for FormSets. Django is painful with that, # or I don't know how to handle that more gracefully. form = ProjectForm(instance=project) form_data = dict(form.initial) del form_data['width'] del form_data['deadline'] del form_data['contact'] form_data.update({ 'subpage_set-INITIAL_FORMS': '0', 'subpage_set-TOTAL_FORMS': '1', 'subpage_set-MIN_NUM_FORMS': '0', 'subpage_set-MAX_NUM_FORMS': '1000', 'externalresource_set-TOTAL_FORMS': '1', 'externalresource_set-MAX_NUM_FORMS': '1000', 'externalresource_set-MIN_NUM_FORMS': '0', 'externalresource_set-INITIAL_FORMS': '0', 'tag_set-TOTAL_FORMS': '1', 'tag_set-INITIAL_FORMS': '0', 'tag_set-MAX_NUM_FORMS': '1000', 'tag_set-MIN_NUM_FORMS': '0', 'repositories-INITIAL_FORMS': '0', 'repositories-MIN_NUM_FORMS': '0', 'repositories-MAX_NUM_FORMS': '1000', 'repositories-TOTAL_FORMS': '0', # These are the values that actually matter. 'pk': project.pk, 'locales': [locale_kl.id, locale_gs.id], }) response = client_superuser.post(url, form_data) assert response.status_code == 200 assert '. Error.' not in response.content # Verify we have the right ProjectLocale objects. pl = ProjectLocale.objects.filter(project=project) assert len(pl) == 2 # Verify that TranslatedResource objects have been created. resource = Resource.objects.get(project=project, path='database') tr = TranslatedResource.objects.filter(resource=resource) assert len(tr) == 2
def test_manage_project_strings_translated_resource(client_superuser): """Test that adding new strings to a project enables translation of that project on all enabled locales. """ locales = [ LocaleFactory.create(code='kl', name='Klingon'), LocaleFactory.create(code='gs', name='Geonosian'), ] project = ProjectFactory.create( data_source='database', locales=locales, repositories=[] ) locales_count = len(locales) _create_or_update_translated_resources(project, locales) url = reverse('pontoon.admin.project.strings', args=(project.slug,)) new_strings = """ Morty, do you know what "Wubba lubba dub dub" means? Oh that's just Rick's stupid non-sense catch phrase. It's not. In my people's tongue, it means "I am in great pain, please help me". """ strings_count = 4 response = client_superuser.post(url, {'new_strings': new_strings}) assert response.status_code == 200 # Verify no strings have been created as entities. entities = list(Entity.objects.filter(resource__project=project)) assert len(entities) == strings_count # Verify the resource has the right stats. resources = Resource.objects.filter(project=project) assert len(resources) == 1 resource = resources[0] assert resource.total_strings == strings_count # Verify the correct TranslatedResource objects have been created. translated_resources = TranslatedResource.objects.filter(resource__project=project) assert len(translated_resources) == locales_count # Verify stats have been correctly updated on locale, project and resource. for tr in translated_resources: assert tr.total_strings == strings_count project = Project.objects.get(id=project.id) assert project.total_strings == strings_count * locales_count for l in locales: locale = Locale.objects.get(id=l.id) assert locale.total_strings == strings_count
def test_manage_project_strings_translated_resource(client_superuser): """Test that adding new strings to a project enables translation of that project on all enabled locales. """ locales = [ LocaleFactory.create(code='kl', name='Klingon'), LocaleFactory.create(code='gs', name='Geonosian'), ] project = ProjectFactory.create(data_source='database', locales=locales, repositories=[]) locales_count = len(locales) _create_or_update_translated_resources(project, locales) url = reverse('pontoon.admin.project.strings', args=(project.slug, )) new_strings = """ Morty, do you know what "Wubba lubba dub dub" means? Oh that's just Rick's stupid non-sense catch phrase. It's not. In my people's tongue, it means "I am in great pain, please help me". """ strings_count = 4 response = client_superuser.post(url, {'new_strings': new_strings}) assert response.status_code == 200 # Verify no strings have been created as entities. entities = list(Entity.objects.filter(resource__project=project)) assert len(entities) == strings_count # Verify the resource has the right stats. resources = Resource.objects.filter(project=project) assert len(resources) == 1 resource = resources[0] assert resource.total_strings == strings_count # Verify the correct TranslatedResource objects have been created. translated_resources = TranslatedResource.objects.filter( resource__project=project) assert len(translated_resources) == locales_count # Verify stats have been correctly updated on locale, project and resource. for tr in translated_resources: assert tr.total_strings == strings_count project = Project.objects.get(id=project.id) assert project.total_strings == strings_count * locales_count for l in locales: locale = Locale.objects.get(id=l.id) assert locale.total_strings == strings_count