1. from django.forms import CharField, Form, Textarea
    
  2. from django.utils.safestring import mark_safe
    
  3. 
    
  4. from .base import WidgetTest
    
  5. 
    
  6. 
    
  7. class TextareaTest(WidgetTest):
    
  8.     widget = Textarea()
    
  9. 
    
  10.     def test_render(self):
    
  11.         self.check_html(
    
  12.             self.widget,
    
  13.             "msg",
    
  14.             "value",
    
  15.             html=('<textarea rows="10" cols="40" name="msg">value</textarea>'),
    
  16.         )
    
  17. 
    
  18.     def test_render_required(self):
    
  19.         widget = Textarea()
    
  20.         widget.is_required = True
    
  21.         self.check_html(
    
  22.             widget,
    
  23.             "msg",
    
  24.             "value",
    
  25.             html='<textarea rows="10" cols="40" name="msg">value</textarea>',
    
  26.         )
    
  27. 
    
  28.     def test_render_empty(self):
    
  29.         self.check_html(
    
  30.             self.widget,
    
  31.             "msg",
    
  32.             "",
    
  33.             html='<textarea rows="10" cols="40" name="msg"></textarea>',
    
  34.         )
    
  35. 
    
  36.     def test_render_none(self):
    
  37.         self.check_html(
    
  38.             self.widget,
    
  39.             "msg",
    
  40.             None,
    
  41.             html='<textarea rows="10" cols="40" name="msg"></textarea>',
    
  42.         )
    
  43. 
    
  44.     def test_escaping(self):
    
  45.         self.check_html(
    
  46.             self.widget,
    
  47.             "msg",
    
  48.             'some "quoted" & ampersanded value',
    
  49.             html=(
    
  50.                 '<textarea rows="10" cols="40" name="msg">'
    
  51.                 "some &quot;quoted&quot; &amp; ampersanded value</textarea>"
    
  52.             ),
    
  53.         )
    
  54. 
    
  55.     def test_mark_safe(self):
    
  56.         self.check_html(
    
  57.             self.widget,
    
  58.             "msg",
    
  59.             mark_safe("pre &quot;quoted&quot; value"),
    
  60.             html=(
    
  61.                 '<textarea rows="10" cols="40" name="msg">pre &quot;quoted&quot; value'
    
  62.                 "</textarea>"
    
  63.             ),
    
  64.         )
    
  65. 
    
  66.     def test_fieldset(self):
    
  67.         class TestForm(Form):
    
  68.             template_name = "forms_tests/use_fieldset.html"
    
  69.             field = CharField(widget=self.widget)
    
  70. 
    
  71.         form = TestForm()
    
  72.         self.assertIs(self.widget.use_fieldset, False)
    
  73.         self.assertHTMLEqual(
    
  74.             '<div><label for="id_field">Field:</label>'
    
  75.             '<textarea cols="40" id="id_field" name="field" '
    
  76.             'required rows="10"></textarea></div>',
    
  77.             form.render(),
    
  78.         )