summaryrefslogtreecommitdiffstats
path: root/server/tests/src
diff options
context:
space:
mode:
authorJonatan Kronqvist <jonatan@vaadin.com>2014-02-06 17:30:40 +0200
committerJonatan Kronqvist <jonatan@vaadin.com>2014-02-06 17:30:41 +0200
commitdc7c1763bb111da6b6964379fbc0ccbe1ab5c8d0 (patch)
treeb4545bfe09c81edf5f3dc77a7fbdbdb96bebb719 /server/tests/src
parent927c497e78e8907c3d62ed4bacbd4b4bcfe1a580 (diff)
parent1ac492e46b70de9314083492bd8e136e1c8398e3 (diff)
downloadvaadin-framework-dc7c1763bb111da6b6964379fbc0ccbe1ab5c8d0.tar.gz
vaadin-framework-dc7c1763bb111da6b6964379fbc0ccbe1ab5c8d0.zip
Merge changes from origin/7.1
5b2ddc1 Make test work reliably by activating @Push 10ca7ed Catch and log exceptions in session lifecycle listeners (#12915) 8abf434 Move working sass tests from sasslangbroken to sasslang. 1ac492e Move a sass test that no longer fails. Change-Id: I960e80fd2120c20bc7b042eccbadb1e748ec0f00
Diffstat (limited to 'server/tests/src')
-rw-r--r--server/tests/src/com/vaadin/tests/event/EventRouterTest.java111
1 files changed, 111 insertions, 0 deletions
diff --git a/server/tests/src/com/vaadin/tests/event/EventRouterTest.java b/server/tests/src/com/vaadin/tests/event/EventRouterTest.java
new file mode 100644
index 0000000000..dbbeaf778e
--- /dev/null
+++ b/server/tests/src/com/vaadin/tests/event/EventRouterTest.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2000-2013 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.tests.event;
+
+import java.lang.reflect.Method;
+
+import org.easymock.EasyMock;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.vaadin.event.EventRouter;
+import com.vaadin.server.ErrorEvent;
+import com.vaadin.server.ErrorHandler;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.Component.Listener;
+import com.vaadin.util.ReflectTools;
+
+/**
+ * Test EventRouter and related error handling.
+ */
+public class EventRouterTest {
+
+ private static final Method COMPONENT_EVENT_METHOD = ReflectTools
+ .findMethod(Component.Listener.class, "componentEvent",
+ Component.Event.class);
+
+ private EventRouter router;
+ private Component component;
+ private ErrorHandler errorHandler;
+ private Listener listener;
+
+ @Before
+ public void createMocks() {
+ router = new EventRouter();
+ component = EasyMock.createNiceMock(Component.class);
+ errorHandler = EasyMock.createMock(ErrorHandler.class);
+ listener = EasyMock.createMock(Component.Listener.class);
+ router.addListener(Component.Event.class, listener,
+ COMPONENT_EVENT_METHOD);
+ }
+
+ @Test
+ public void fireEvent_noException_eventReceived() {
+ listener.componentEvent(EasyMock.<Component.Event> anyObject());
+
+ EasyMock.replay(component, listener, errorHandler);
+ router.fireEvent(new Component.Event(component), errorHandler);
+ EasyMock.verify(listener, errorHandler);
+ }
+
+ @Test
+ public void fireEvent_exceptionFromListenerAndNoHandler_exceptionPropagated() {
+ listener.componentEvent(EasyMock.<Component.Event> anyObject());
+ EasyMock.expectLastCall().andThrow(
+ new RuntimeException("listener failed"));
+
+ EasyMock.replay(component, listener);
+ try {
+ router.fireEvent(new Component.Event(component));
+ Assert.fail("Did not receive expected exception from listener");
+ } catch (RuntimeException e) {
+ // e is a ListenerMethod@MethodException
+ Assert.assertEquals("listener failed", e.getCause().getMessage());
+ }
+ EasyMock.verify(listener);
+ }
+
+ @Test
+ public void fireEvent_exceptionFromListener_errorHandlerCalled() {
+ listener.componentEvent(EasyMock.<Component.Event> anyObject());
+ EasyMock.expectLastCall().andThrow(
+ new RuntimeException("listener failed"));
+ errorHandler.error(EasyMock.<ErrorEvent> anyObject());
+
+ EasyMock.replay(component, listener, errorHandler);
+ router.fireEvent(new Component.Event(component), errorHandler);
+ EasyMock.verify(listener, errorHandler);
+ }
+
+ @Test
+ public void fireEvent_multipleListenersAndException_errorHandlerCalled() {
+ Listener listener2 = EasyMock.createMock(Component.Listener.class);
+ router.addListener(Component.Event.class, listener2,
+ COMPONENT_EVENT_METHOD);
+
+ listener.componentEvent(EasyMock.<Component.Event> anyObject());
+ EasyMock.expectLastCall().andThrow(
+ new RuntimeException("listener failed"));
+ errorHandler.error(EasyMock.<ErrorEvent> anyObject());
+ // second listener should be called despite an error in the first
+ listener2.componentEvent(EasyMock.<Component.Event> anyObject());
+
+ EasyMock.replay(component, listener, listener2, errorHandler);
+ router.fireEvent(new Component.Event(component), errorHandler);
+ EasyMock.verify(listener, listener2, errorHandler);
+ }
+}