[Zope-Checkins] CVS: Packages/Shared/DC/ZRDB/tests - __init__.py:1.1.2.1 test_sqlvar.py:1.1.2.1

Tres Seaver tseaver at palladion.com
Fri Sep 2 19:02:01 EDT 2005


Update of /cvs-repository/Packages/Shared/DC/ZRDB/tests
In directory cvs.zope.org:/tmp/cvs-serv9678/lib/python/Shared/DC/ZRDB/tests

Added Files:
      Tag: Zope-2_7-branch
	__init__.py test_sqlvar.py 
Log Message:


  - Collector #556:  <dtml-sqlvar> now returns 'null' instead of 'None'
    for values which are None in Python (sponsored by a bounty from
    Logicalware).


=== Added File Packages/Shared/DC/ZRDB/tests/__init__.py ===
""" Empty package
"""


=== Added File Packages/Shared/DC/ZRDB/tests/test_sqlvar.py ===
##############################################################################
#
# Copyright (c) 2005 Zope Corporation and Contributors. All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (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
#
##############################################################################
import unittest

from UserDict import UserDict

def _sql_quote(v):
    return '"%s"' % v

class FauxMultiDict(UserDict):

    def getitem(self, key, call):
        if key == 'sql_quote__':
            return _sql_quote

        v = self[key]
        if v is not None:
            if call and callable(v):
                v = v()
        return v

class SQLVarTests(unittest.TestCase):

    def _getTargetClass(self):
        from Shared.DC.ZRDB.sqlvar import SQLVar
        return SQLVar

    def _makeOne(self, *args, **kw):
        return self._getTargetClass()(*args, **kw)

    def test_constructor_no_type(self):
        from DocumentTemplate.DT_Util import ParseError
        self.assertRaises(ParseError, self._makeOne, 'foo')

    def test_constructor_invalid_type(self):
        from DocumentTemplate.DT_Util import ParseError
        self.assertRaises(ParseError, self._makeOne, 'foo type="nonesuch"')

    def test_constructor_valid_type(self):
        from DocumentTemplate.DT_Util import ParseError
        v = self._makeOne('foo type="string"')
        self.assertEqual(v.__name__, 'foo')
        self.assertEqual(v.expr, 'foo')
        self.assertEqual(v.args['type'], 'string')

    def test_render_name_returns_value(self):
        v = self._makeOne('foo type="string"')
        self.assertEqual(v.render(FauxMultiDict(foo='FOO')), '"FOO"')

    def test_render_name_missing_required_raises_ValueError(self):
        v = self._makeOne('foo type="string"')
        self.assertRaises(ValueError, v.render, FauxMultiDict())

    def test_render_name_missing_optional_returns_null(self):
        v = self._makeOne('foo type="string" optional')
        self.assertEqual(v.render(FauxMultiDict()), 'null')

    def test_render_expr_returns_value(self):
        v = self._makeOne('expr="foo" type="string"')
        self.assertEqual(v.render(FauxMultiDict(foo='FOO')), '"FOO"')

    def test_render_expr_missing_required_raises_NameError(self):
        v = self._makeOne('expr="foo" type="string"')
        self.assertRaises(NameError, v.render, FauxMultiDict())

    def test_render_expr_missing_optional_returns_null(self):
        v = self._makeOne('expr="foo" type="string" optional')
        self.assertEqual(v.render(FauxMultiDict()), 'null')

    def test_render_int_returns_int_without_quoting(self):
        v = self._makeOne('expr="foo" type="int"')
        self.assertEqual(v.render(FauxMultiDict(foo=42)), '42')

    def test_render_int_with_long_returns_value_without_L(self):
        v = self._makeOne('expr="foo" type="int"')
        self.assertEqual(v.render(FauxMultiDict(foo='42L')), '42')

    def test_render_int_required_invalid_raises_ValueError(self):
        v = self._makeOne('expr="foo" type="int"')
        self.assertRaises(ValueError, v.render, FauxMultiDict(foo=''))

    def test_render_int_optional_invalid_returns_null(self):
        v = self._makeOne('expr="foo" type="int" optional')
        self.assertEqual(v.render(FauxMultiDict(foo='')), 'null')

    def test_render_float_returns_float_without_quoting(self):
        v = self._makeOne('expr="foo" type="float"')
        self.assertEqual(v.render(FauxMultiDict(foo=3.1415)), '3.1415')

    def test_render_float_with_long_returns_value_without_L(self):
        v = self._makeOne('expr="foo" type="float"')
        self.assertEqual(v.render(FauxMultiDict(foo='42L')), '42')

    def test_render_float_required_invalid_raises_ValueError(self):
        v = self._makeOne('expr="foo" type="float"')
        self.assertRaises(ValueError, v.render, FauxMultiDict(foo=''))

    def test_render_float_optional_invalid_returns_null(self):
        v = self._makeOne('expr="foo" type="float" optional')
        self.assertEqual(v.render(FauxMultiDict(foo='')), 'null')

    def test_render_nb_required_with_blank_raises_ValueError(self):
        v = self._makeOne('expr="foo" type="nb"')
        self.assertRaises(ValueError, v.render, FauxMultiDict(foo=''))

    def test_render_nb_optional_with_blank_returns_null(self):
        v = self._makeOne('expr="foo" type="nb" optional')
        self.assertEqual(v.render(FauxMultiDict(foo='')), 'null')

    def test_render_name_with_none_returns_null(self):
        # Collector #556, patch from Dieter Maurer
        v = self._makeOne('foo type="string"')
        self.assertEqual(v.render(FauxMultiDict(foo=None)), 'null')

    def test_render_expr_with_none_returns_null(self):
        # Collector #556, patch from Dieter Maurer
        v = self._makeOne('expr="foo" type="string"')
        self.assertEqual(v.render(FauxMultiDict(foo=None)), 'null')

def test_suite():
    suite = unittest.TestSuite()
    suite.addTest(unittest.makeSuite(SQLVarTests))
    return suite

if __name__ == '__main__':
    unittest.main(defaultTest='test_suite')



More information about the Zope-Checkins mailing list