Ignore:
Timestamp:
18 Apr 2012, 12:46:52 (13 years ago)
Author:
uli
Message:

Try to be smart (evil?). Interpret entered datetimes w/o TZ as app-wide TZ data.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.kofa/trunk/src/waeup/kofa/widgets/tests/test_datetimewidget.py

    r8199 r8207  
    33import pytz
    44from zope import schema
     5from zope.component import getGlobalSiteManager
    56from zope.formlib import form
    67from zope.formlib.interfaces import IInputWidget, IDisplayWidget
     
    1112from zope.interface.verify import verifyClass, verifyObject
    1213from zope.publisher.browser import TestRequest
     14from waeup.kofa.interfaces import IKofaUtils
    1315from waeup.kofa.widgets.datetimewidget import PytzDatetimeWidget
    1416
     
    2527    form_fields = form.fields(IContent)
    2628    form_fields['my_dt'].custom_widget = PytzDatetimeWidget
     29
     30class FakeUtils(object):
     31    # Fake app-wide set timezone.
     32    implements(IKofaUtils)
     33    tzinfo = pytz.timezone('America/Sao_Paulo')
     34
    2735
    2836class PytzDatetimeWidgetTests(FunctionalWidgetTestCase):
     
    6674        self.assertTrue(content.my_dt.tzinfo is pytz.utc)
    6775        return
     76
     77    def setUp(self):
     78        super(PytzDatetimeWidgetTests, self).setUp()
     79        self.gsm = getGlobalSiteManager()
     80        self.utils = FakeUtils()
     81        self.gsm.registerUtility(self.utils)
     82        return
     83
     84    def tearDown(self):
     85        super(PytzDatetimeWidgetTests, self).tearDown()
     86        self.gsm.unregisterUtility(self.utils)
     87        return
     88
     89    def test_datetimes_wo_tz(self):
     90        # Datetimes w/o tz are considered to be meant in app-wide timezone.
     91        content = Content()
     92        request = TestRequest()
     93
     94        request.form['form.my_dt'] = u'2011-11-11 11:11:11'
     95        request.form['form.actions.apply'] = u''
     96        SampleForm(content, request)()
     97
     98        # Sao Paulo was two hours back UTC on 2011-11-11
     99        self.assertEqual(content.my_dt, datetime.datetime(
     100            2011, 11, 11, 13, 11, 11, tzinfo=pytz.utc))
     101        self.assertTrue(content.my_dt.tzinfo is pytz.utc)
     102        return
Note: See TracChangeset for help on using the changeset viewer.