def test_UnIndex(self): """ Setup a catalog deeper within the containment hierarchy and call the updateIndexes method. The indexed objects should should be restricted to the sublocations. """ from zope.catalog.catalog import indexDocSubscriber from zope.catalog.catalog import unindexDocSubscriber from zope.container.contained import ObjectAddedEvent from zope.container.contained import ObjectRemovedEvent ob = Stub() self.subfolder['ob'] = ob id = self.utility.register(ob) setSite(self.subfolder) res = self.cat.searchResults(name='ob') self.assertEqual(len(res), 0) setSite(None) indexDocSubscriber(ObjectAddedEvent(ob)) setSite(self.subfolder) res = self.cat.searchResults(name='ob') self.assertEqual(len(res), 1) setSite(None) unindexDocSubscriber(ObjectRemovedEvent(ob)) setSite(self.subfolder) res = self.cat.searchResults(name='ob') self.assertEqual(len(res), 0)
def test_unindexDocSubscriber(self): from zope.catalog.catalog import unindexDocSubscriber from zope.container.contained import ObjectRemovedEvent from zope.intid.interfaces import IntIdRemovedEvent ob = Stub() ob2 = Stub() ob3 = Stub() self.root['ob'] = ob self.root['ob2'] = ob2 self.root['ob3'] = ob3 id = self.utility.register(ob) unindexDocSubscriber( IntIdRemovedEvent(ob2, ObjectRemovedEvent(ob3))) self.assertEqual(self.cat.unregs, []) self.assertEqual(self.cat.regs, []) unindexDocSubscriber( IntIdRemovedEvent(ob, ObjectRemovedEvent(ob3))) self.assertEqual(self.cat.unregs, [id]) self.assertEqual(self.cat.regs, [])