diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index df09cff2f6..aa507a5281 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -457,17 +457,21 @@ class TextLine(InputTypeBase): """ A text line input. Can do math preview if "math"="1" is specified. - If "trailing_text" is set to a value, then the textline will be shown with the value after the text input, - and before the checkmark or any input-specific feedback. HTML will not work, but properly escaped HTML characters will. - This feature is useful if you would like to specify a specific type of units for the text input. + If "trailing_text" is set to a value, then the textline will be shown with + the value after the text input, and before the checkmark or any input-specific + feedback. HTML will not work, but properly escaped HTML characters will. This + feature is useful if you would like to specify a specific type of units for the + text input. - If the hidden attribute is specified, the textline is hidden and the input id is stored in a div with name equal - to the value of the hidden attribute. This is used e.g. for embedding simulations turned into questions. + If the hidden attribute is specified, the textline is hidden and the input id + is stored in a div with name equal to the value of the hidden attribute. This + is used e.g. for embedding simulations turned into questions. Example: - This example will render out a text line with a math preview and the text 'm/s' after the end of the text line. + This example will render out a text line with a math preview and the text 'm/s' + after the end of the text line. """ template = "textline.html" diff --git a/common/lib/capa/capa/tests/test_inputtypes.py b/common/lib/capa/capa/tests/test_inputtypes.py index 6c820503b1..7e2f956f56 100644 --- a/common/lib/capa/capa/tests/test_inputtypes.py +++ b/common/lib/capa/capa/tests/test_inputtypes.py @@ -1,6 +1,5 @@ -# coding='utf-8' """ -feature Tests of input types. +Tests of input types. TODO: - refactor: so much repetive code (have factory methods that build xml elements directly, etc) @@ -21,7 +20,6 @@ import json from lxml import etree import unittest import xml.sax.saxutils as saxutils -import unicodedata as ud from . import test_system from capa import inputtypes @@ -220,87 +218,40 @@ class TextLineTest(unittest.TestCase): def test_trailing_text_rendering(self): size = "42" - trailing_text = 'm/s' - xml_str = """""".format(size=size, tt=trailing_text) + # store (xml_text, expected) + trailing_text = [] + # standard trailing text + trailing_text.append(('m/s', 'm/s')) + # unicode trailing text + trailing_text.append((u'\xc3', u'\xc3')) + # html escaped trailing text + # this is the only one we expect to change + trailing_text.append(('a < b','a < b')) - element = etree.fromstring(xml_str) + for xml_text, expected_text in trailing_text: + xml_str = u"""""".format(size=size, tt=xml_text) - state = {'value': 'BumbleBee', } - the_input = lookup_tag('textline')(test_system, element, state) + element = etree.fromstring(xml_str) - context = the_input._get_render_context() + state = {'value': 'BumbleBee', } + the_input = lookup_tag('textline')(test_system, element, state) - expected = {'id': 'prob_1_2', - 'value': 'BumbleBee', - 'status': 'unanswered', - 'size': size, - 'msg': '', - 'hidden': False, - 'inline': False, - 'do_math': False, - 'trailing_text': trailing_text, - 'preprocessor': None} - self.assertEqual(context, expected) + context = the_input._get_render_context() - - def test_trailing_unicode(self): - size = "42" - trailing_text = u'\xc3' - print trailing_text - xml_str = u"""""".format(size=size, tt=trailing_text) - - element = etree.fromstring(xml_str) - - state = {'value': 'BumbleBee', } - the_input = lookup_tag('textline')(test_system, element, state) - - context = the_input._get_render_context() - - expected = {'id': 'prob_1_2', - 'value': 'BumbleBee', - 'status': 'unanswered', - 'size': size, - 'msg': '', - 'hidden': False, - 'inline': False, - 'do_math': False, - 'trailing_text': trailing_text, - 'preprocessor': None} - self.assertEqual(context, expected) - - - def test_trailing_text_special_characters(self): - size = "42" - trailing_text = 'a < b' - xml_str = """""".format(size=size, tt=trailing_text) - - element = etree.fromstring(xml_str) - - state = {'value': 'BumbleBee', } - the_input = lookup_tag('textline')(test_system, element, state) - - context = the_input._get_render_context() - - expected = {'id': 'prob_1_2', - 'value': 'BumbleBee', - 'status': 'unanswered', - 'size': size, - 'msg': '', - 'hidden': False, - 'inline': False, - 'do_math': False, - 'trailing_text': 'a < b', - 'preprocessor': None} - self.assertEqual(context, expected) + expected = {'id': 'prob_1_2', + 'value': 'BumbleBee', + 'status': 'unanswered', + 'size': size, + 'msg': '', + 'hidden': False, + 'inline': False, + 'do_math': False, + 'trailing_text': expected_text, + 'preprocessor': None} + self.assertEqual(context, expected) class FileSubmissionTest(unittest.TestCase):