Files
sankalp 03bcde78e8 feat(tests): add unit tests for settings and forms
New Features
- Introduce TestNepkitSettings covering defaults, overrides, and invalid key handling
- Add TestDatetimeFormats and TestBSDateFormats verifying default format strings
- Extend test coverage for widget attributes and HTMX integration

Enhancements
- Remove xfail markers and resolve Django app registry timing issues in widget tests

Bug Fixes
- None
2026-02-25 22:26:33 +05:45

133 lines
4.3 KiB
Python

"""
Tests for django-nepkit language utilities (lang_utils.py).
"""
class TestResolveLanguageParams:
"""Tests for resolve_language_params()."""
def test_defaults_to_english(self):
"""With no args and default settings (en), ne=False and en=True."""
from django_nepkit.lang_utils import resolve_language_params
ne, en = resolve_language_params()
assert ne is False
assert en is True
def test_ne_true_sets_en_false(self):
"""When ne=True is explicitly passed, en should be False."""
from django_nepkit.lang_utils import resolve_language_params
ne, en = resolve_language_params(ne=True)
assert ne is True
assert en is False
def test_en_true_sets_ne_false(self):
"""When en=True is explicitly passed, ne should be False."""
from django_nepkit.lang_utils import resolve_language_params
ne, en = resolve_language_params(en=True)
assert ne is False
assert en is True
def test_explicit_en_true_with_ne_true(self):
"""When both ne=True and en=True, en should respect the explicit value."""
from django_nepkit.lang_utils import resolve_language_params
ne, en = resolve_language_params(ne=True, en=True)
# ne=True with explicit en=True — en is explicitly set, so it stays True
assert ne is True
assert en is True
def test_ne_false_sets_en_true(self):
"""When ne=False is explicitly passed, en should be True."""
from django_nepkit.lang_utils import resolve_language_params
ne, en = resolve_language_params(ne=False)
assert ne is False
assert en is True
def test_via_kwargs_ne(self):
"""ne can be passed via **kwargs."""
from django_nepkit.lang_utils import resolve_language_params
ne, en = resolve_language_params(**{"ne": True})
assert ne is True
assert en is False
def test_via_kwargs_en(self):
"""en can be passed via **kwargs."""
from django_nepkit.lang_utils import resolve_language_params
ne, en = resolve_language_params(**{"en": True})
assert ne is False
assert en is True
class TestPopLanguageParams:
"""Tests for pop_language_params()."""
def test_pops_ne_from_kwargs(self):
"""ne is consumed from the kwargs dict."""
from django_nepkit.lang_utils import pop_language_params
kwargs = {"ne": True, "other": "value"}
ne, en = pop_language_params(kwargs)
assert ne is True
assert en is False
assert "ne" not in kwargs # was popped
assert "other" in kwargs # unrelated keys remain
def test_pops_en_from_kwargs(self):
"""en is consumed from the kwargs dict."""
from django_nepkit.lang_utils import pop_language_params
kwargs = {"en": True, "other": "value"}
ne, en = pop_language_params(kwargs)
assert en is True
assert ne is False
assert "en" not in kwargs # was popped
def test_defaults_when_nothing_set(self):
"""Without any language kwargs, defaults from settings are used."""
from django_nepkit.lang_utils import pop_language_params
kwargs = {}
ne, en = pop_language_params(kwargs)
# Default language is 'en' in test settings
assert ne is False
assert en is True
def test_ne_true_en_not_explicit(self):
"""When ne=True is in kwargs and en is absent, en becomes False."""
from django_nepkit.lang_utils import pop_language_params
kwargs = {"ne": True}
ne, en = pop_language_params(kwargs)
assert ne is True
assert en is False
def test_ne_true_en_explicit_true(self):
"""When both ne=True and en=True are in kwargs, en respects the explicit value."""
from django_nepkit.lang_utils import pop_language_params
kwargs = {"ne": True, "en": True}
ne, en = pop_language_params(kwargs)
assert ne is True
assert en is True
def test_extra_kwargs_not_touched(self):
"""Other kwargs are left intact after popping language params."""
from django_nepkit.lang_utils import pop_language_params
kwargs = {"ne": False, "max_length": 100, "blank": True}
pop_language_params(kwargs)
assert "max_length" in kwargs
assert "blank" in kwargs