[Zope3-checkins] CVS: Zope3/src/zope/products/sqlexpr/tests - __init__.py:1.1 test_sqlexpr.py:1.1

Philipp von Weitershausen philikon at philikon.de
Wed Feb 11 12:43:30 EST 2004


Update of /cvs-repository/Zope3/src/zope/products/sqlexpr/tests
In directory cvs.zope.org:/tmp/cvs-serv6230/tests

Added Files:
	__init__.py test_sqlexpr.py 
Log Message:
Moved the 'sqlexpr' product from zopeproducts to zope.products. It's
small, self-contained, has tests, and Stephan volunteered for maintainer.
It'll also be a good battery to include for scripters.


=== Added File Zope3/src/zope/products/sqlexpr/tests/__init__.py ===


=== Added File Zope3/src/zope/products/sqlexpr/tests/test_sqlexpr.py ===
##############################################################################
#
# 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.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.
#
##############################################################################
"""SQL Expression Type Tests

$Id: test_sqlexpr.py,v 1.1 2004/02/11 17:43:30 philikon Exp $
"""

import unittest

from zope.interface import implements
from zope.component.interfaces import IFactory
from zope.component.tests.placelesssetup import PlacelessSetup
from zope.component.factory import provideFactory
from zope.tales.tests.test_expressions import Data
from zope.tales.engine import Engine

from zope.app.rdb.tests.stubs import ConnectionStub
from zope.products.sqlexpr.sqlexpr import SQLExpr, NoConnectionSpecified

__metaclass__ = type

class ConnectionStub:

    def __init__(self):
        self._called={}

    def cursor(self):
        return CursorStub()

    def answer(self):
        return 42

    def commit(self, *ignored):
        v = self._called.setdefault('commit',0)
        v+=1
        self._called['commit']=v

    def rollback(self, *ignored):
        v = self._called.setdefault('rollback',0)
        v+=1
        self._called['rollback']=v

class CursorStub:

    description = (('id', 0, 0, 0, 0, 0, 0),
                   ('name', 0, 0, 0, 0, 0, 0),
                   ('email', 0, 0, 0, 0, 0, 0))


    def fetchall(self, *args, **kw):
        return ((1, 'Stephan', 'srichter'),
               (2, 'Foo Bar', 'foobar'))

    def execute(self, operation, *args, **kw):
        assert operation == 'SELECT num FROM hitchhike'


class TypeInfoStub:
    paramstyle = 'pyformat'
    threadsafety = 0
    def getConverter(self, type):
        return lambda x: x


class FactoryStub:
    implements(IFactory)

    def __call__(self, *args, **kw):
        return ConnectionStub

    def getInterfaces(self):
        return TrueConnectionStub.__implements__


class SQLExprTest(PlacelessSetup, unittest.TestCase):

    def setUp(self):
        PlacelessSetup.setUp(self)
        self.context = Data(vars = {'rdb': 'rdb_conn',
                                    'dsn': 'dbi://test'})
        self.engine = Engine
        provideFactory('rdb_conn', FactoryStub())

    def test_exprUsingRDBAndDSN(self):
        expr = SQLExpr('name', 'SELECT num FROM hitchhike', self.engine)
        result = expr(self.context)
        self.assertEqual(1, result[0].id)
        self.assertEqual('Stephan', result[0].name)
        self.assertEqual('srichter', result[0].email)
        self.assertEqual('Foo Bar', result[1].name)

    def test_noRDBSpecs(self):
        expr = SQLExpr('name', 'SELECT num FROM hitchhike', self.engine)
        self.assertRaises(NoConnectionSpecified, expr, Data(vars={}))

def test_suite():
    return unittest.TestSuite((
        unittest.makeSuite(SQLExprTest),
                        ))

if __name__ == '__main__':
    unittest.TextTestRunner().run(test_suite())




More information about the Zope3-Checkins mailing list