WICKET-5452 Make Wicket-Atmosphere testable - AtmosphereTester Rename WicketAtmosphereTester to AtmosphereTester
Start the page after configuring AtmosphereTester/TesterEventBus so the method collector is called for all components in the page Expose TesterBroadcasterFactory as BroadcasterFactory#getDefault() (cherry picked from commit e841383c045f62d5feb87413f1aa6f694df8dcb7) Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/1037c696 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/1037c696 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/1037c696 Branch: refs/heads/master Commit: 1037c696287b99974a6d6d2fdbd479f5e21ef7f3 Parents: 7c97a1d Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Wed Aug 13 10:32:46 2014 +0200 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Fri Aug 15 10:11:23 2014 +0200 ---------------------------------------------------------------------- .../atmosphere/tester/AtmosphereTester.java | 77 ++++++++++++++++++++ .../atmosphere/tester/TesterEventBus.java | 13 +--- .../tester/WicketAtmosphereTester.java | 76 ------------------- .../wicket/atmosphere/AtmosphereTest.java | 8 +- 4 files changed, 84 insertions(+), 90 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/1037c696/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/AtmosphereTester.java ---------------------------------------------------------------------- diff --git a/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/AtmosphereTester.java b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/AtmosphereTester.java new file mode 100644 index 0000000..87b3d69 --- /dev/null +++ b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/AtmosphereTester.java @@ -0,0 +1,77 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.wicket.atmosphere.tester; + +import org.apache.wicket.Page; +import org.apache.wicket.atmosphere.AtmosphereBehavior; +import org.apache.wicket.protocol.http.WebApplication; +import org.apache.wicket.util.tester.WicketTester; +import org.atmosphere.cpr.AtmosphereRequest; +import org.atmosphere.cpr.AtmosphereResource; +import org.atmosphere.cpr.AtmosphereResourceImpl; +import org.atmosphere.cpr.AtmosphereResponse; +import org.atmosphere.handler.AtmosphereHandlerAdapter; +import org.atmosphere.util.SimpleBroadcaster; + +/** + * + */ +public class AtmosphereTester +{ + private final TesterEventBus eventBus; + + public AtmosphereTester(final WicketTester wicketTester, Page page) + { + WebApplication application = wicketTester.getApplication(); + this.eventBus = new TesterEventBus(application); + + AtmosphereBehavior atmosphereBehavior = new AtmosphereBehavior() + { + @Override + public void onRequest() + { + SimpleBroadcaster broadcaster = eventBus.getBroadcaster(); + + AtmosphereResource atmosphereResource = new AtmosphereResourceImpl(); + AtmosphereRequest atmosphereRequest = AtmosphereRequest.wrap(wicketTester.getRequest()); + AtmosphereResponse atmosphereResponse = AtmosphereResponse.wrap(wicketTester.getResponse()); + TesterAsyncSupport asyncSupport = new TesterAsyncSupport(); + atmosphereResource.initialize(eventBus.config, broadcaster, atmosphereRequest, atmosphereResponse, + asyncSupport, new AtmosphereHandlerAdapter()); + + atmosphereResource.setBroadcaster(broadcaster); + broadcaster.addAtmosphereResource(atmosphereResource); + + String uuid = atmosphereResource.uuid(); + Page page = getComponent().getPage(); + + page.setMetaData(ATMOSPHERE_UUID, uuid); + eventBus.registerPage(uuid, page); + } + }; + page.add(atmosphereBehavior); + + wicketTester.startPage(page); + wicketTester.executeBehavior(atmosphereBehavior); + } + + public AtmosphereTester post(Object payload) + { + eventBus.post(payload); + return this; + } +} http://git-wip-us.apache.org/repos/asf/wicket/blob/1037c696/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterEventBus.java ---------------------------------------------------------------------- diff --git a/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterEventBus.java b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterEventBus.java index 8f30a37..8a94f04 100644 --- a/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterEventBus.java +++ b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterEventBus.java @@ -32,7 +32,6 @@ public class TesterEventBus extends EventBus { AtmosphereFramework framework = new AtmosphereFramework(); AtmosphereConfig config = new AtmosphereConfig(framework); - IComponentOnBeforeRenderListener eventSubscriptionCollector; public TesterEventBus(WebApplication application) { @@ -40,14 +39,7 @@ public class TesterEventBus extends EventBus framework.setBroadcasterFactory(new TesterBroadcasterFactory(config)); - getBroadcaster().initialize("wicket-atmopshere-tester", config); - } - - @Override - protected IComponentOnBeforeRenderListener createEventSubscriptionCollector() - { - eventSubscriptionCollector = super.createEventSubscriptionCollector(); - return eventSubscriptionCollector; + getBroadcaster().initialize("wicket-atmosphere-tester", config); } @Override @@ -61,6 +53,9 @@ public class TesterEventBus extends EventBus protected TesterBroadcasterFactory(AtmosphereConfig c) { super(SimpleBroadcaster.class, BroadcasterLifeCyclePolicy.ATMOSPHERE_RESOURCE_POLICY.NEVER.name(), c); + + // expose myself as BroadcasterFactory.getDefault(); + factory = this; } } } http://git-wip-us.apache.org/repos/asf/wicket/blob/1037c696/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/WicketAtmosphereTester.java ---------------------------------------------------------------------- diff --git a/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/WicketAtmosphereTester.java b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/WicketAtmosphereTester.java deleted file mode 100644 index 9ae8ad6..0000000 --- a/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/WicketAtmosphereTester.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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 org.apache.wicket.atmosphere.tester; - -import org.apache.wicket.Page; -import org.apache.wicket.atmosphere.AtmosphereBehavior; -import org.apache.wicket.protocol.http.WebApplication; -import org.apache.wicket.util.tester.WicketTester; -import org.atmosphere.cpr.AtmosphereRequest; -import org.atmosphere.cpr.AtmosphereResource; -import org.atmosphere.cpr.AtmosphereResourceImpl; -import org.atmosphere.cpr.AtmosphereResponse; -import org.atmosphere.handler.AtmosphereHandlerAdapter; -import org.atmosphere.util.SimpleBroadcaster; - -/** - * - */ -public class WicketAtmosphereTester -{ - private final TesterEventBus eventBus; - - public WicketAtmosphereTester(final WicketTester wicketTester, Page page) - { - WebApplication application = wicketTester.getApplication(); - this.eventBus = new TesterEventBus(application); - - AtmosphereBehavior atmosphereBehavior = new AtmosphereBehavior() - { - @Override - public void onRequest() - { - SimpleBroadcaster broadcaster = eventBus.getBroadcaster(); - - AtmosphereResource atmosphereResource = new AtmosphereResourceImpl(); - AtmosphereRequest atmosphereRequest = AtmosphereRequest.wrap(wicketTester.getRequest()); - AtmosphereResponse atmosphereResponse = AtmosphereResponse.wrap(wicketTester.getResponse()); - TesterAsyncSupport asyncSupport = new TesterAsyncSupport(); - atmosphereResource.initialize(eventBus.config, broadcaster, atmosphereRequest, atmosphereResponse, - asyncSupport, new AtmosphereHandlerAdapter()); - - atmosphereResource.setBroadcaster(broadcaster); - broadcaster.addAtmosphereResource(atmosphereResource); - - String uuid = atmosphereResource.uuid(); - Page page = getComponent().getPage(); - eventBus.eventSubscriptionCollector.onBeforeRender(page); - page.setMetaData(ATMOSPHERE_UUID, uuid); - eventBus.registerPage(uuid, page); - } - }; - page.add(atmosphereBehavior); - - wicketTester.executeBehavior(atmosphereBehavior); - } - - public WicketAtmosphereTester post(Object payload) - { - eventBus.post(payload); - return this; - } -} http://git-wip-us.apache.org/repos/asf/wicket/blob/1037c696/wicket-experimental/wicket-atmosphere/src/test/java/org/apache/wicket/atmosphere/AtmosphereTest.java ---------------------------------------------------------------------- diff --git a/wicket-experimental/wicket-atmosphere/src/test/java/org/apache/wicket/atmosphere/AtmosphereTest.java b/wicket-experimental/wicket-atmosphere/src/test/java/org/apache/wicket/atmosphere/AtmosphereTest.java index e8a5b30..1161fd6 100644 --- a/wicket-experimental/wicket-atmosphere/src/test/java/org/apache/wicket/atmosphere/AtmosphereTest.java +++ b/wicket-experimental/wicket-atmosphere/src/test/java/org/apache/wicket/atmosphere/AtmosphereTest.java @@ -19,7 +19,7 @@ package org.apache.wicket.atmosphere; import java.util.Date; import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.atmosphere.tester.WicketAtmosphereTester; +import org.apache.wicket.atmosphere.tester.AtmosphereTester; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.util.tester.WicketTester; import org.junit.Assert; @@ -31,7 +31,7 @@ import org.junit.Test; public class AtmosphereTest extends Assert { @Test - public void aa() + public void atmospherePush() { WicketTester tester = new WicketTester(); HomePage page = new HomePage(new PageParameters()) @@ -54,9 +54,7 @@ public class AtmosphereTest extends Assert } }; - tester.startPage(page); - - WicketAtmosphereTester waTester = new WicketAtmosphereTester(tester, page); + AtmosphereTester waTester = new AtmosphereTester(tester, page); Date payload = new Date(); waTester.post(payload);
