mirror of
https://github.com/SectorLabs/django-localized-fields.git
synced 2025-04-24 19:32:53 +03:00
86 lines
3.0 KiB
Python
86 lines
3.0 KiB
Python
import re
|
|
|
|
from django.conf import settings
|
|
from django.test import TestCase
|
|
|
|
from localized_fields.value import LocalizedValue
|
|
from localized_fields.widgets import LocalizedFieldWidget
|
|
|
|
|
|
class LocalizedFieldWidgetTestCase(TestCase):
|
|
"""Tests the workings of the :see:LocalizedFieldWidget class."""
|
|
|
|
@staticmethod
|
|
def test_widget_creation():
|
|
"""Tests whether a widget is created for every language correctly."""
|
|
|
|
widget = LocalizedFieldWidget()
|
|
assert len(widget.widgets) == len(settings.LANGUAGES)
|
|
assert len(set(widget.widgets)) == len(widget.widgets)
|
|
|
|
@staticmethod
|
|
def test_decompress():
|
|
"""Tests whether a :see:LocalizedValue instance can correctly be
|
|
"decompressed" over the available widgets."""
|
|
|
|
localized_value = LocalizedValue()
|
|
for lang_code, lang_name in settings.LANGUAGES:
|
|
localized_value.set(lang_code, lang_name)
|
|
|
|
widget = LocalizedFieldWidget()
|
|
decompressed_values = widget.decompress(localized_value)
|
|
|
|
for (lang_code, _), value in zip(
|
|
settings.LANGUAGES, decompressed_values
|
|
):
|
|
assert localized_value.get(lang_code) == value
|
|
|
|
@staticmethod
|
|
def test_decompress_none():
|
|
"""Tests whether the :see:LocalizedFieldWidget correctly handles
|
|
:see:None."""
|
|
|
|
widget = LocalizedFieldWidget()
|
|
decompressed_values = widget.decompress(None)
|
|
|
|
for _, value in zip(settings.LANGUAGES, decompressed_values):
|
|
assert not value
|
|
|
|
@staticmethod
|
|
def test_get_context_required():
|
|
"""Tests whether the :see:get_context correctly handles 'required'
|
|
attribute, separately for each subwidget."""
|
|
|
|
widget = LocalizedFieldWidget()
|
|
widget.widgets[0].is_required = True
|
|
widget.widgets[1].is_required = False
|
|
context = widget.get_context(
|
|
name="test", value=LocalizedValue(), attrs=dict(required=True)
|
|
)
|
|
assert context["widget"]["subwidgets"][0]["attrs"]["required"]
|
|
assert "required" not in context["widget"]["subwidgets"][1]["attrs"]
|
|
|
|
@staticmethod
|
|
def test_get_context_langs():
|
|
"""Tests whether the :see:get_context contains 'lang_code' and
|
|
'lang_name' attribute for each subwidget."""
|
|
|
|
widget = LocalizedFieldWidget()
|
|
context = widget.get_context(
|
|
name="test", value=LocalizedValue(), attrs=dict()
|
|
)
|
|
subwidgets_context = context["widget"]["subwidgets"]
|
|
for widget, context in zip(widget.widgets, subwidgets_context):
|
|
assert "lang_code" in context
|
|
assert "lang_name" in context
|
|
assert widget.lang_code == context["lang_code"]
|
|
assert widget.lang_name == context["lang_name"]
|
|
|
|
@staticmethod
|
|
def test_render():
|
|
"""Tests whether the :see:LocalizedFieldWidget correctly render."""
|
|
|
|
widget = LocalizedFieldWidget()
|
|
output = widget.render(name="title", value=None)
|
|
assert bool(re.search(r"<label (.|\n|\t)*>\w+<\/label>", output))
|