Ability to swap app configuration for different unit tests
|Reported by:||Christopher Allan Webber||Owned by:||Christopher Allan Webber|
Description (last modified by )
We need the ability to load different app configurations for different types of tests.
This sounds easier than it is; technically we should be able to just have the function in mediagoblin.tests.tools that loads the mediagoblin app (
get_app) just use a different configuration that we specify. However, it isn't that easy for SQLAlchemy reasons. We currently use the "cascading delete" feature in SQLAlchemy... however, if we load one "application" that has the video media type enabled, then that imports and sees the
VideoData table. If we create another mediagoblin app instance without the video media type enabled, sqlalchemy will try to delete related entries during a cascading delete from the videodata table but won't be able to and will thus throw an exception.
There's one of two solutions to this:
- Figure out how to fiddle with sqlalchemy's metadata information to add/remove the link manually.
- Don't use sqlalchemy's built in cascading delete and roll our own instead. We could have models register themselves on a method's delete registry so that when deleted in our "manual cascading" pattern it'll be smart about it.
I'd like this fixed soon so we can start writing proper tests for plugins.