def setUp(self):
        super(TestDatetimeConverter, self).setUp()
        request = TestRequest()

        datetime_field = schema.Datetime()

        widget = DateTimePickerWidget(request)
        widget.form = schema.Field()
        self.converter = DateTimeDataConverter(datetime_field, widget)
class TestDatetimeConverter(FunctionalTestCase):

    def setUp(self):
        super(TestDatetimeConverter, self).setUp()
        request = TestRequest()

        datetime_field = schema.Datetime()

        widget = DateTimePickerWidget(request)
        widget.form = schema.Field()
        self.converter = DateTimeDataConverter(datetime_field, widget)

    def test_toWidgetValue_with_german_js_format_by_default(self):
        value = self.converter.toWidgetValue(datetime(2015, 6, 24, 10, 0))
        self.assertEquals('24.06.2015 10:00', value)

    def test_toFieldValue_with_german_js_format_by_default(self):
        value = self.converter.toFieldValue('24.06.2015 10:00')
        self.assertEquals(datetime(2015, 6, 24, 10, 0), value)

    def test_toFieldValue_with_german_js_format_without_time(self):
        widget_format = 'd.m.Y'
        self.converter.transformed_format = transform_js_format(widget_format)
        value = self.converter.toFieldValue('24.06.2015')
        self.assertEquals(datetime(2015, 6, 24, 0, 0), value)

    def test_toFieldValue_is_none_if_empty_string(self):
        value = self.converter.toFieldValue(u'')
        self.assertIsNone(value, 'Expect none if data is empty string.')

    def test_toFieldValue_raises_formatter_error_if_data_are_invalid(self):
        """
        The widget expects the time by default. This test makes sure the
        widget renders an error if no time is provided.
        """
        with self.assertRaises(FormatterValidationError):
            self.converter.toFieldValue(u'24.06.2015')

    def test_toFieldValue_custom_config(self):
        widget_format = 'Y-m-d'
        self.converter.transformed_format = transform_js_format(widget_format)

        with self.assertRaises(FormatterValidationError):
            self.converter.toFieldValue(u'24.06.2015')

        value = self.converter.toFieldValue(u'2015-06-24')
        self.assertEquals(datetime(2015, 6, 24, 0, 0), value)