Well here's something interesting.  In the simple cases, PackageHub doesn't
try to open a connection until it's actually trying to access the database.
If you have a subclass of a subclass of a SQLObject (in my case it's
SomeClass->Modifiable->SQLObject) some of the metaclass magic behind
SQLObject tries to access that connection when you import the module.

I don't know enough about metaclasses to really help narrow it down more
than that.

I guess I'll try the in-memory sqlite databases and some custom creation,
drop, and connection opening code in my tests.

Thanks,
Jason

On Fri, Nov 04, 2005 at 02:06:31PM -0500, Kevin Dangoor wrote:
> 
> Hi Jason,
> 
> A few comments that may clear things up and make it easier:
> 
> - you can set model.__connection__ to something else, if you need to
> change it for testing purposes
> 
> - PackageHub does not even look up the connection configuration until
> it's needed. It should be possible to close and clear the connection
> as well when doing tests.
> 
> - sqlite is *great* for unit tests because you can create in-memory
> databases. You could use sqlite most of the time and sometimes run
> against your real database engine to verify correct operation.
> 
> 
> I don't remember what all is done by SQLObject's test code, but I was
> guessing that we'd be able to use that code. There's no reason that
> tests really need to use the PackageHub for their connections.
> 
> Foreign key constraints are always a pain when dropping a database. I
> don't know if anyone's written code for SQLObject to make this more
> convenient.
> 
> Kevin
> 
> On 11/4/05, Jason Chu <[EMAIL PROTECTED]> wrote:
> > So far my application isn't at a stage to do functional or even unit tests
> > of the controllers, but I do have a bunch of model objects and a little bit
> > of logic around them.
> >
> > I read the little testing doc and it says that there is no support for
> > testing model objects.  I'm now trying to figure out what would be needed.
> >
> > The way I've done SQLObject testing before was starting with a fresh
> > database each test and only creating the data that I needed for that
> > specific test.  It's slow, I know, but it's precise.
> >
> > The problem, in the case of TurboGears, is the PackageHub.  All my objects
> > are created with PackageHub or AutoConnectionHub connections and I'd have
> > to change the connection for the different SQLObject classes any time I
> > wanted to use them.  Will I essentially be reimplementing
> > sqlobject.tests.setupClass and sqlobject.tests.InstalledTestDatabase to be
> > able to test my SQLObject classes through testgears?
> >
> > Would I want to get around the PackageHub entirely or just run
> > turbogears.database.set_db_uri before importing any model objects?  I'd
> > still have to worry about creating the tables before the tests, but I'm
> > pretty sure I can get all that from the InstalledTestDatabase class.
> >
> > One more quick question: is there an easy way to clear all tables without
> > running amuck of foreign key constraints?
> >
> > Jason
> >
> > --
> > If you understand, things are just as they are.  If you do not understand,
> > things are just as they are.
> >
> >
> >
> 
> 
> --
> Kevin Dangoor
> Author of the Zesty News RSS newsreader
> 
> email: [EMAIL PROTECTED]
> company: http://www.BlazingThings.com
> blog: http://www.BlueSkyOnMars.com
> 

-- 
If you understand, things are just as they are.  If you do not understand,
things are just as they are.

Attachment: pgpjEkqcSqHo2.pgp
Description: PGP signature

Reply via email to