Example #1
0
    def test_delete_resource_translations(self):
        """
        Test resource translation deletion
        """
        # Create primary language translation. This is needed to push
        # additional translations
        source_trans = Translation(
            source_entity=self.source_entity, language=self.language, string="foobar", resource=self.resource
        )
        source_trans.save()

        trans_lang = "el"
        trans = "foo"
        # Create new translation
        resp = self.client["maintainer"].post(
            reverse("push_translation", args=[self.project.slug, trans_lang]),
            json.dumps({"strings": [{"id": source_trans.id, "translations": {"other": trans}}]}),
            content_type="application/json",
        )
        self.assertEqual(resp.status_code, 200)
        self.assertEqual(
            Translation.objects.filter(
                source_entity__resource=self.resource, language__code=trans_lang, string=trans
            ).count(),
            1,
        )

        # Delete Translations
        # Delete source language translations
        delete_url = reverse(
            "resource_translations_delete", args=[self.project.slug, self.resource.slug, self.language.code]
        )
        resp = self.client["maintainer"].get(delete_url)
        self.assertEqual(resp.status_code, 200)
        self.assertTemplateUsed(resp, "resources/resource_translations_confirm_delete.html")

        resp = self.client["maintainer"].post(delete_url, follow=True)
        self.assertEqual(resp.status_code, 200)
        self.assertTemplateUsed(resp, "resources/resource_detail.html")
        self.assertEqual(
            Translation.objects.filter(source_entity__resource=self.resource, language=self.language).count(), 0
        )

        # Delete target language translations
        delete_url_el = reverse(
            "resource_translations_delete", args=[self.project.slug, self.resource.slug, trans_lang]
        )
        resp = self.client["maintainer"].get(delete_url_el)
        self.assertEqual(resp.status_code, 200)
        self.assertTemplateUsed(resp, "resources/resource_translations_confirm_delete.html")

        resp = self.client["maintainer"].post(delete_url_el, follow=True)
        self.assertEqual(resp.status_code, 200)
        self.assertTemplateUsed(resp, "resources/resource_detail.html")
        self.assertEqual(
            Translation.objects.filter(source_entity__resource=self.resource, language__code=trans_lang).count(), 0
        )
Example #2
0
    def test_push_translation(self):
        """
        Test translation push view.
        """
        # Create primary language translation. This is needed to push
        # additional translations
        source_trans = Translation(
            source_entity=self.source_entity, language=self.language, string="foobar", resource=self.resource
        )
        source_trans.save()

        trans_lang = "el"
        trans = "foo"
        new_trans = "foo2"
        # Create new translation
        # FIXME: Test plurals
        resp = self.client["maintainer"].post(
            reverse("push_translation", args=[self.project.slug, trans_lang]),
            json.dumps({"strings": [{"id": source_trans.id, "translations": {"other": trans}}]}),
            content_type="application/json",
        )
        self.assertEqual(resp.status_code, 200)
        self.assertEqual(
            Translation.objects.filter(
                source_entity__resource=self.resource, language__code=trans_lang, string=trans
            ).count(),
            1,
        )

        # Update existing translation
        resp = self.client["maintainer"].post(
            reverse("push_translation", args=[self.project.slug, trans_lang]),
            json.dumps({"strings": [{"id": source_trans.id, "translations": {"other": new_trans}}]}),
            content_type="application/json",
        )
        self.assertEqual(resp.status_code, 200)
        translations = Translation.objects.filter(
            source_entity__resource=self.resource, language__code=trans_lang, string=new_trans
        )
        self.assertEqual(translations.count(), 1)

        source_trans.delete()
        translations.delete()
