Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Datastore is a SingletonPlugin, so it doesn't matter if we call plugin.DatastorePlugin() many times: we always end up with the same instance. I've added a workaround that, first, saves and unloads the current datastore instance, then sets: pyutilib.component.core.PluginGlobals.singleton_services()[plugin.DatastorePlugin] = True This will make plugin.DatastorePlugin not be a Singleton anymore, so any subsequent calls to ckan.plugins.load('datastore') will create a new instance. Then, in the next line, we create a new DatastorePlugin instance by loading it, and save it into self.p and pyutilib.component.core.PluginGlobals.singleton_services()[plugin.DatastorePlugin]. This turns DatastorePlugin into a Singleton again, and subsequent calls to ckan.plugins.load('datastore') will return this new instance instead. Then, in the teardown, we unload the current the datastore, which gets rid of our test instance, and put the original datastore back in its place, so the environment before setUp() is the same as after tearDown(). For InvalidUrlsOrPermissionsException, what I wanted was a way to check if _check_urls_and_permissions() failed. I did this by overloading _log_or_raise() with an unique Exception, and checking if it's raised. If so, I guarantee that _log_or_raise() was called. This feels like too much boilerplate, but we don't have a stub/mock library, so we have to write it. Conflicts: ckanext/datastore/tests/test_configure.py
- Loading branch information
1 parent
d3b2375
commit 9a8249a
Showing
1 changed file
with
54 additions
and
50 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters