Ejemplo n.º 1
0
def entity_test_models(translation_a, locale_b):
    """This fixture provides:

    - 2 translations of a plural entity
    - 1 translation of a non-plural entity
    - A subpage that contains the plural entity
    """

    entity_a = translation_a.entity
    locale_a = translation_a.locale
    project_a = entity_a.resource.project

    locale_a.cldr_plurals = "0,1"
    locale_a.save()
    translation_a.plural_form = 0
    translation_a.active = True
    translation_a.save()
    resourceX = ResourceFactory(
        project=project_a,
        path="resourceX.po",
    )
    entity_a.string = "Entity zero"
    entity_a.key = entity_a.string
    entity_a.string_plural = "Plural %s" % entity_a.string
    entity_a.order = 0
    entity_a.save()
    entity_b = EntityFactory(
        resource=resourceX,
        string="entity_b",
        key="Key%sentity_b" % KEY_SEPARATOR,
        order=0,
    )
    translation_a_pl = TranslationFactory(
        entity=entity_a,
        locale=locale_a,
        plural_form=1,
        active=True,
        string="Plural %s" % translation_a.string,
    )
    translationX = TranslationFactory(
        entity=entity_b,
        locale=locale_a,
        active=True,
        string="Translation %s" % entity_b.string,
    )
    subpageX = SubpageFactory(
        project=project_a,
        name="Subpage",
    )
    subpageX.resources.add(entity_a.resource)
    return translation_a, translation_a_pl, translationX, subpageX
Ejemplo n.º 2
0
def approved_translation(locale_a, project_locale_a, entity_a, user_a):
    return TranslationFactory(
        entity=entity_a,
        locale=locale_a,
        user=user_a,
        approved=True,
        active=True,
    )
Ejemplo n.º 3
0
def test_lookup_collation(resource_a, locale_a):
    """
    Filter translations according to collation.
    """
    entity = EntityFactory.create(resource=resource_a, string="string",)
    entity_args = [
        {"string": u"First string", "comment": u"random Strıng"},
        {"string": u"Second strİng", "comment": u"random string"},
        {"string": u"Third Strıng", "comment": u"random strİng"},
    ]
    entities = [
        EntityFactory(resource=resource_a, string=x["string"], comment=x["comment"],)
        for x in entity_args
    ]

    translation_args = [
        u"this is string",
        u"this is STRİNG",
        u"this is Strıng",
        u"this is StrInG",
        u"this is sTriNg",
    ]
    translations = [
        TranslationFactory(entity=entity, locale=locale_a, string=s,)
        for s in translation_args
    ]

    # Check if 'Iı' and 'İi' are appropriately distinguished and filtered
    # according to turkish(tr_tr) collation
    assert set(
        resource_a.entities.filter(string__icontains_collate=(u"string", "tr_tr"))
    ) == set([entities[n] for n in [0, 1]] + [entity])
    assert set(
        resource_a.entities.filter(comment__icontains_collate=(u"strİng", "tr_tr"))
    ) == set([entities[n] for n in [1, 2]])
    assert set(
        Translation.objects.filter(string__icontains_collate=(u"string", "tr_tr"))
    ) == set([translations[n] for n in [0, 1, 4]])
    assert set(
        Translation.objects.filter(string__icontains_collate=(u"string", "tr_tr"))
    ) == set([translations[n] for n in [0, 1, 4]])
    assert set(
        Translation.objects.filter(string__icontains_collate=(u"strİng", "tr_tr"))
    ) == set([translations[n] for n in [0, 1, 4]])
    assert set(
        Translation.objects.filter(string__icontains_collate=(u"strıng", "tr_tr"))
    ) == set([translations[n] for n in [2, 3]])
    # Check if differentiation fails without any collation(C)
    assert set(
        Translation.objects.filter(string__icontains_collate=(u"string", "C"))
    ) == set([translations[n] for n in [0, 3, 4]])
    # Compare the icontains_collate query with regular i_contains query
    assert list(Translation.objects.filter(string__icontains=u"string")) == [
        translations[n] for n in [0, 2, 3, 4]
    ]
Ejemplo n.º 4
0
def translation_b(translation_a):
    """
    This fixture provides a secondary translation
    for translation_a's entity.
    """

    return TranslationFactory(
        entity=translation_a.entity,
        locale=translation_a.locale,
        string="Translation B for entity_a",
    )
Ejemplo n.º 5
0
def translation_b(translation_a):
    """
    This fixture provides a secondary translation
    for translation_a's entity.
    """
    translation_b = TranslationFactory(
        entity=translation_a.entity,
        locale=translation_a.locale,
        string="Translation B for entity_a",
    )
    translation_b.locale.refresh_from_db()
    translation_b.entity.resource.project.refresh_from_db()
    return translation_b
Ejemplo n.º 6
0
def rejected_translation(locale_a, project_locale_a, entity_a, user_a):
    return TranslationFactory(entity=entity_a,
                              locale=locale_a,
                              user=user_a,
                              rejected=True)
Ejemplo n.º 7
0
def test_lookup_collation(resource_a, locale_a):
    """
    Filter translations according to collation.
    """
    entity = EntityFactory.create(
        resource=resource_a,
        string="string",
    )
    entity_args = [
        {
            'string': u'First string',
            'comment': u'random Strıng',
        },
        {
            'string': u'Second strİng',
            'comment': u'random string',
        },
        {
            'string': u'Third Strıng',
            'comment': u'random strİng',
        },
    ]
    entities = [
        EntityFactory(
            resource=resource_a,
            string=x['string'],
            comment=x['comment'],
        ) for x in entity_args
    ]

    translation_args = [
        u'this is string', u'this is STRİNG', u'this is Strıng',
        u'this is StrInG', u'this is sTriNg'
    ]
    translations = [
        TranslationFactory(
            entity=entity,
            locale=locale_a,
            string=s,
        ) for s in translation_args
    ]

    # Check if 'Iı' and 'İi' are appropriately distinguished and filtered
    # according to turkish(tr_tr) collation
    assert (set(
        Entity.objects.filter(string__icontains_collate=(
            u'string', 'tr_tr'))) == set([entities[n]
                                          for n in [0, 1]] + [entity]))
    assert (set(
        Entity.objects.filter(comment__icontains_collate=(u'strİng',
                                                          'tr_tr'))) == set([
                                                              entities[n]
                                                              for n in [1, 2]
                                                          ]))
    assert (set(
        Translation.objects.filter(
            string__icontains_collate=(u'string', 'tr_tr'))) == set(
                [translations[n] for n in [0, 1, 4]]))
    assert (set(
        Translation.objects.filter(
            string__icontains_collate=(u'string', 'tr_tr'))) == set(
                [translations[n] for n in [0, 1, 4]]))
    assert (set(
        Translation.objects.filter(
            string__icontains_collate=(u'strİng', 'tr_tr'))) == set(
                [translations[n] for n in [0, 1, 4]]))
    assert (set(
        Translation.objects.filter(
            string__icontains_collate=(u'strıng', 'tr_tr'))) == set(
                [translations[n] for n in [2, 3]]))
    # Check if differentiation fails without any collation(C)
    assert (set(
        Translation.objects.filter(
            string__icontains_collate=(u'string', 'C'))) == set(
                [translations[n] for n in [0, 3, 4]]))
    # Compare the icontains_collate query with regular i_contains query
    assert (list(Translation.objects.filter(string__icontains=u'string')) == [
        translations[n] for n in [0, 2, 3, 4]
    ])