Skip to content

Commit

Permalink
Merge pull request #4523 from open-formulieren/chore/cleanup-test-fla…
Browse files Browse the repository at this point in the history
…kiness-sources

♻️ Replace make_translated with translation.override
  • Loading branch information
sergei-maertens authored Jul 15, 2024
2 parents bdebf25 + 40786e4 commit bbe3a4e
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 232 deletions.
9 changes: 3 additions & 6 deletions src/openforms/forms/tests/test_api_formdefinition.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from django.test import override_settings
from django.urls import reverse
from django.utils import translation
from django.utils.translation import gettext_lazy as _

from rest_framework import status
Expand All @@ -13,7 +14,6 @@
UserFactory,
)
from openforms.prefill.models import PrefillConfig
from openforms.translations.tests.utils import make_translated

from ..models import FormDefinition
from .factories import FormDefinitionFactory, FormFactory, FormStepFactory
Expand Down Expand Up @@ -696,11 +696,8 @@ class FormDefinitionsAPITranslationTests(APITestCase):
def setUpTestData(cls):
super().setUpTestData()

TranslatedFormDefinitionFactory = make_translated(FormDefinitionFactory)
cls.form_definition = TranslatedFormDefinitionFactory.create(
_language="en",
name="FormDefinition 1",
)
with translation.override("en"):
cls.form_definition = FormDefinitionFactory.create(name="FormDefinition 1")

cls.user = StaffUserFactory.create(user_permissions=["change_form"])

Expand Down
71 changes: 30 additions & 41 deletions src/openforms/forms/tests/test_api_forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,12 @@
from openforms.accounts.tests.factories import StaffUserFactory, UserFactory
from openforms.config.models import GlobalConfiguration
from openforms.emails.tests.factories import ConfirmationEmailTemplateFactory
from openforms.translations.tests.utils import make_translated

from ..api.serializers import FormSerializer
from ..constants import StatementCheckboxChoices
from ..models import Form
from .factories import FormDefinitionFactory, FormFactory, FormStepFactory

TranslatedFormFactory = make_translated(FormFactory)


class FormSerializerTests(APITestCase):
def test_public_fields_meta_exist_in_fields_meta(self):
Expand Down Expand Up @@ -1268,45 +1265,37 @@ class FormsAPITranslationTests(APITestCase):
def setUpTestData(cls):
super().setUpTestData()

cls.en_form = TranslatedFormFactory.create(
_language="en",
name="Form 1",
begin_text="start",
previous_text="prev",
change_text="change",
confirm_text="confirm",
)

TranslatedConfirmationEmailTemplateFactory = make_translated(
ConfirmationEmailTemplateFactory
)
TranslatedConfirmationEmailTemplateFactory.create(
_language="en",
form=cls.en_form,
subject="Initial subject",
content="Initial content",
)

TranslatedFormStepFactory = make_translated(FormStepFactory)
TranslatedFormStepFactory.create(
_language="en",
form=cls.en_form,
next_text="Next",
previous_text="Previous",
save_text="Save",
)
with translation.override("en"):
cls.en_form = FormFactory.create(
name="Form 1",
begin_text="start",
previous_text="prev",
change_text="change",
confirm_text="confirm",
)
ConfirmationEmailTemplateFactory.create(
form=cls.en_form,
subject="Initial subject",
content="Initial content",
)
FormStepFactory.create(
form=cls.en_form,
next_text="Next",
previous_text="Previous",
save_text="Save",
)

cls.user = StaffUserFactory.create(user_permissions=["change_form"])

def test_detail_shows_translated_values_based_on_request_header(self):
form = TranslatedFormFactory.create(
_language="en",
translation_enabled=True,
begin_text="start",
previous_text="prev",
change_text="change",
confirm_text="confirm",
)
with translation.override("en"):
form = FormFactory.create(
translation_enabled=True,
begin_text="start",
previous_text="prev",
change_text="change",
confirm_text="confirm",
)

url = reverse("api:form-detail", kwargs={"uuid_or_slug": form.uuid})

Expand Down Expand Up @@ -1346,12 +1335,12 @@ def test_detail_shows_translated_literals_use_global_defaults(self, *m):

for en, nl in en_nl_combos:
with self.subTest(begin_text_en=en, begin_text_nl=nl):
form = TranslatedFormFactory.create(
_language="en",
form = FormFactory.create(
translation_enabled=True,
begin_text_en=en,
begin_text_nl=nl, # should always be ignored
previous_text="",
previous_text_en="",
previous_text_nl="",
change_text="",
confirm_text="",
)
Expand Down
23 changes: 11 additions & 12 deletions src/openforms/forms/tests/test_api_formsteps.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from django.contrib.auth.models import Permission
from django.test import override_settings, tag
from django.urls import reverse
from django.utils import translation
from django.utils.translation import gettext as _

from rest_framework import status
Expand All @@ -15,7 +16,6 @@
UserFactory,
)
from openforms.submissions.tests.factories import SubmissionFactory
from openforms.translations.tests.utils import make_translated

from ..models import FormStep
from .factories import FormDefinitionFactory, FormFactory, FormStepFactory
Expand Down Expand Up @@ -868,15 +868,14 @@ def setUpTestData(cls):

cls.form_definition = FormDefinitionFactory.create()

TranslatedFormStepFactory = make_translated(FormStepFactory)
cls.form_step = TranslatedFormStepFactory.create(
_language="en",
form_definition__name="FormDef 001",
form=cls.form,
next_text="Next",
previous_text="Previous",
save_text="Save",
)
with translation.override("en"):
cls.form_step = FormStepFactory.create(
form_definition__name="FormDef 001",
form=cls.form,
next_text="Next",
previous_text="Previous",
save_text="Save",
)

cls.user = StaffUserFactory.create(user_permissions=["change_form"])

Expand Down Expand Up @@ -1017,8 +1016,8 @@ def test_update_with_translations(self):
self.assertEqual(self.form_step.next_text_nl, "Volgende")

# The FormDefinition translations on this endpoint are read only
self.assertEqual(self.form_step.form_definition.name_en, None)
self.assertEqual(self.form_step.form_definition.name_nl, "FormDef 001")
self.assertNotEqual(self.form_step.form_definition.name_en, "English")
self.assertNotEqual(self.form_step.form_definition.name_nl, "Dutch")

@patch(
"openforms.api.exception_handling.uuid.uuid4",
Expand Down
98 changes: 40 additions & 58 deletions src/openforms/forms/tests/test_import_export.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
from openforms.registrations.contrib.zgw_apis.tests.factories import (
ZGWApiGroupConfigFactory,
)
from openforms.translations.tests.utils import make_translated
from openforms.utils.tests.vcr import OFVCRMixin
from openforms.variables.constants import FormVariableSources
from openforms.variables.tests.factories import ServiceFetchConfigurationFactory
Expand Down Expand Up @@ -559,48 +558,45 @@ def test_import_form_with_category(self):
@freeze_time() # export metadata contains a timestamp
def test_roundtrip_a_translated_form(self):
self.maxDiff = None
TranslatedFormFactory = make_translated(FormFactory)
TranslatedFormDefinitionFactory = make_translated(FormDefinitionFactory)
TranslatedFormStepFactory = make_translated(FormStepFactory)
TranslatedConfirmationEmailTemplateFactory = make_translated(
ConfirmationEmailTemplateFactory
)
other_language = "en"

form: Form
form_definition: FormDefinition
form_step: FormStep
email_template: ConfirmationEmailTemplate

form = TranslatedFormFactory.create(
_language=other_language,
translation_enabled=True,
name="Some form name translation",
submission_confirmation_template="Some submission confirmation template translation",
begin_text="Some begin text translation",
previous_text="Some previous text translation",
change_text="Some change text translation",
confirm_text="Some confirm text translation",
form = FormFactory.create(
# set required untranslated string
name="Untranslated form name",
submission_confirmation_template="Untranslated submission confirmation template",
begin_text="Untranslated begin text",
previous_text="Untranslated previous text",
change_text="Untranslated change text",
confirm_text="Untranslated confirm text",
explanation_template="Some explanations template",
# English translations
translation_enabled=True,
name_en="Some form name translation",
submission_confirmation_template_en="Some submission confirmation template translation",
begin_text_en="Some begin text translation",
previous_text_en="Some previous text translation",
change_text_en="Some change text translation",
confirm_text_en="Some confirm text translation",
explanation_template_en="Some explanations template",
)

# set required untranslated string
form.name = "Untranslated form name"
form.submission_confirmation_template = (
"Untranslated submission confirmation template"
)
form.begin_text = "Untranslated begin text"
form.previous_text = "Untranslated previous text"
form.change_text = "Untranslated change text"
form.confirm_text = "Untranslated confirm text"
form.explanation_template = "Some explanations template"
form.save()

email_template = TranslatedConfirmationEmailTemplateFactory.build(
_language=other_language,
email_template = ConfirmationEmailTemplateFactory.create(
form=form,
subject="Some confirmation email subject translation",
subject="Untranslated confirmation email subject",
content=dedent(
"""
Untranslated confirmation email content with the obligatory
{% cosign_information %}
{% appointment_information %}
{% payment_information %}
"""
).strip(),
subject_en="Some confirmation email subject translation",
content_en=dedent(
"""
Some confirmation email content translation with the obligatory
{% cosign_information %}
Expand All @@ -609,41 +605,27 @@ def test_roundtrip_a_translated_form(self):
"""
).strip(),
)
email_template.subject = "Untranslated confirmation email subject"
email_template.content = dedent(
"""
Untranslated confirmation email content with the obligatory
{% cosign_information %}
{% appointment_information %}
{% payment_information %}
"""
).strip()
email_template.save()

form_definition = TranslatedFormDefinitionFactory.create(
_language=other_language,
name="Some form definition name translation",

form_definition = FormDefinitionFactory.create(
name="Untranslated form definition name",
name_en="Some form definition name translation",
)
form_definition.name = "Untranslated form definition name"
form_definition.save()

form_step = TranslatedFormStepFactory.build(
_language=other_language,
form_step = FormStepFactory.create(
form=form,
form_definition=form_definition,
previous_text="Some previous step text translation",
save_text="Some save step text translation",
next_text="Some next step text translation",
previous_text="Untranslated previous step text",
save_text="Untranslated save step text",
next_text="Untranslated next step text",
previous_text_en="Some previous step text translation",
save_text_en="Some save step text translation",
next_text_en="Some next step text translation",
)
form_step.previous_text = "Untranslated previous step text"
form_step.save_text = "Untranslated save step text"
form_step.next_text = "Untranslated next step text"
form_step.save()

original_json = form_to_json(form.pk)

# roundtrip
with translation.override(other_language):
with translation.override("en"):
call_command("export", form.pk, self.filepath)
# language switched back to default
form.delete()
Expand Down
62 changes: 0 additions & 62 deletions src/openforms/translations/tests/test_utils.py
Original file line number Diff line number Diff line change
@@ -1,69 +1,7 @@
from django.conf import settings
from django.test import TestCase

from openforms.accounts.tests.factories import UserFactory
from openforms.forms.tests.factories import FormFactory

from ..utils import to_iso639_2b
from .utils import make_translated


class MakeTranslatedFactoryTests(TestCase):
def test_sets_values_for_passed_args(self):
TranslatedFormFactory = make_translated(FormFactory)

form = TranslatedFormFactory.create(_language="en", name="my name")

self.assertEqual(form.name_en, "my name")
self.assertFalse(form.name)
self.assertFalse(form.name_nl)

def test_translates_values_created_by_factory_functions(self):
TranslatedFormFactory = make_translated(FormFactory)

form = TranslatedFormFactory.create(_language="en")

self.assertTrue(form.name_en)
self.assertFalse(form.name)
self.assertFalse(form.name_nl)

def test_translates_on_build_strategy(self):
TranslatedFormFactory = make_translated(FormFactory)

form = TranslatedFormFactory.build(_language="en", name="my name")

self.assertEqual(form.name_en, "my name")
self.assertFalse(form.name)
self.assertFalse(form.name_nl)

def test_is_a_noop_on_non_modeltranslate_factories(self):
TranslatedUserFactory = make_translated(UserFactory)

self.assertIs(TranslatedUserFactory, UserFactory)

def test_can_still_do_explicit_passing(self):
TranslatedFormFactory = make_translated(FormFactory)

form = TranslatedFormFactory.create(name_en="my name")

self.assertEqual(form.name_en, "my name")
self.assertTrue(form.name)
self.assertEqual(form.name_nl, form.name)

def test_ignores_non_modeltranslation_fields(self):
TranslatedFormFactory = make_translated(FormFactory)

form = TranslatedFormFactory.create(slug="Slurm", _language="en")

self.assertEqual(form.slug, "slurm")
self.assertFalse(getattr(form, "slug_en", False))

def test_does_not_try_to_set_unconfigured_languages(self):
TranslatedFormFactory = make_translated(FormFactory)

form = TranslatedFormFactory.build(_language="ti", name="ስመይ")

self.assertFalse(getattr(form, "name_ti", False))


class ISO639_2BTests(TestCase):
Expand Down
Loading

0 comments on commit bbe3a4e

Please sign in to comment.