#! /usr/bin/env python
# -*- coding: iso-8859-1 -*-
#-----------------------------------------------------------------------------
# Modeling Framework: an Object-Relational Bridge for python
#
# Copyright (c) 2001-2004 Sbastien Bigaret <sbigaret@users.sourceforge.net>
# All rights reserved.
#
# This file is part of the Modeling Framework.
#
# This code is distributed under a "3-clause BSD"-style license;
# see the LICENSE file for details.
#-----------------------------------------------------------------------------
"""
Tests for EditingContext
CVS information
$Id: test_EditingContext.py 932 2004-07-20 06:21:57Z sbigaret $
"""
__version__='$Revision: 932 $'[11:-2]
import unittest
if __name__ == "__main__":
import utils, sys
utils.fixpath()
from Modeling import ModelSet,Model
from Modeling.EditingContext import EditingContext
from Modeling.FetchSpecification import FetchSpecification
from Modeling.Qualifier import qualifierWithQualifierFormat
from testPackages.AuthorBooks.Writer import Writer
from testPackages.StoreEmployees.Employee import Employee
ms=ModelSet.defaultModelSet()
Model.updateModelWithCFG(ms.modelNamed('AuthorBooks'), 'Postgresql.cfg')
Model.updateModelWithCFG(ms.modelNamed('StoreEmployees'), 'Postgresql.cfg')
del ms
class TestEditingContext(unittest.TestCase):
"Tests basic functionalities of EditingContext"
def test_01_initialState(self):
"[EditingContext] Tests the initial state"
ec=EditingContext()
self.failIf(ec.insertedObjects(), 'No inserted objects')
self.failIf(ec.updatedObjects(), 'No updated objects')
self.failIf(ec.deletedObjects(), 'No deleted objects')
self.failIf(ec.registeredObjects(), 'No registered objects')
self.failIf(ec.hasChanges(), 'noChanges')
self.failUnless(ec.invalidatesObjectsWhenFinalized(), 'invalidates...')
del ec
def test_01b_dbContexts_rendezvous(self):
"[EditingContext] DatabaseContexts rendez-vous"
ec=EditingContext()
fs=FetchSpecification(entityName='Writer')
dbContext1=ec.rootObjectStore().objectStoreForFetchSpecification(fs)
fs=FetchSpecification(entityName='Employee')
dbContext2=ec.rootObjectStore().objectStoreForFetchSpecification(fs)
# same connection dict --> should be equal
self.failUnless(dbContext1.database()!=dbContext2.database())
def test_02_invalidatesObjectsWhenFinalized(self):
"[EditingContext] invalidatesObjectsWhenFinalized"
import sys
ec=EditingContext()
w=Writer()
#print '1 ',sys.getrefcount(ec)
ec.insertObject(w)
#print '2 ',sys.getrefcount(ec)
w.clearCalled='-'
self.failUnless(w.clearCalled)
del ec
self.failIf(hasattr(w, 'clearCalled'))
def _test_03_objectsWithFetchSpecification(self):
"[EditingContext] objectsWithFetchSpecification"
ec=EditingContext()
fetchSpec=FetchSpecification(entityName='E')
objects=ec.objectsWithFetchSpecification(fetchSpec)
print objects
print objects[0].getE1()
print objects[0].__dict__
def test_04_isaChildOf(self):
"[EditingContext] isaChildOf"
ec=EditingContext()
self.failIf(ec.isaChildOf(ec))
self.failUnless(EditingContext(ec).isaChildOf(ec))
self.failUnless(EditingContext(EditingContext(ec)).isaChildOf(ec))
class TestParentChildEditingContextConfigurations(unittest.TestCase):
def test_01_unimplemented(self):
"[EC/parent/child conf.] unsupported yet"
ec=EditingContext()
self.assertRaises('Unimplemented', EditingContext, ec)
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestEditingContext, "test_"))
suite.addTest(unittest.makeSuite(TestParentChildEditingContextConfigurations, "_test_"))
return suite
if __name__ == "__main__":
errs = utils.run_suite(test_suite())
sys.exit(errs and 1 or 0)
|