1. from datetime import date
    
  2. 
    
  3. from django.forms import CharField, DateInput, Form
    
  4. from django.utils import translation
    
  5. 
    
  6. from .base import WidgetTest
    
  7. 
    
  8. 
    
  9. class DateInputTest(WidgetTest):
    
  10.     widget = DateInput()
    
  11. 
    
  12.     def test_render_none(self):
    
  13.         self.check_html(
    
  14.             self.widget, "date", None, html='<input type="text" name="date">'
    
  15.         )
    
  16. 
    
  17.     def test_render_value(self):
    
  18.         d = date(2007, 9, 17)
    
  19.         self.assertEqual(str(d), "2007-09-17")
    
  20. 
    
  21.         self.check_html(
    
  22.             self.widget,
    
  23.             "date",
    
  24.             d,
    
  25.             html='<input type="text" name="date" value="2007-09-17">',
    
  26.         )
    
  27.         self.check_html(
    
  28.             self.widget,
    
  29.             "date",
    
  30.             date(2007, 9, 17),
    
  31.             html=('<input type="text" name="date" value="2007-09-17">'),
    
  32.         )
    
  33. 
    
  34.     def test_string(self):
    
  35.         """
    
  36.         Should be able to initialize from a string value.
    
  37.         """
    
  38.         self.check_html(
    
  39.             self.widget,
    
  40.             "date",
    
  41.             "2007-09-17",
    
  42.             html=('<input type="text" name="date" value="2007-09-17">'),
    
  43.         )
    
  44. 
    
  45.     def test_format(self):
    
  46.         """
    
  47.         Use 'format' to change the way a value is displayed.
    
  48.         """
    
  49.         d = date(2007, 9, 17)
    
  50.         widget = DateInput(format="%d/%m/%Y", attrs={"type": "date"})
    
  51.         self.check_html(
    
  52.             widget, "date", d, html='<input type="date" name="date" value="17/09/2007">'
    
  53.         )
    
  54. 
    
  55.     @translation.override("de-at")
    
  56.     def test_l10n(self):
    
  57.         self.check_html(
    
  58.             self.widget,
    
  59.             "date",
    
  60.             date(2007, 9, 17),
    
  61.             html='<input type="text" name="date" value="17.09.2007">',
    
  62.         )
    
  63. 
    
  64.     def test_fieldset(self):
    
  65.         class TestForm(Form):
    
  66.             template_name = "forms_tests/use_fieldset.html"
    
  67.             field = CharField(widget=self.widget)
    
  68. 
    
  69.         form = TestForm()
    
  70.         self.assertIs(self.widget.use_fieldset, False)
    
  71.         self.assertHTMLEqual(
    
  72.             form.render(),
    
  73.             '<div><label for="id_field">Field:</label>'
    
  74.             '<input id="id_field" name="field" required type="text"></div>',
    
  75.         )