/* * Copyright (c) 2011 Petter Holmström * * 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.github.peholmst.mvp4vaadin.navigation.incubation; import static org.junit.Assert.*; import static org.easymock.EasyMock.*; import org.easymock.Capture; import org.junit.Before; import org.junit.Test; import com.github.peholmst.mvp4vaadin.navigation.ControllableView; import com.github.peholmst.mvp4vaadin.navigation.Direction; import com.github.peholmst.mvp4vaadin.navigation.ViewController; import com.github.peholmst.mvp4vaadin.navigation.ViewControllerListener; import com.github.peholmst.mvp4vaadin.navigation.incubation.ControllableViewWithEmbeddedController; import com.github.peholmst.mvp4vaadin.navigation.incubation.NestedControllersMaster; /** * Test case for {@link NestedControllersMaster}. * * @author Petter Holmström * @since 1.0 * @deprecated Will be deleted in the 1.0 release */ @Deprecated public class NestedControllersMasterTest { NestedControllersMaster master; ViewController controller; ViewController controller2; ViewController controller3; Capture<ViewControllerListener> listener; ControllableView view; ControllableViewWithEmbeddedController viewWithController; ControllableViewWithEmbeddedController viewWithController2; @Before public void setUp() { master = new NestedControllersMaster(); controller = createMock(ViewController.class); controller2 = createMock(ViewController.class); controller3 = createMock(ViewController.class); listener = new Capture<ViewControllerListener>(); view = createMock(ControllableView.class); viewWithController = createMock(ControllableViewWithEmbeddedController.class); viewWithController2 = createMock(ControllableViewWithEmbeddedController.class); } @Test public void activeControllerWithEmptyStack() { assertNull(master.getActiveViewController()); } @Test public void setToplevelControllerWithEmptyStack() { controller.addListener(capture(listener)); replay(controller); master.setToplevelController(controller); assertSame(controller, master.getActiveViewController()); verify(controller); assertNotNull(listener.getValue()); } @Test public void currentViewOfTopLevelChanges_NoEmbeddedController() { master.controllerStack.add(controller); replay(view); master.listener.currentViewChanged(controller, null, view, Direction.FORWARD, true); assertSame(controller, master.getActiveViewController()); verify(view); } @Test public void currentViewOfTopLevelChanges_EmbeddedController() { master.controllerStack.add(controller); expect(viewWithController.getEmbeddedController()).andStubReturn(controller2); replay(viewWithController); controller2.addListener(capture(listener)); expect(controller2.getCurrentView()).andStubReturn(null); replay(controller2); master.listener.currentViewChanged(controller, null, viewWithController, Direction.FORWARD, true); assertSame(controller2, master.getActiveViewController()); verify(controller2); verify(viewWithController); } @Test public void currentViewOfTopLevelChanges_EmbeddedControllerWithEmbeddedController() { master.controllerStack.add(controller); expect(viewWithController.getEmbeddedController()).andStubReturn(controller2); replay(viewWithController); controller2.addListener(capture(listener)); expect(controller2.getCurrentView()).andStubReturn(viewWithController2); replay(controller2); expect(viewWithController2.getEmbeddedController()).andStubReturn(null); replay(viewWithController2); master.listener.currentViewChanged(controller, null, viewWithController, Direction.FORWARD, true); assertSame(controller2, master.getActiveViewController()); verify(controller2); verify(viewWithController); verify(viewWithController2); } @Test public void currentViewOfEmbeddedChanges() { // Setup the stack master.controllerStack.add(controller); master.controllerStack.add(controller2); master.controllerStack.add(controller3); // Run test master.listener.currentViewChanged(controller2, null, view, Direction.FORWARD, true); // Verify results assertSame(controller2, master.getActiveViewController()); } @Test public void changeToplevelController() { // Setup the stack master.controllerStack.add(controller); // Configure mocks controller2.addListener(capture(listener)); replay(controller2); // Run test master.setToplevelController(controller2); // Verify results assertSame(controller2, master.getActiveViewController()); assertEquals(1, master.controllerStack.size()); verify(controller2); } }