Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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