def test_removeIntIdSubscriber(self): from zope.app.intid import removeIntIdSubscriber from zope.app.container.contained import ObjectRemovedEvent from zope.app.intid.interfaces import IIntIdRemovedEvent parent_folder = self.root['folder1']['folder1_1'] folder = self.root['folder1']['folder1_1']['folder1_1_1'] id = self.utility.register(folder) id1 = self.utility1.register(folder) self.assertEquals(self.utility.getObject(id), folder) self.assertEquals(self.utility1.getObject(id1), folder) setSite(self.folder1_1) events = [] ztapi.subscribe([IIntIdRemovedEvent], None, events.append) # This should unregister the object in all utilities, not just the # nearest one. removeIntIdSubscriber(folder, ObjectRemovedEvent(parent_folder)) self.assertRaises(KeyError, self.utility.getObject, id) self.assertRaises(KeyError, self.utility1.getObject, id1) self.assertEquals(len(events), 1) self.assertEquals(events[0].object, folder) self.assertEquals(events[0].original_event.object, parent_folder)
def testSiteEvents(self): from zope.app.publication.interfaces import IBeforeTraverseEvent from zope.app.publication.interfaces import IEndRequestEvent set = [] clear = [] ztapi.subscribe([IBeforeTraverseEvent], None, set.append) ztapi.subscribe([IEndRequestEvent], None, clear.append) ob = object() # This should fire the BeforeTraverseEvent self.publication.callTraversalHooks(self.request, ob) self.assertEqual(len(set), 1) self.assertEqual(len(clear), 0) self.assertEqual(set[0].object, ob) ob2 = object() # This should fire the EndRequestEvent self.publication.endRequest(self.request, ob2) self.assertEqual(len(set), 1) self.assertEqual(len(clear), 1) self.assertEqual(clear[0].object, ob2)
def register(self): """Start counting queries. Be sure to call unregister when finished with the collector. After each web request the count and queries attributes are updated. """ ztapi.subscribe((IEndRequestEvent, ), None, self) self._active = True
def testNotify(self): events = [] def record(*args): events.append(args) ztapi.subscribe([IContained, IObjectRemovedEvent], None, record) item = Contained() event = ObjectRemovedEvent(item) objectevent.objectEventNotify(event) self.assertEqual([(item, event)], events)
def coreSetUp( test=None ): placelesssetup.setUp() ########################### # order workflow ztapi.provideAdapter( IOrder, interfaces.IWorkflowState, oworkflow.FinanceState, 'order.finance') ztapi.provideAdapter( IOrder, interfaces.IWorkflowState, oworkflow.FulfillmentState, 'order.fulfillment') ztapi.provideAdapter( IOrder, interfaces.IWorkflowInfo, oworkflow.FinanceInfo, 'order.finance') ztapi.provideAdapter( IOrder, interfaces.IWorkflowInfo, oworkflow.FulfillmentInfo, 'order.fulfillment') ztapi.provideAdapter(annotation_interfaces.IAttributeAnnotatable, annotation_interfaces.IAnnotations, attribute.AttributeAnnotations) ztapi.provideUtility(interfaces.IWorkflow, oworkflow.FulfillmentWorkflow(), 'order.fulfillment') ztapi.provideUtility(interfaces.IWorkflow, oworkflow.FinanceWorkflow(), 'order.finance') ztapi.provideUtility(interfaces.IWorkflowVersions, store.StoreVersions()) ztapi.provideUtility( IOrderManager, order.OrderManager() ) ztapi.provideAdapter( IOrder, IOrderWorkflowLog, order.OrderWorkflowLog ) ztapi.subscribe( (IOrder, interfaces.IWorkflowTransitionEvent), None, order.recordOrderWorkflow )
def testVeto(self): ztapi.subscribe([IObjectEvent], None, objectevent.objectEventNotify) container = SampleContainer() item = Contained() # This will fire an event. container['Fred'] = item class Veto(Exception): pass def callback(item, event): self.callbackTriggered = True self.assertEqual(item, event.object) raise Veto ztapi.subscribe([IContained, IObjectRemovedEvent], None, callback) # del container['Fred'] will fire an ObjectRemovedEvent event. self.assertRaises(Veto, container.__delitem__, 'Fred')
def test_addIntIdSubscriber(self): from zope.app.intid import addIntIdSubscriber from zope.app.container.contained import ObjectAddedEvent from zope.app.intid.interfaces import IIntIdAddedEvent parent_folder = self.root['folder1']['folder1_1'] folder = self.root['folder1']['folder1_1']['folder1_1_1'] setSite(self.folder1_1) events = [] ztapi.subscribe([IIntIdAddedEvent], None, events.append) # This should register the object in all utilities, not just the # nearest one. addIntIdSubscriber(folder, ObjectAddedEvent(parent_folder)) # Check that the folder got registered id = self.utility.getId(folder) id1 = self.utility1.getId(folder) self.assertEquals(len(events), 1) self.assertEquals(events[0].original_event.object, parent_folder) self.assertEquals(events[0].object, folder)
def setUp(self): clearEvents() ztapi.subscribe([None], None, events.append) ztapi.subscribe([IObjectEvent], None, objectEventNotify)
def __init__(self, object_type, event_type, callback): self.object_type = object_type self.event_type = event_type self.callback = callback self._active = True ztapi.subscribe((object_type, event_type), None, self)
def setUpRegistered(): ztapi.subscribe((IComponentRegistration, IRegistrationEvent), None, componentRegistrationEventNotify)