r1302 - in trunk: . src/main/java/cc/kune/core/client/sitebar/spaces src/main/java/cc/kune/core/client/state src/test/java/cc/kune/core/client/state
Author: vjrj_ Date: 2011-04-03 12:41:33 +0200 (Sun, 03 Apr 2011) New Revision: 1302 Added: trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java Removed: trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java Modified: trunk/.classpath trunk/pom.xml trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java Log: NEW - # 35: Spaces selector integration with login/logout and history http://kune.ourproject.org/issues/ticket/35 Modified: trunk/.classpath =================================================================== --- trunk/.classpath 2011-04-01 22:07:25 UTC (rev 1301) +++ trunk/.classpath 2011-04-03 10:41:33 UTC (rev 1302) @@ -49,7 +49,7 @@ <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1-sources.jar"/> <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/waveprotocol/gwt-util-src/0.3.0-SNAPSHOT/gwt-util-src-0.3.0-SNAPSHOT.jar"/> - <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/voices/gwt-voices/gwt-voices/1.7.0/gwt-voices-1.7.0.jar"/> + <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/voices/gwt-voices/gwt-voices/2.0.0/gwt-voices-2.0.0.jar"/> <classpathentry kind="var" path="M2_REPO/com/gwtext/gwtext/2.0.5/gwtext-2.0.5.jar"/> <classpathentry kind="var" path="M2_REPO/com/gwtextux/gwtextux/0.4.0.924/gwtextux-0.4.0.924.jar"/> <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-all/0.5/gwtp-all-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-all/0.5/gwtp-all-0.5-sources.jar"/> Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2011-04-01 22:07:25 UTC (rev 1301) +++ trunk/pom.xml 2011-04-03 10:41:33 UTC (rev 1302) @@ -284,7 +284,7 @@ <dependency> <groupId>com.allen_sauer.gwt.voices.gwt-voices</groupId> <artifactId>gwt-voices</artifactId> - <version>1.7.0</version> + <version>2.0.0</version> </dependency> <!-- utilities --> <dependency> Modified: trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java 2011-04-01 22:07:25 UTC (rev 1301) +++ trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java 2011-04-03 10:41:33 UTC (rev 1302) @@ -22,14 +22,12 @@ import cc.kune.common.client.noti.NotifyLevel; import cc.kune.core.client.auth.SignIn; import cc.kune.core.client.init.AppStartEvent; -import cc.kune.core.client.state.HistoryWrapper; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.SiteTokens; +import cc.kune.core.client.state.StateManager; import cc.kune.core.client.state.TokenUtils; import cc.kune.core.client.state.UserSignInEvent; import cc.kune.core.client.state.UserSignOutEvent; -import cc.kune.core.shared.domain.utils.StateToken; -import cc.kune.core.shared.i18n.I18nTranslationService; import cc.kune.gspace.client.WsArmor; import com.google.gwt.event.dom.client.ClickEvent; @@ -75,7 +73,6 @@ private Space currentSpace; private String groupToken; private String homeToken; - private final I18nTranslationService i18n; private boolean nextUserSpace; private String publicToken; private final Session session; @@ -83,14 +80,13 @@ private String userToken; @Inject - public SpaceSelectorPresenter(final EventBus eventBus, final SpaceSelectorView view, - final SpaceSelectorProxy proxy, final WsArmor armor, final Session session, final Provider<SignIn> sigIn, - final I18nTranslationService i18n, final HistoryWrapper history) { + public SpaceSelectorPresenter(final EventBus eventBus, final StateManager stateManager, + final SpaceSelectorView view, final SpaceSelectorProxy proxy, final WsArmor armor, final Session session, + final Provider<SignIn> sigIn) { super(eventBus, view, proxy); this.armor = armor; this.session = session; this.signIn = sigIn; - this.i18n = i18n; nextUserSpace = false; homeToken = SiteTokens.HOME; userToken = SiteTokens.WAVEINBOX; @@ -99,41 +95,29 @@ view.getHomeBtn().addClickHandler(new ClickHandler() { @Override public void onClick(final ClickEvent event) { - gotoTokenIfDifferent(history, homeToken); + stateManager.gotoToken(homeToken); } }); view.getUserBtn().addClickHandler(new ClickHandler() { @Override public void onClick(final ClickEvent event) { - gotoTokenIfDifferent(history, userToken); + stateManager.gotoToken(userToken); } }); view.getGroupBtn().addClickHandler(new ClickHandler() { @Override public void onClick(final ClickEvent event) { - gotoTokenIfDifferent(history, groupToken); - onGroupSpaceSelect(); + stateManager.gotoToken(groupToken); } }); view.getPublicBtn().addClickHandler(new ClickHandler() { @Override public void onClick(final ClickEvent event) { - gotoTokenIfDifferent(history, publicToken); - onPublicSpaceSelect(); + stateManager.gotoToken(publicToken); } }); } - private void gotoTokenIfDifferent(final HistoryWrapper history, final String token) { - if (!history.getToken().equals(token)) { - if ((new StateToken(token)).equals(session.getCurrentStateToken())) { - history.newItem(token, false); - } else { - history.newItem(token); - } - } - } - @ProxyEvent public void onAppStart(final AppStartEvent event) { getView().setHomeBtnDown(false); Modified: trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2011-04-01 22:07:25 UTC (rev 1301) +++ trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2011-04-03 10:41:33 UTC (rev 1302) @@ -181,7 +181,7 @@ Log.debug("StateManager: on history changed (" + newHistoryToken + ")"); if (tokenListener == null) { // token is not one of #newgroup #signin #translate ... - final String nToken = newHistoryToken.toLowerCase(); + final String nToken = newHistoryToken != null ? newHistoryToken.toLowerCase() : null; if (tokenMatcher.hasRedirect(nToken)) { final Pair<String, String> redirect = tokenMatcher.getRedirect(nToken); final String firstToken = redirect.getLeft(); @@ -222,6 +222,7 @@ onHistoryChanged(""); SpaceSelectEvent.fire(eventBus, Space.groupSpace); } + // Fire the listener of this #hash token tokenListener.onHistoryToken(); } } else { Copied: trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java (from rev 1301, trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java) =================================================================== --- trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java (rev 0) +++ trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java 2011-04-03 10:41:33 UTC (rev 1302) @@ -0,0 +1,248 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.state; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; + +import cc.kune.common.client.actions.BeforeActionListener; +import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler; +import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler; +import cc.kune.core.client.state.ToolChangedEvent.ToolChangedHandler; +import cc.kune.core.shared.domain.utils.StateToken; +import cc.kune.core.shared.dto.StateAbstractDTO; + +import com.google.gwt.user.client.rpc.AsyncCallback; + +public class StateManagerDefaultTest { + + private static final String HASH = "someUserHash"; + private BeforeActionListener beforeChangeListener1; + private BeforeActionListener beforeChangeListener2; + private ContentCache contentProvider; + private EventBusTester eventBus; + private GroupChangedHandler groupChangeHandler; + private HistoryWrapper history; + private Session session; + private StateAbstractDTO state; + private StateChangedHandler stateChangeHandler; + private StateManagerDefault stateManager; + private TokenMatcher tokenMatcher; + private ToolChangedHandler toolChangeHandler; + + @Before + public void before() { + contentProvider = Mockito.mock(ContentCache.class); + session = Mockito.mock(Session.class); + history = Mockito.mock(HistoryWrapper.class); + tokenMatcher = Mockito.mock(TokenMatcher.class); + eventBus = new EventBusTester(); + stateManager = new StateManagerDefault(contentProvider, session, history, tokenMatcher, eventBus); + Mockito.when(session.getUserHash()).thenReturn(HASH); + state = Mockito.mock(StateAbstractDTO.class); + stateChangeHandler = Mockito.mock(StateChangedHandler.class); + groupChangeHandler = Mockito.mock(GroupChangedHandler.class); + toolChangeHandler = Mockito.mock(ToolChangedHandler.class); + beforeChangeListener1 = Mockito.mock(BeforeActionListener.class); + beforeChangeListener2 = Mockito.mock(BeforeActionListener.class); + eventBus.addHandler(StateChangedEvent.getType(), stateChangeHandler); + eventBus.addHandler(GroupChangedEvent.getType(), groupChangeHandler); + eventBus.addHandler(ToolChangedEvent.getType(), toolChangeHandler); + // new NotifyUser(null, null); + } + + @Test + public void changeGroupWithNoTool() { + changeState("group1", "group2"); + Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged((StateChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged((GroupChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged((GroupChangedEvent) Mockito.anyObject()); + } + + private void changeState(final String... tokens) { + for (final String token : tokens) { + Mockito.when(state.getStateToken()).thenReturn(new StateToken(token)); + stateManager.setState(state); + } + } + + @Test + public void changeStateWithDifferentAndGroupsToolsMustFireListener() { + changeState("group2.tool1", "group1.tool2"); + Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged((StateChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged((GroupChangedEvent) Mockito.anyObject()); + Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged((ToolChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("", "group2")); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("group2", "group1")); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("", "tool1")); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("tool1", "tool2")); + } + + @Test + public void changeStateWithDifferentGroupsMustFireListener() { + changeState("group1.tool1", "group2.tool1"); + // assertTrue(stateChangeListener.isCalled(2)); + // assertTrue(groupChangeListener.isCalledWithEquals("", "group1", + // "group1", "group2")); + // assertTrue(toolChangeListener.isCalledWithEquals("", "tool1")); + Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged((StateChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged((GroupChangedEvent) Mockito.anyObject()); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged((ToolChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("", "group1")); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("group1", "group2")); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("", "tool1")); + + } + + @Test + public void changeStateWithDifferentToolsMustFireListener() { + changeState("group1.tool1", "group1.tool2"); + Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged((StateChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged((GroupChangedEvent) Mockito.anyObject()); + Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged((ToolChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("", "group1")); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("", "tool1")); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("tool1", "tool2")); + } + + @Test + public void changeToNoTool() { + changeState("group1.tool1", "group1"); + Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged((StateChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged((GroupChangedEvent) Mockito.anyObject()); + Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged((ToolChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("", "group1")); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("", "tool1")); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("tool1", "")); + } + + @Test + public void changeToSameToken() { + changeState("group1.tool1", "group1.tool1"); + Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged((StateChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged((GroupChangedEvent) Mockito.anyObject()); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged((ToolChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("", "group1")); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("", "tool1")); + } + + private String confBeforeStateChangeListeners(final boolean value, final boolean value2) { + stateManager.addBeforeStateChangeListener(beforeChangeListener1); + stateManager.addBeforeStateChangeListener(beforeChangeListener2); + final String newToken = "something"; + Mockito.when(beforeChangeListener1.beforeAction()).thenReturn(value); + Mockito.when(beforeChangeListener2.beforeAction()).thenReturn(value2); + return newToken; + } + + @SuppressWarnings("unchecked") + @Test + public void getDefGroup() { + stateManager.onHistoryChanged("site.docs"); + Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(), + (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); + } + + public void getWaveToken() { + stateManager.onHistoryChanged("example.com/w+abcd/~/conv+root/b+45kg"); + } + + @SuppressWarnings("unchecked") + @Test + public void normalStartLoggedUser() { + // When a user enter reload state, also if the application is starting + // (and the user was logged) + Mockito.when(history.getToken()).thenReturn(""); + stateManager.reload(); + Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(), + (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); + } + + @SuppressWarnings("unchecked") + @Test + public void oneBeforeStateChangeListenerAddAndRemove() { + final String newToken = confBeforeStateChangeListeners(false, false); + stateManager.onHistoryChanged(newToken); + removeBeforeStateChangeListener(); + stateManager.onHistoryChanged(newToken); + Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(), + (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); + } + + @Test + public void oneBeforeStateChangeListenerFalseAndResume() { + final String token = confBeforeStateChangeListeners(false, true); + stateManager.onHistoryChanged(token); + Mockito.verify(history, Mockito.never()).newItem(token); + removeBeforeStateChangeListener(); + stateManager.resumeTokenChange(); + Mockito.verify(history, Mockito.times(1)).newItem(token); + } + + @SuppressWarnings("unchecked") + @Test + public void oneBeforeStateChangeListenerReturnFalse() { + stateManager.onHistoryChanged(confBeforeStateChangeListeners(true, false)); + Mockito.verify(contentProvider, Mockito.never()).getContent(Mockito.anyString(), + (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); + } + + @SuppressWarnings("unchecked") + @Test + public void oneBeforeStateChangeListenerReturnFalseWithTwo() { + stateManager.onHistoryChanged(confBeforeStateChangeListeners(false, false)); + Mockito.verify(contentProvider, Mockito.never()).getContent(Mockito.anyString(), + (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); + } + + @SuppressWarnings("unchecked") + @Test + public void oneBeforeStateChangeListenerReturnTrue() { + stateManager.onHistoryChanged(confBeforeStateChangeListeners(true, true)); + Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(), + (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); + } + + private void removeBeforeStateChangeListener() { + stateManager.removeBeforeStateChangeListener(beforeChangeListener1); + stateManager.removeBeforeStateChangeListener(beforeChangeListener2); + } + + @SuppressWarnings("unchecked") + @Test + public void siteTokenFirstLoadDefContentAndFireListener() { + final HistoryTokenCallback listener = Mockito.mock(HistoryTokenCallback.class); + final String token = SiteTokens.SIGNIN; + stateManager.addSiteToken(token, listener); + stateManager.onHistoryChanged(token); + Mockito.verify(listener, Mockito.times(1)).onHistoryToken(); + Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(), + (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); + } + + @Test + public void siteTokenTest() { + final HistoryTokenCallback siteTokenListener = Mockito.mock(HistoryTokenCallback.class); + stateManager.addSiteToken("signin", siteTokenListener); + stateManager.onHistoryChanged("signIn"); + Mockito.verify(siteTokenListener, Mockito.times(1)).onHistoryToken(); + } +} Deleted: trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java 2011-04-01 22:07:25 UTC (rev 1301) +++ trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java 2011-04-03 10:41:33 UTC (rev 1302) @@ -1,251 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.state; - -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mockito; - -import cc.kune.common.client.actions.BeforeActionListener; -import cc.kune.core.client.sitebar.spaces.SpaceSelectorPresenter; -import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler; -import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler; -import cc.kune.core.client.state.ToolChangedEvent.ToolChangedHandler; -import cc.kune.core.shared.domain.utils.StateToken; -import cc.kune.core.shared.dto.StateAbstractDTO; - -import com.google.gwt.user.client.rpc.AsyncCallback; - -public class StateManagerTest { - - private static final String HASH = "someUserHash"; - private BeforeActionListener beforeChangeListener1; - private BeforeActionListener beforeChangeListener2; - private ContentCache contentProvider; - private EventBusTester eventBus; - private GroupChangedHandler groupChangeHandler; - private HistoryWrapper history; - private Session session; - private SpaceSelectorPresenter spaceSelector; - private StateAbstractDTO state; - private StateChangedHandler stateChangeHandler; - private StateManagerDefault stateManager; - private TokenMatcher tokenMatcher; - private ToolChangedHandler toolChangeHandler; - - @Before - public void before() { - contentProvider = Mockito.mock(ContentCache.class); - session = Mockito.mock(Session.class); - history = Mockito.mock(HistoryWrapper.class); - tokenMatcher = Mockito.mock(TokenMatcher.class); - spaceSelector = Mockito.mock(SpaceSelectorPresenter.class); - eventBus = new EventBusTester(); - stateManager = new StateManagerDefault(contentProvider, session, history, tokenMatcher, eventBus); - Mockito.when(session.getUserHash()).thenReturn(HASH); - state = Mockito.mock(StateAbstractDTO.class); - stateChangeHandler = Mockito.mock(StateChangedHandler.class); - groupChangeHandler = Mockito.mock(GroupChangedHandler.class); - toolChangeHandler = Mockito.mock(ToolChangedHandler.class); - beforeChangeListener1 = Mockito.mock(BeforeActionListener.class); - beforeChangeListener2 = Mockito.mock(BeforeActionListener.class); - eventBus.addHandler(StateChangedEvent.getType(), stateChangeHandler); - eventBus.addHandler(GroupChangedEvent.getType(), groupChangeHandler); - eventBus.addHandler(ToolChangedEvent.getType(), toolChangeHandler); - // new NotifyUser(null, null); - } - - @Test - public void changeGroupWithNoTool() { - changeState("group1", "group2"); - Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged((StateChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged((GroupChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged((GroupChangedEvent) Mockito.anyObject()); - } - - private void changeState(final String... tokens) { - for (final String token : tokens) { - Mockito.when(state.getStateToken()).thenReturn(new StateToken(token)); - stateManager.setState(state); - } - } - - @Test - public void changeStateWithDifferentAndGroupsToolsMustFireListener() { - changeState("group2.tool1", "group1.tool2"); - Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged((StateChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged((GroupChangedEvent) Mockito.anyObject()); - Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged((ToolChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("", "group2")); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("group2", "group1")); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("", "tool1")); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("tool1", "tool2")); - } - - @Test - public void changeStateWithDifferentGroupsMustFireListener() { - changeState("group1.tool1", "group2.tool1"); - // assertTrue(stateChangeListener.isCalled(2)); - // assertTrue(groupChangeListener.isCalledWithEquals("", "group1", - // "group1", "group2")); - // assertTrue(toolChangeListener.isCalledWithEquals("", "tool1")); - Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged((StateChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged((GroupChangedEvent) Mockito.anyObject()); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged((ToolChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("", "group1")); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("group1", "group2")); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("", "tool1")); - - } - - @Test - public void changeStateWithDifferentToolsMustFireListener() { - changeState("group1.tool1", "group1.tool2"); - Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged((StateChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged((GroupChangedEvent) Mockito.anyObject()); - Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged((ToolChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("", "group1")); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("", "tool1")); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("tool1", "tool2")); - } - - @Test - public void changeToNoTool() { - changeState("group1.tool1", "group1"); - Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged((StateChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged((GroupChangedEvent) Mockito.anyObject()); - Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged((ToolChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("", "group1")); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("", "tool1")); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("tool1", "")); - } - - @Test - public void changeToSameToken() { - changeState("group1.tool1", "group1.tool1"); - Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged((StateChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged((GroupChangedEvent) Mockito.anyObject()); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged((ToolChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("", "group1")); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("", "tool1")); - } - - private String confBeforeStateChangeListeners(final boolean value, final boolean value2) { - stateManager.addBeforeStateChangeListener(beforeChangeListener1); - stateManager.addBeforeStateChangeListener(beforeChangeListener2); - final String newToken = "something"; - Mockito.when(beforeChangeListener1.beforeAction()).thenReturn(value); - Mockito.when(beforeChangeListener2.beforeAction()).thenReturn(value2); - return newToken; - } - - @SuppressWarnings("unchecked") - @Test - public void getDefGroup() { - stateManager.onHistoryChanged("site.docs"); - Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(), - (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); - } - - public void getWaveToken() { - stateManager.onHistoryChanged("example.com/w+abcd/~/conv+root/b+45kg"); - } - - @SuppressWarnings("unchecked") - @Test - public void normalStartLoggedUser() { - // When a user enter reload state, also if the application is starting - // (and the user was logged) - Mockito.when(history.getToken()).thenReturn(""); - stateManager.reload(); - Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(), - (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); - } - - @SuppressWarnings("unchecked") - @Test - public void oneBeforeStateChangeListenerAddAndRemove() { - final String newToken = confBeforeStateChangeListeners(false, false); - stateManager.onHistoryChanged(newToken); - removeBeforeStateChangeListener(); - stateManager.onHistoryChanged(newToken); - Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(), - (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); - } - - @Test - public void oneBeforeStateChangeListenerFalseAndResume() { - final String token = confBeforeStateChangeListeners(false, true); - stateManager.onHistoryChanged(token); - Mockito.verify(history, Mockito.never()).newItem(token); - removeBeforeStateChangeListener(); - stateManager.resumeTokenChange(); - Mockito.verify(history, Mockito.times(1)).newItem(token); - } - - @SuppressWarnings("unchecked") - @Test - public void oneBeforeStateChangeListenerReturnFalse() { - stateManager.onHistoryChanged(confBeforeStateChangeListeners(true, false)); - Mockito.verify(contentProvider, Mockito.never()).getContent(Mockito.anyString(), - (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); - } - - @SuppressWarnings("unchecked") - @Test - public void oneBeforeStateChangeListenerReturnFalseWithTwo() { - stateManager.onHistoryChanged(confBeforeStateChangeListeners(false, false)); - Mockito.verify(contentProvider, Mockito.never()).getContent(Mockito.anyString(), - (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); - } - - @SuppressWarnings("unchecked") - @Test - public void oneBeforeStateChangeListenerReturnTrue() { - stateManager.onHistoryChanged(confBeforeStateChangeListeners(true, true)); - Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(), - (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); - } - - private void removeBeforeStateChangeListener() { - stateManager.removeBeforeStateChangeListener(beforeChangeListener1); - stateManager.removeBeforeStateChangeListener(beforeChangeListener2); - } - - @SuppressWarnings("unchecked") - @Test - public void siteTokenFirstLoadDefContentAndFireListener() { - final HistoryTokenCallback listener = Mockito.mock(HistoryTokenCallback.class); - final String token = SiteTokens.SIGNIN; - stateManager.addSiteToken(token, listener); - stateManager.onHistoryChanged(token); - Mockito.verify(listener, Mockito.times(1)).onHistoryToken(); - Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(), - (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); - } - - @Test - public void siteTokenTest() { - final HistoryTokenCallback siteTokenListener = Mockito.mock(HistoryTokenCallback.class); - stateManager.addSiteToken("signin", siteTokenListener); - stateManager.onHistoryChanged("signIn"); - Mockito.verify(siteTokenListener, Mockito.times(1)).onHistoryToken(); - } -}
participants (1)
-
Vicente J. Ruiz Jurado