[Checkins] SVN: zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_functional_datetimewidget.py Remove datetimewidget test.
Martijn Faassen
faassen at startifact.com
Thu Dec 31 02:17:03 EST 2009
Log message for revision 107432:
Remove datetimewidget test.
Changed:
D zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_functional_datetimewidget.py
-=-
Deleted: zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_functional_datetimewidget.py
===================================================================
--- zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_functional_datetimewidget.py 2009-12-31 07:16:50 UTC (rev 107431)
+++ zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_functional_datetimewidget.py 2009-12-31 07:17:03 UTC (rev 107432)
@@ -1,231 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""DateTime Widget Functional Tests
-
-$Id$
-"""
-import unittest
-import re
-import transaction
-from persistent import Persistent
-from datetime import datetime
-
-import zope.security.checker
-from zope.datetime import parseDatetimetz, tzinfo
-from zope.interface import Interface, implements
-from zope.schema import Datetime, Choice
-from zope.traversing.api import traverse
-
-from zope.app.form.testing import AppFormLayer
-from zope.app.form.browser.tests.support import *
-from zope.app.testing.functional import BrowserTestCase
-
-
-class IDatetimeTest(Interface):
-
- d2 = Datetime(
- required=False)
-
- d3 = Choice(
- required=False,
- values=(
- datetime(2003, 9, 15, tzinfo=tzinfo(0)),
- datetime(2003, 10, 15, tzinfo=tzinfo(0))),
- missing_value=datetime(2000, 1, 1, tzinfo=tzinfo(0)))
-
- d1 = Datetime(
- required=True,
- min=datetime(2003, 1, 1, tzinfo=tzinfo(0)),
- max=datetime(2020, 12, 31, tzinfo=tzinfo(0)))
-
-class DatetimeTest(Persistent):
-
- implements(IDatetimeTest)
-
- def __init__(self):
- self.d1 = datetime(2003, 4, 6, tzinfo=tzinfo(0))
- self.d2 = datetime(2003, 8, 6, tzinfo=tzinfo(0))
- self.d3 = None
-
-class Test(BrowserTestCase):
-
- def setUp(self):
- BrowserTestCase.setUp(self)
- registerEditForm(IDatetimeTest)
- defineSecurity(DatetimeTest, IDatetimeTest)
-
- def getDateForField(self, field, source):
- """Returns a datetime object for the specified field in source.
-
- Returns None if the field value cannot be converted to date.
- """
-
- # look in input element first
- pattern = '<input .* name="field.%s".* value="(.*)".*>' % field
- m = re.search(pattern, source)
- if m is None:
- # look in a select element
- pattern = '<select .* name="field.%s".*>.*' \
- '<option value="(.*)" selected>*.</select>' % field
- m = re.search(pattern, source, re.DOTALL)
- if m is None:
- return None
- return parseDatetimetz(m.group(1))
-
- def test_display_editform(self):
- self.getRootFolder()['test'] = DatetimeTest()
- transaction.commit()
- object = traverse(self.getRootFolder(), 'test')
-
- # display edit view
- response = self.publish('/test/edit.html',
- env={"HTTP_ACCEPT_LANGUAGE": "ru"})
- self.assertEqual(response.getStatus(), 200)
-
- # confirm date values in form with actual values
- self.assertEqual(self.getDateForField('d1', response.getBody()),
- object.d1)
- self.assertEqual(self.getDateForField('d2', response.getBody()),
- object.d2)
- self.assert_(self.getDateForField('d3', response.getBody()) is None)
-
-
- def test_submit_editform(self):
- self.getRootFolder()['test'] = DatetimeTest()
- transaction.commit()
-
- # submit edit view
- response = self.publish('/test/edit.html', form={
- 'UPDATE_SUBMIT' : '',
- 'field.d1' : u'2003-02-01 00:00:00+00:00',
- 'field.d2' : u'2003-02-02 00:00:00+00:00',
- 'field.d3' : u'2003-10-15 00:00:00+00:00' },
- env={"HTTP_ACCEPT_LANGUAGE": "en"})
- self.assertEqual(response.getStatus(), 200)
- self.assert_(updatedMsgExists(response.getBody()))
-
- # check new values in object
- object = traverse(self.getRootFolder(), 'test')
-
- self.assertEqual(object.d1, datetime(2003, 2, 1, tzinfo=tzinfo(0)))
- self.assertEqual(object.d2, datetime(2003, 2, 2, tzinfo=tzinfo(0)))
- self.assertEqual(object.d3, datetime(2003, 10, 15, tzinfo=tzinfo(0)))
-
-
- def test_missing_value(self):
- self.getRootFolder()['test'] = DatetimeTest()
- transaction.commit()
-
- # submit missing values for d2 and d3
- response = self.publish('/test/edit.html', form={
- 'UPDATE_SUBMIT' : '',
- 'field.d2' : '',
- 'field.d3-empty-marker' : '' })
- self.assertEqual(response.getStatus(), 200)
- self.assert_(updatedMsgExists(response.getBody()))
-
- # check new values in object
- object = traverse(self.getRootFolder(), 'test')
- self.assert_(object.d2 is None) # default missing_value for dates
- # 2000-1-1 is missing_value for d3
- self.assertEqual(object.d3, datetime(2000, 1, 1, tzinfo=tzinfo(0)))
-
-
- def test_required_validation(self):
- self.getRootFolder()['test'] = DatetimeTest()
- transaction.commit()
-
- # submit missing values for required field d1
- response = self.publish('/test/edit.html', form={
- 'UPDATE_SUBMIT' : '',
- 'field.d1' : '',
- 'field.d2' : '',
- 'field.d3' : '' })
- self.assertEqual(response.getStatus(), 200)
-
- # confirm error msgs
- self.assert_(missingInputErrorExists('d1', response.getBody()))
- self.assert_(not missingInputErrorExists('d2', response.getBody()))
- self.assert_(not missingInputErrorExists('d3', response.getBody()))
-
-
- def test_invalid_value(self):
- self.getRootFolder()['test'] = DatetimeTest()
- transaction.commit()
-
- # submit a value for d3 that isn't allowed
- response = self.publish('/test/edit.html', form={
- 'UPDATE_SUBMIT' : '',
- 'field.d3' : u'2003-02-01 12:00:00+00:00'})
- self.assertEqual(response.getStatus(), 200)
- self.assert_(invalidValueErrorExists('d3', response.getBody()))
-
-
- def test_min_max_validation(self):
- self.getRootFolder()['test'] = DatetimeTest()
- transaction.commit()
-
- # submit value for d1 that is too low
- response = self.publish('/test/edit.html', form={
- 'UPDATE_SUBMIT' : '',
- 'field.d1' : u'2002-12-31 12:00:00+00:00'},
- env={"HTTP_ACCEPT_LANGUAGE": "en"})
- self.assertEqual(response.getStatus(), 200)
- self.assert_(validationErrorExists('d1', 'Value is too small',
- response.getBody()))
-
- # submit value for i1 that is too high
- response = self.publish('/test/edit.html', form={
- 'UPDATE_SUBMIT' : '',
- 'field.d1' : u'2021-12-01 12:00:00+00:00'},
- env={"HTTP_ACCEPT_LANGUAGE": "en"})
- self.assertEqual(response.getStatus(), 200)
- self.assert_(validationErrorExists('d1', 'Value is too big',
- response.getBody()))
-
-
- def test_omitted_value(self):
- self.getRootFolder()['test'] = DatetimeTest()
- transaction.commit()
-
- # remember default values
- object = traverse(self.getRootFolder(), 'test')
- d1 = object.d1
- d2 = object.d2
- self.assert_(d2 is not None)
- d3 = object.d3
-
- # submit change with only d2 present -- note that required
- # field d1 is omitted, which should not cause a validation error
- response = self.publish('/test/edit.html', form={
- 'UPDATE_SUBMIT' : '',
- 'field.d2' : '' })
- self.assertEqual(response.getStatus(), 200)
- self.assert_(updatedMsgExists(response.getBody()))
-
- # check new value in object
- object = traverse(self.getRootFolder(), 'test')
- self.assertEqual(object.d1, d1)
- self.assert_(object.d2 is None)
- self.assertEqual(object.d3, d3)
-
-
-def test_suite():
- suite = unittest.TestSuite()
- Test.layer = AppFormLayer
- suite.addTest(unittest.makeSuite(Test))
- return suite
-
-if __name__=='__main__':
- unittest.main(defaultTest='test_suite')
More information about the checkins
mailing list