test_datetimeinput.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. from datetime import datetime
  2. from django.forms import DateTimeInput
  3. from django.test import override_settings
  4. from django.utils import translation
  5. from .base import WidgetTest
  6. class DateTimeInputTest(WidgetTest):
  7. widget = DateTimeInput()
  8. def test_render_none(self):
  9. self.check_html(self.widget, 'date', None, '<input type="text" name="date">')
  10. def test_render_value(self):
  11. """
  12. The microseconds are trimmed on display, by default.
  13. """
  14. d = datetime(2007, 9, 17, 12, 51, 34, 482548)
  15. self.assertEqual(str(d), '2007-09-17 12:51:34.482548')
  16. self.check_html(self.widget, 'date', d, html=(
  17. '<input type="text" name="date" value="2007-09-17 12:51:34">'
  18. ))
  19. self.check_html(self.widget, 'date', datetime(2007, 9, 17, 12, 51, 34), html=(
  20. '<input type="text" name="date" value="2007-09-17 12:51:34">'
  21. ))
  22. self.check_html(self.widget, 'date', datetime(2007, 9, 17, 12, 51), html=(
  23. '<input type="text" name="date" value="2007-09-17 12:51:00">'
  24. ))
  25. def test_render_formatted(self):
  26. """
  27. Use 'format' to change the way a value is displayed.
  28. """
  29. widget = DateTimeInput(
  30. format='%d/%m/%Y %H:%M', attrs={'type': 'datetime'},
  31. )
  32. d = datetime(2007, 9, 17, 12, 51, 34, 482548)
  33. self.check_html(widget, 'date', d, html='<input type="datetime" name="date" value="17/09/2007 12:51">')
  34. @override_settings(USE_L10N=True)
  35. @translation.override('de-at')
  36. def test_l10n(self):
  37. d = datetime(2007, 9, 17, 12, 51, 34, 482548)
  38. self.check_html(self.widget, 'date', d, html=(
  39. '<input type="text" name="date" value="17.09.2007 12:51:34">'
  40. ))
  41. @override_settings(USE_L10N=True)
  42. @translation.override('de-at')
  43. def test_locale_aware(self):
  44. d = datetime(2007, 9, 17, 12, 51, 34, 482548)
  45. with self.settings(USE_L10N=False):
  46. self.check_html(
  47. self.widget, 'date', d,
  48. html='<input type="text" name="date" value="2007-09-17 12:51:34">',
  49. )
  50. with translation.override('es'):
  51. self.check_html(
  52. self.widget, 'date', d,
  53. html='<input type="text" name="date" value="17/09/2007 12:51:34">',
  54. )