Skip to content

Commit 0c8107e

Browse files
committed
Fix #232
1 parent e2544e8 commit 0c8107e

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

dsfr/test/test_fields.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from django import forms
12
from django.template import Context, Template
23
from django.test import SimpleTestCase
34
from django.utils.datastructures import MultiValueDict
@@ -7,6 +8,37 @@
78
from dsfr.widgets import NumberCursor
89

910

11+
class FormFieldTestCase(SimpleTestCase):
12+
class DummyForm(DsfrBaseForm):
13+
user_name = forms.CharField(
14+
label="Nom d’utilisateur",
15+
max_length=100,
16+
widget=forms.TextInput(
17+
attrs={
18+
"autocomplete": "username",
19+
}
20+
),
21+
)
22+
23+
def test_full_form_works(self):
24+
rendered = Template("{{form}}").render(
25+
Context({"form": FormFieldTestCase.DummyForm()})
26+
)
27+
self.assertIn("Nom d’utilisateur", rendered)
28+
29+
def test_correct_field_works(self):
30+
rendered = Template(
31+
"{% load dsfr_tags %}{% dsfr_form_field form.user_name %}"
32+
).render(Context({"form": FormFieldTestCase.DummyForm()}))
33+
self.assertIn("Nom d’utilisateur", rendered)
34+
35+
def test_incorrect_field_raises_error(self):
36+
with self.assertRaises(AttributeError):
37+
_rendered = Template(
38+
"{% load dsfr_tags %}{% dsfr_form_field form.unknown_field %}"
39+
).render(Context({"form": FormFieldTestCase.DummyForm()}))
40+
41+
1042
class IntegerRangeFieldTestCase(SimpleTestCase):
1143
class DummyForm(DsfrBaseForm):
1244
integer_range_field = IntegerRangeField()

dsfr/utils.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,12 @@ def generate_summary_items(sections_names: list) -> list:
117117
return items
118118

119119

120-
def dsfr_input_class_attr(bf: BoundField):
120+
def dsfr_input_class_attr(bf: BoundField, *args, **kwargs):
121+
if not bf:
122+
raise AttributeError(
123+
"Either dsfr_form_field or dsfr_input_class_attr has been called with a non-existing field name."
124+
)
125+
121126
if bf.is_hidden:
122127
return bf
123128
if "class" not in bf.field.widget.attrs:

0 commit comments

Comments
 (0)