""" Tests for django-nepkit widgets. """ from django_nepkit.widgets import ( NepaliDatePickerWidget, ProvinceSelectWidget, DistrictSelectWidget, MunicipalitySelectWidget, ) class TestNepaliDatePickerWidget: """Tests for NepaliDatePickerWidget.""" def test_widget_renders_with_class(self): """Test that widget renders with nepkit-datepicker class.""" widget = NepaliDatePickerWidget() html = widget.render("birth_date", None) assert "class=" in html assert "nepkit-datepicker" in html def test_widget_language_attribute_en(self): """Test that widget renders data-en attribute when en=True.""" widget = NepaliDatePickerWidget(en=True) html = widget.render("birth_date", None) assert 'data-en="true"' in html def test_widget_language_attribute_ne(self): """Test that widget renders data-ne attribute when ne=True.""" widget = NepaliDatePickerWidget(ne=True) html = widget.render("birth_date", None) assert 'data-ne="true"' in html def test_widget_format_attribute(self): """Test that widget renders data-format attribute.""" widget = NepaliDatePickerWidget() html = widget.render("birth_date", None) assert "data-format=" in html def test_widget_autocomplete_off(self): """Test that widget has autocomplete=off.""" widget = NepaliDatePickerWidget() html = widget.render("birth_date", None) assert 'autocomplete="off"' in html def test_widget_placeholder(self): """Test that widget has placeholder.""" widget = NepaliDatePickerWidget() html = widget.render("birth_date", None) assert "placeholder=" in html def test_en_mode_format_value_renders_clean(self): """EN mode must not leak ``nepalidate(…)`` Python reprs.""" from nepali.datetime import nepalidate widget = NepaliDatePickerWidget(en=True) # Pass a string (the DB-stored form); the widget should pass it # through unchanged rather than calling strptime on it. rendered = widget.format_value("2081-01-15") assert rendered == "2081-01-15" # Pass a real object and check the result doesn't contain # "nepalidate(" or "nepalidate(2" — i.e. no Python repr leak. rendered_obj = widget.format_value(nepalidate(2081, 1, 15)) assert "nepalidate" not in rendered_obj def test_invalid_value_does_not_leak_repr(self): """Unknown value types render as empty instead of a Python repr.""" widget = NepaliDatePickerWidget(en=True) rendered = widget.format_value(object()) assert rendered == "" class TestLocationWidgets: """Tests for location select widgets.""" def test_province_widget_renders(self): """Test that ProvinceSelectWidget renders correctly.""" widget = ProvinceSelectWidget() html = widget.render("province", None) assert "