Skip to content

Commit 07fe4e9

Browse files
authored
Apply appropriate display width for radio and checkbox detail answers (#82)
1 parent dba268b commit 07fe4e9

File tree

2 files changed

+48
-11
lines changed

2 files changed

+48
-11
lines changed

app/jinja_filters.py

+18-11
Original file line numberDiff line numberDiff line change
@@ -241,8 +241,10 @@ def __init__(self, option, index, form, answer):
241241
self.label = LabelConfig(option.id, option.label.text, label_description)
242242

243243
if option.detail_answer_id:
244-
detail_answer = form["fields"][option.detail_answer_id]
245-
self.other = OtherConfig(detail_answer)
244+
detail_answer_field = form["fields"][option.detail_answer_id]
245+
detail_answer_schema = answer_option["detail_answer"]
246+
247+
self.other = OtherConfig(detail_answer_field, detail_answer_schema)
246248

247249

248250
class RadioConfig:
@@ -261,9 +263,10 @@ def __init__(self, option, index, form, answer):
261263
self.label = LabelConfig(option.id, option.label.text, label_description)
262264

263265
if option.detail_answer_id:
264-
detail_answer = form["fields"][option.detail_answer_id]
265-
answer_visible = answer_option["detail_answer"].get("visible", False)
266-
self.other = OtherConfig(detail_answer, answer_visible)
266+
detail_answer_field = form["fields"][option.detail_answer_id]
267+
detail_answer_schema = answer_option["detail_answer"]
268+
269+
self.other = OtherConfig(detail_answer_field, detail_answer_schema)
267270

268271

269272
class RelationshipRadioConfig:
@@ -292,12 +295,16 @@ def __init__(self, option, index, answer):
292295

293296

294297
class OtherConfig:
295-
def __init__(self, detail_answer, answer_visible=False):
296-
self.open = answer_visible
297-
self.id = detail_answer.id
298-
self.name = detail_answer.name
299-
self.value = escape(detail_answer._value()) # pylint: disable=protected-access
300-
self.label = LabelConfig(detail_answer.id, detail_answer.label.text)
298+
def __init__(self, detail_answer_field, detail_answer_schema):
299+
self.id = detail_answer_field.id
300+
self.name = detail_answer_field.name
301+
self.value = escape(
302+
detail_answer_field._value()
303+
) # pylint: disable=protected-access
304+
self.label = LabelConfig(detail_answer_field.id, detail_answer_field.label.text)
305+
self.open = detail_answer_schema.get("visible", False)
306+
if detail_answer_schema["type"] == "Number":
307+
self.classes = get_width_class_for_number(detail_answer_schema)
301308

302309

303310
@blueprint.app_template_filter()

tests/app/test_jinja_filters.py

+30
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,36 @@ def test_radio_class_visible_attribute():
218218

219219
assert radio.other.open is True
220220

221+
@staticmethod
222+
def test_radio_class_detail_answer_display_width_with_max_value():
223+
answer = {
224+
"type": "Radio",
225+
"id": "radio-answer-numeric-detail",
226+
"mandatory": False,
227+
"options": [
228+
{
229+
"label": "Other",
230+
"value": "Other",
231+
"detail_answer": {
232+
"mandatory": False,
233+
"id": "other-answer",
234+
"label": "Please enter a number of items",
235+
"type": "Number",
236+
"maximum": {"value": 20},
237+
"parent_id": "radio-question-numeric-detail",
238+
"visible": False,
239+
},
240+
}
241+
],
242+
"parent_id": "radio-question-numeric-detail",
243+
}
244+
245+
option = Mock()
246+
option.detail_answer_id = "other-answer"
247+
radio = RadioConfig(option=option, index=0, form=MagicMock(), answer=answer)
248+
249+
assert radio.other.classes == "input--w-2"
250+
221251

222252
def test_map_list_collector_config_no_actions():
223253
list_items = [{"item_title": "Mark Bloggs"}, {"item_title": "Joe Bloggs"}]

0 commit comments

Comments
 (0)