def test_pop_success(self): from substanced.interfaces import IObjectEvent from substanced.interfaces import IObjectRemoved from substanced.interfaces import IObjectWillBeRemoved dummy = DummyModel() dummy.__parent__ = None dummy.__name__ = None events = [] def listener(event, obj, container): events.append(event) self._registerEventListener(listener, IObjectEvent) folder = self._makeOne({"a": dummy}) result = folder.pop("a") self.assertEqual(result, dummy) self.assertEqual(folder._num_objects(), 0) self.assertEqual(len(events), 2) self.assertTrue(IObjectWillBeRemoved.providedBy(events[0])) self.assertTrue(IObjectRemoved.providedBy(events[1])) self.assertEqual(events[0].object, dummy) self.assertEqual(events[0].parent, folder) self.assertEqual(events[0].name, "a") self.assertEqual(events[1].object, dummy) self.assertEqual(events[1].parent, folder) self.assertEqual(events[1].name, "a") self.assertFalse(hasattr(dummy, "__parent__")) self.assertFalse(hasattr(dummy, "__name__"))
def content_added_or_removed(event): """ Generates ContentAdded and ContentRemoved audit events """ if IObjectWillBeRemoved.providedBy(event): event_name = 'ContentRemoved' elif IObjectAdded.providedBy(event): event_name = 'ContentAdded' else: return False # for testing userinfo = get_userinfo() eventscribe = AuditScribe(event.object) parent = event.parent # this is an event related to the *container*, not to the object. folder_oid = get_oid(parent, None) object_oid = get_oid(event.object, None) folder_path = resource_path(parent) object_name = event.name moving = bool(event.moving) loading = bool(event.loading) content_type = str(event.registry.content.typeof(event.object)) eventscribe.add( event_name, folder_oid, object_oid=object_oid, folder_oid=folder_oid, folder_path=folder_path, object_name=object_name, content_type=content_type, userinfo=userinfo, moving=moving, loading=loading, )
def test_remove_moving(self): from substanced.interfaces import IObjectEvent from substanced.interfaces import IObjectRemoved from substanced.interfaces import IObjectWillBeRemoved events = [] def listener(event, obj, container): events.append(event) # pragma NO COVER self._registerEventListener(listener, IObjectEvent) dummy = DummyModel() dummy.__parent__ = None dummy.__name__ = None folder = self._makeOne({"a": dummy}) self.assertEqual(folder._num_objects(), 1) folder.remove("a", moving=True) self.assertEqual(folder._num_objects(), 0) self.assertFalse(hasattr(dummy, "__parent__")) self.assertFalse(hasattr(dummy, "__name__")) self.assertEqual(len(events), 2) self.assertTrue(IObjectWillBeRemoved.providedBy(events[0])) self.assertTrue(IObjectRemoved.providedBy(events[1])) self.assertEqual(events[0].object, dummy) self.assertEqual(events[0].parent, folder) self.assertEqual(events[0].name, "a") self.assertTrue(events[0].moving) self.assertEqual(events[1].object, dummy) self.assertEqual(events[1].parent, folder) self.assertEqual(events[1].name, "a") self.assertTrue(events[1].moving)
def test_pop_success(self): from substanced.interfaces import IObjectEvent from substanced.interfaces import IObjectRemoved from substanced.interfaces import IObjectWillBeRemoved dummy = DummyModel() dummy.__parent__ = None dummy.__name__ = None events = [] def listener(event, obj, container): events.append(event) self._registerEventListener(listener, IObjectEvent) folder = self._makeOne({'a': dummy}) result = folder.pop('a') self.assertEqual(result, dummy) self.assertEqual(folder._num_objects(), 0) self.assertEqual(len(events), 2) self.assertTrue(IObjectWillBeRemoved.providedBy(events[0])) self.assertTrue(IObjectRemoved.providedBy(events[1])) self.assertEqual(events[0].object, dummy) self.assertEqual(events[0].parent, folder) self.assertEqual(events[0].name, 'a') self.assertEqual(events[1].object, dummy) self.assertEqual(events[1].parent, folder) self.assertEqual(events[1].name, 'a') self.assertFalse(hasattr(dummy, '__parent__')) self.assertFalse(hasattr(dummy, '__name__'))
def test_remove_moving(self): from substanced.interfaces import IObjectEvent from substanced.interfaces import IObjectRemoved from substanced.interfaces import IObjectWillBeRemoved events = [] def listener(event, obj, container): events.append(event) #pragma NO COVER self._registerEventListener(listener, IObjectEvent) dummy = DummyModel() dummy.__parent__ = None dummy.__name__ = None folder = self._makeOne({'a': dummy}) self.assertEqual(folder._num_objects(), 1) folder.remove('a', moving=True) self.assertEqual(folder._num_objects(), 0) self.assertFalse(hasattr(dummy, '__parent__')) self.assertFalse(hasattr(dummy, '__name__')) self.assertEqual(len(events), 2) self.assertTrue(IObjectWillBeRemoved.providedBy(events[0])) self.assertTrue(IObjectRemoved.providedBy(events[1])) self.assertEqual(events[0].object, dummy) self.assertEqual(events[0].parent, folder) self.assertEqual(events[0].name, 'a') self.assertTrue(events[0].moving) self.assertEqual(events[1].object, dummy) self.assertEqual(events[1].parent, folder) self.assertEqual(events[1].name, 'a') self.assertTrue(events[1].moving)
def test___delitem__(self): from substanced.interfaces import IObjectEvent from substanced.interfaces import IObjectRemoved from substanced.interfaces import IObjectWillBeRemoved events = [] def listener(event, obj, container): events.append(event) self._registerEventListener(listener, IObjectEvent) dummy = DummyModel() dummy.__parent__ = None dummy.__name__ = None folder = self._makeOne({'a': dummy}) self.assertEqual(folder._num_objects(), 1) del folder['a'] self.assertEqual(folder._num_objects(), 0) self.assertEqual(len(events), 2) self.assertTrue(IObjectWillBeRemoved.providedBy(events[0])) self.assertTrue(IObjectRemoved.providedBy(events[1])) self.assertEqual(events[0].object, dummy) self.assertEqual(events[0].parent, folder) self.assertEqual(events[0].name, 'a') self.assertEqual(events[1].object, dummy) self.assertEqual(events[1].parent, folder) self.assertEqual(events[1].name, 'a') self.assertFalse(hasattr(dummy, '__parent__')) self.assertFalse(hasattr(dummy, '__name__'))