Example #3
0
    def test_push_translation(self):
        """
        Test translation push view.
        """
        # Create primary language translation. This is needed to push
        # additional translations
        source_trans = Translation(source_entity=self.source_entity,
                                   language=self.language,
                                   string="foobar",
                                   resource=self.resource)
        source_trans.save()

        trans_lang = 'el'
        trans = "foo"
        new_trans = "foo2"
        # Create new translation
        # FIXME: Test plurals
        resp = self.client['maintainer'].post(reverse(
            'push_translation', args=[self.project.slug, trans_lang]),
                                              json.dumps({
                                                  'strings': [{
                                                      'id':
                                                      source_trans.id,
                                                      'translations': {
                                                          'other': trans
                                                      }
                                                  }]
                                              }),
                                              content_type='application/json')
        self.assertEqual(resp.status_code, 200)
        self.assertEqual(
            Translation.objects.filter(source_entity__resource=self.resource,
                                       language__code=trans_lang,
                                       string=trans).count(), 1)

        # Update existing translation
        resp = self.client['maintainer'].post(reverse(
            'push_translation', args=[self.project.slug, trans_lang]),
                                              json.dumps({
                                                  'strings': [{
                                                      'id':
                                                      source_trans.id,
                                                      'translations': {
                                                          'other': new_trans
                                                      }
                                                  }]
                                              }),
                                              content_type='application/json')
        self.assertEqual(resp.status_code, 200)
        translations = Translation.objects.filter(
            source_entity__resource=self.resource,
            language__code=trans_lang,
            string=new_trans)
        self.assertEqual(translations.count(), 1)

        source_trans.delete()
        translations.delete()
Example #4
0
 def test_translations(self):
     t1 = Translation(string="A translation", source_entity=self.se1, rule=1)
     t1.source_entity_id = 1
     t2 = Translation(
         string="Two translations", source_entity=self.se1, rule=5
     )
     t2.source_entity_id = 1
     t3 = Translation(string="A translation", source_entity=self.se2, rule=5)
     t3.source_entity_id = 2
     col = TranslationCollection()
     self.assertFalse(t1 in col)
     col.add(t1)
     self.assertTrue(t1 in col)
     self.assertFalse(t2 in col)
     col.add(t2)
     self.assertTrue(t2 in col)
     self.assertFalse(t3 in col)
     col.add(t3)
     self.assertTrue(t3 in col)
     self.assertTrue(len(col._items), 3)
Example #5
0
    def test_delete_resource_translations(self):
        """
        Test resource translation deletion
        """
        # Create primary language translation. This is needed to push
        # additional translations
        source_trans = Translation(source_entity=self.source_entity,
                                   language=self.language,
                                   string="foobar",
                                   resource=self.resource)
        source_trans.save()

        trans_lang = 'el'
        trans = "foo"
        # Create new translation
        resp = self.client['maintainer'].post(reverse(
            'push_translation', args=[self.project.slug, trans_lang]),
                                              json.dumps({
                                                  'strings': [{
                                                      'id':
                                                      source_trans.id,
                                                      'translations': {
                                                          'other': trans
                                                      }
                                                  }]
                                              }),
                                              content_type='application/json')
        self.assertEqual(resp.status_code, 200)
        self.assertEqual(
            Translation.objects.filter(source_entity__resource=self.resource,
                                       language__code=trans_lang,
                                       string=trans).count(), 1)

        # Delete Translations
        # Delete source language translations
        delete_url = reverse(
            'resource_translations_delete',
            args=[self.project.slug, self.resource.slug, self.language.code])
        resp = self.client['maintainer'].get(delete_url)
        self.assertEqual(resp.status_code, 200)
        self.assertTemplateUsed(
            resp, 'resources/resource_translations_confirm_delete.html')

        resp = self.client['maintainer'].post(delete_url, follow=True)
        self.assertEqual(resp.status_code, 200)
        self.assertTemplateUsed(resp, 'resources/resource_detail.html')
        self.assertEqual(
            Translation.objects.filter(source_entity__resource=self.resource,
                                       language=self.language).count(), 0)

        # Delete target language translations
        delete_url_el = reverse(
            'resource_translations_delete',
            args=[self.project.slug, self.resource.slug, trans_lang])
        resp = self.client['maintainer'].get(delete_url_el)
        self.assertEqual(resp.status_code, 200)
        self.assertTemplateUsed(
            resp, 'resources/resource_translations_confirm_delete.html')

        resp = self.client['maintainer'].post(delete_url_el, follow=True)
        self.assertEqual(resp.status_code, 200)
        self.assertTemplateUsed(resp, 'resources/resource_detail.html')
        self.assertEqual(
            Translation.objects.filter(source_entity__resource=self.resource,
                                       language__code=trans_lang).count(), 0)