def test_default_impl_readonly(self): alsoProvides(self.folder, IStorageEnabled) sf = IStorageFactory(self.folder) sf.backend = u'dummy_a' self.assertEqual(sf.backend, u'dummy_a') with self.assertRaises(ValueError) as cm: sf.backend = u'dummy_b' self.assertEqual(cm.exception.args, ('backend', 'field is readonly'))
def install_storage(obj, event): """ The event handler for installing and associating a storage to an ``IStorageEnabled`` object. """ factory = IStorageFactory(obj) try: factory.get_storage_backend() except ComponentLookupError as e: iface, name = e.args logger.warning( 'Could not find storage backend "%s" while creating a "%s", ' 'skipping backend instantiation.', name, obj.portal_type) else: # the specific backend instance may do further component lookups # and fail, which this doesn't and shouldn't care about. factory.install_storage()
def test_storage_lifecycle(self): # have to mark the object manually with IStorageEnabled. # Normally dexterity behavior will provide this. alsoProvides(self.portal, IStorageEnabled) installer = getUtility(IStorageInstaller) installer(self.portal, 'dummy_backend') self.assertEqual(DummyStorageData._data.keys(), ['plone']) sf = IStorageFactory(self.portal) self.assertEqual(sf.backend, u'dummy_backend') storage_backend = getUtility(IStorageBackend, name=u'dummy_backend') storage = storage_backend.acquire(self.portal) self.assertTrue(isinstance(storage, DummyStorage)) storage = IStorage(self.portal) self.assertTrue(isinstance(storage, DummyStorage))
def test_default_impl_no_backend(self): alsoProvides(self.folder, IStorageEnabled) sf = IStorageFactory(self.folder) with self.assertRaises(ConstraintNotSatisfied): sf.backend = u'test'
def test_not_enabled_fail(self): with self.assertRaises(TypeError): IStorageFactory(self.folder)