Example #1
0
    def setUp(self):
        # SchoolTool needs to bootstrap the database first, before the Zope 3
        # IDatabaseOpenedEvent gets a chance to create its own root folder and
        # stuff.  Unfortunatelly, we cannot install a IDatabaseOpenedEvent
        # subscriber via ftesting.zcml and ensure it will get called first.
        # Instead we place our own subscriber directly into zope.event.subscribers,
        # where it gets a chance to intercept IDatabaseOpenedEvent before the
        # Zope 3 event dispatcher sees it.

        def install_db_bootstrap_hook():
            """Install schooltool_db_setup into zope.event.subscribers."""
            zope.event.subscribers.insert(0, schooltool_db_setup)

        def uninstall_db_bootstrap_hook():
            """Remove schooltool_db_setup from zope.event.subscribers."""
            zope.event.subscribers.remove(schooltool_db_setup)

        def schooltool_db_setup(event):
            """IDatabaseOpenedEvent handler that bootstraps SchoolTool."""
            if IDatabaseOpenedEvent.providedBy(event):
                import schooltool.app.main
                server = schooltool.app.main.SchoolToolServer()
                server.initializePreferences = lambda app: None
                server.bootstrapSchoolTool(event.database)
                server.startApplication(event.database)

        install_db_bootstrap_hook()
        try:
            _ZCMLLayer.setUp(self)
        finally:
            uninstall_db_bootstrap_hook()
Example #2
0
 def setUp(self):
     """ Prevent zope.sendmail to start its thread during tests, or this will
     confuse the coverage analyzer"""
     from zope.sendmail import zcml
     zcml.queuedDelivery = lambda *args, **kwargs :None
     ZCMLLayer.setUp(self)
Example #3
0
 def setUp(self):
     _ZCMLLayer.setUp(self)
     for name, utility in getUtilitiesFor(IDatabase):
         utility.setMappers()