# -*- coding: utf-8 -*-
import datetime
from django.test import TestCase
from oscar.forms import widgets
class TimePickerInputTestCase(TestCase):
def test_div_attrs_context(self):
i = widgets.TimePickerInput(format='%H:%M')
ctx = i.get_context('test_input', None, {})
self.assertEqual(ctx['div_attrs'], {
'data-oscarWidget': 'time',
'data-timeFormat': 'hh:ii',
})
def test_icon_classes_context(self):
i = widgets.TimePickerInput(format='%H:%M')
ctx = i.get_context('test_input', None, {})
self.assertEqual(ctx['icon_classes'], 'icon-time glyphicon-time')
def test_input_format_unicode(self):
# Check that the widget can handle unicode formats
i = widgets.TimePickerInput(format=u'τ-%H:%M')
time = datetime.time(10, 47)
html = i.render('time', time)
self.assertIn(u'value="τ-10:47"', html)
class DatePickerInputTestCase(TestCase):
def test_div_attrs_context(self):
i = widgets.DatePickerInput(format='%d/%m/%Y')
ctx = i.get_context('test_input', None, {})
self.assertEqual(ctx['div_attrs'], {
'data-oscarWidget': 'date',
'data-dateFormat': 'dd/mm/yyyy',
})
def test_icon_classes_context(self):
i = widgets.DatePickerInput(format='%H:%M')
ctx = i.get_context('test_input', None, {})
self.assertEqual(ctx['icon_classes'], 'icon-calendar glyphicon-calendar')
def test_datepickerinput_format_unicode(self):
# Check that the widget can handle unicode formats
i = widgets.DatePickerInput(format=u'δ-%d/%m/%Y')
date = datetime.date(2017, 5, 1)
html = i.render('date', date)
self.assertIn(u'value="δ-01/05/2017"', html)
class DateTimePickerInputTestCase(TestCase):
def test_div_attrs_context(self):
i = widgets.DateTimePickerInput(format='%d/%m/%Y %H:%M')
ctx = i.get_context('test_input', None, {})
self.assertEqual(ctx['div_attrs'], {
'data-oscarWidget': 'datetime',
'data-datetimeFormat': 'dd/mm/yyyy hh:ii',
})
def test_icon_classes_context(self):
i = widgets.DateTimePickerInput(format='%d/%m/%Y %H:%M')
ctx = i.get_context('test_input', None, {})
self.assertEqual(ctx['icon_classes'], 'icon-calendar glyphicon-calendar')
def test_datetimepickerinput_format_unicode(self):
# Check that the widget can handle unicode formats
i = widgets.DateTimePickerInput(format=u'δ-%d/%m/%Y %H:%M')
date = datetime.datetime(2017, 5, 1, 10, 57)
html = i.render('datetime', date)
self.assertIn(u'value="δ-01/05/2017 10:57"', html)
class TestWidgetsDatetimeFormat(TestCase):
def test_datetime_to_date_format_conversion(self):
format_testcases = (
('%Y-%m-%d', 'yyyy-mm-dd'),
('%Y-%m-%d %H:%M', 'yyyy-mm-dd'),
)
for format_, expected in format_testcases:
self.assertEqual(widgets.datetime_format_to_js_date_format(format_), expected)
def test_datetime_to_time_format_conversion(self):
format_testcases = (
('%Y-%m-%d %H:%M', 'hh:ii'),
('%H:%M', 'hh:ii'),
)
for format_, expected in format_testcases:
self.assertEqual(widgets.datetime_format_to_js_time_format(format_), expected)
class AdvancedSelectWidgetTestCase(TestCase):
def test_widget_disabled_options(self):
choices = (
('red', 'Red'),
('blue', 'Blue'),
('green', 'Green'),
)
disabled_values = ('red', 'green')
i = widgets.AdvancedSelect(choices=choices, disabled_values=disabled_values)
html = i.render('advselect', [])
self.assertInHTML('', html, count=1)
self.assertInHTML('', html, count=1)
self.assertInHTML('', html, count=1)