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