diff --git a/magnolia-core/src/test/java/info/magnolia/observation/WorkspaceEventListenerRegistrationTest.java b/magnolia-core/src/test/java/info/magnolia/observation/WorkspaceEventListenerRegistrationTest.java index 780c1ed005..be917874fb 100644 --- a/magnolia-core/src/test/java/info/magnolia/observation/WorkspaceEventListenerRegistrationTest.java +++ b/magnolia-core/src/test/java/info/magnolia/observation/WorkspaceEventListenerRegistrationTest.java @@ -43,6 +43,7 @@ import info.magnolia.cms.util.FilteredEventListener; import info.magnolia.context.MgnlContext; import info.magnolia.jcr.RuntimeRepositoryException; import info.magnolia.jcr.util.NodeTypes; +import info.magnolia.jcr.util.NodeUtil; import info.magnolia.jcr.wrapper.DelegateSessionWrapper; import info.magnolia.repository.RepositoryConstants; import info.magnolia.test.RepositoryTestCase; @@ -199,6 +200,42 @@ public class WorkspaceEventListenerRegistrationTest extends RepositoryTestCase { } @Test + public void listenToDeletionOfRegisteredPathItself() throws Exception { + // GIVEN + NodeUtil.createPath(session.getRootNode(), "/foo/bar/baz", NodeTypes.ContentNode.NAME, true); + final WorkspaceEventListenerRegistration.Handle handle = WorkspaceEventListenerRegistration.observe(WEBSITE, "/foo/bar/baz", listener).register(); + + // WHEN + session.getNode("/foo/bar/baz").remove(); + session.save(); + + // THEN + verify(callback, timeout(TIMEOUT)).processEvent(Event.NODE_REMOVED, "/foo/bar/baz"); + verifyNoMoreInteractions(callback); + + // cleanup + handle.unregister(); + } + + @Test + public void listenToDeletionOfSubPath() throws Exception { + // GIVEN + NodeUtil.createPath(session.getRootNode(), "/foo/bar/baz/quz", NodeTypes.ContentNode.NAME, true); + final WorkspaceEventListenerRegistration.Handle handle = WorkspaceEventListenerRegistration.observe(WEBSITE, "/foo/bar/baz", listener).register(); + + // WHEN + session.getNode("/foo/bar/baz/quz").remove(); + session.save(); + + // THEN + verify(callback, timeout(TIMEOUT)).processEvent(Event.NODE_REMOVED, "/foo/bar/baz/quz"); + verifyNoMoreInteractions(callback); + + // cleanup + handle.unregister(); + } + + @Test public void ignoreChangesOutsideObservedPath() throws Exception { // GIVEN WorkspaceEventListenerRegistration.Handle handle = WorkspaceEventListenerRegistration.observe(WEBSITE, "/a", listener).register();