Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

test_widget.py 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. # -*- coding: utf-8 -*-
  2. import datetime
  3. from django.test import TestCase
  4. from oscar.forms import widgets
  5. class TimePickerInputTestCase(TestCase):
  6. def test_div_attrs_context(self):
  7. i = widgets.TimePickerInput(format='%H:%M')
  8. ctx = i.get_context('test_input', None, {})
  9. self.assertEqual(ctx['div_attrs'], {
  10. 'data-oscarWidget': 'time',
  11. 'data-timeFormat': 'hh:ii',
  12. })
  13. def test_icon_classes_context(self):
  14. i = widgets.TimePickerInput(format='%H:%M')
  15. ctx = i.get_context('test_input', None, {})
  16. self.assertEqual(ctx['icon_classes'], 'icon-time glyphicon-time')
  17. def test_input_format_unicode(self):
  18. # Check that the widget can handle unicode formats
  19. i = widgets.TimePickerInput(format=u'τ-%H:%M')
  20. time = datetime.time(10, 47)
  21. html = i.render('time', time)
  22. self.assertIn(u'value="τ-10:47"', html)
  23. class DatePickerInputTestCase(TestCase):
  24. def test_div_attrs_context(self):
  25. i = widgets.DatePickerInput(format='%d/%m/%Y')
  26. ctx = i.get_context('test_input', None, {})
  27. self.assertEqual(ctx['div_attrs'], {
  28. 'data-oscarWidget': 'date',
  29. 'data-dateFormat': 'dd/mm/yyyy',
  30. })
  31. def test_icon_classes_context(self):
  32. i = widgets.DatePickerInput(format='%H:%M')
  33. ctx = i.get_context('test_input', None, {})
  34. self.assertEqual(ctx['icon_classes'], 'icon-calendar glyphicon-calendar')
  35. def test_datepickerinput_format_unicode(self):
  36. # Check that the widget can handle unicode formats
  37. i = widgets.DatePickerInput(format=u'δ-%d/%m/%Y')
  38. date = datetime.date(2017, 5, 1)
  39. html = i.render('date', date)
  40. self.assertIn(u'value="δ-01/05/2017"', html)
  41. class DateTimePickerInputTestCase(TestCase):
  42. def test_div_attrs_context(self):
  43. i = widgets.DateTimePickerInput(format='%d/%m/%Y %H:%M')
  44. ctx = i.get_context('test_input', None, {})
  45. self.assertEqual(ctx['div_attrs'], {
  46. 'data-oscarWidget': 'datetime',
  47. 'data-datetimeFormat': 'dd/mm/yyyy hh:ii',
  48. })
  49. def test_icon_classes_context(self):
  50. i = widgets.DateTimePickerInput(format='%d/%m/%Y %H:%M')
  51. ctx = i.get_context('test_input', None, {})
  52. self.assertEqual(ctx['icon_classes'], 'icon-calendar glyphicon-calendar')
  53. def test_datetimepickerinput_format_unicode(self):
  54. # Check that the widget can handle unicode formats
  55. i = widgets.DateTimePickerInput(format=u'δ-%d/%m/%Y %H:%M')
  56. date = datetime.datetime(2017, 5, 1, 10, 57)
  57. html = i.render('datetime', date)
  58. self.assertIn(u'value="δ-01/05/2017 10:57"', html)
  59. class TestWidgetsDatetimeFormat(TestCase):
  60. def test_datetime_to_date_format_conversion(self):
  61. format_testcases = (
  62. ('%Y-%m-%d', 'yyyy-mm-dd'),
  63. ('%Y-%m-%d %H:%M', 'yyyy-mm-dd'),
  64. )
  65. for format_, expected in format_testcases:
  66. self.assertEqual(widgets.datetime_format_to_js_date_format(format_), expected)
  67. def test_datetime_to_time_format_conversion(self):
  68. format_testcases = (
  69. ('%Y-%m-%d %H:%M', 'hh:ii'),
  70. ('%H:%M', 'hh:ii'),
  71. )
  72. for format_, expected in format_testcases:
  73. self.assertEqual(widgets.datetime_format_to_js_time_format(format_), expected)
  74. class AdvancedSelectWidgetTestCase(TestCase):
  75. def test_widget_disabled_options(self):
  76. choices = (
  77. ('red', 'Red'),
  78. ('blue', 'Blue'),
  79. ('green', 'Green'),
  80. )
  81. disabled_values = ('red', 'green')
  82. i = widgets.AdvancedSelect(choices=choices, disabled_values=disabled_values)
  83. html = i.render('advselect', [])
  84. self.assertInHTML('<option value="blue">Blue</option>', html, count=1)
  85. self.assertInHTML('<option value="red" disabled>Red</option>', html, count=1)
  86. self.assertInHTML('<option value="green" disabled>Green</option>', html, count=1)