/******************************************************************************* * Copyright (c) 2013 EclipseSource and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * EclipseSource - initial API and implementation ******************************************************************************/ package com.eclipsesource.tabris.ui; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.io.Serializable; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import com.eclipsesource.tabris.test.util.TabrisEnvironment; public class AbstractPageTest { @Rule public TabrisEnvironment environment = new TabrisEnvironment(); private Shell shell; @Before public void setUp() { shell = new Shell( new Display() ); } @Test public void testIsSerializable() { assertTrue( Serializable.class.isAssignableFrom( AbstractPage.class ) ); } @Test public void testRemembersUI() { UI ui = mock( UI.class ); PageOperator operator = mock( PageOperator.class ); PageData data = new PageData(); when( operator.getCurrentPageData() ).thenReturn( data ); when( ui.getPageOperator() ).thenReturn( operator ); TestAbstractPage page = new TestAbstractPage(); page.createContent( shell, ui ); assertSame( ui, page.getUI() ); } @Test public void testUsesUIConfigurationOfUI() { UI ui = mock( UI.class ); UIConfiguration config = mock( UIConfiguration.class ); when( ui.getConfiguration() ).thenReturn( config ); PageOperator operator = mock( PageOperator.class ); PageData data = new PageData(); when( operator.getCurrentPageData() ).thenReturn( data ); when( ui.getPageOperator() ).thenReturn( operator ); TestAbstractPage page = new TestAbstractPage(); page.createContent( shell, ui ); UIConfiguration actualConfiguration = page.getUIConfiguration(); assertSame( config, actualConfiguration ); } @Test public void testCanGetPageData() { UI ui = mock( UI.class ); PageOperator operator = mock( PageOperator.class ); PageData data = new PageData(); when( operator.getCurrentPageData() ).thenReturn( data ); when( ui.getPageOperator() ).thenReturn( operator ); TestAbstractPage page = new TestAbstractPage(); page.createContent( shell, ui ); PageData actualData = page.getData(); assertSame( data, actualData ); } @Test public void testCallsCreateContentsWithPageData() { UI ui = mock( UI.class ); PageData data = new PageData(); PageOperator operator = mock( PageOperator.class ); when( operator.getCurrentPageData() ).thenReturn( data ); when( ui.getPageOperator() ).thenReturn( operator ); TestAbstractPage page = spy( new TestAbstractPage() ); page.createContent( shell, ui ); verify( page ).createContent( shell, data ); } @Test public void testSetsTitle() { UI ui = mock( UI.class ); PageData data = new PageData(); PageOperator operator = mock( PageOperator.class ); when( operator.getCurrentPageData() ).thenReturn( data ); when( ui.getPageOperator() ).thenReturn( operator ); TestAbstractPage page = spy( new TestAbstractPage() ); page.createContent( shell, ui ); page.setTitle( "foo" ); verify( operator ).setCurrentPageTitle( "foo" ); } @Test public void testClosesPage() { UI ui = mock( UI.class ); PageData data = new PageData(); PageOperator operator = mock( PageOperator.class ); when( operator.getCurrentPageData() ).thenReturn( data ); when( ui.getPageOperator() ).thenReturn( operator ); TestAbstractPage page = spy( new TestAbstractPage() ); page.createContent( shell, ui ); page.close(); verify( operator ).closeCurrentPage(); } @Test public void testCanOpenNewPage() { UI ui = mock( UI.class ); PageData data = new PageData(); PageOperator operator = mock( PageOperator.class ); when( operator.getCurrentPageData() ).thenReturn( data ); when( ui.getPageOperator() ).thenReturn( operator ); TestAbstractPage page = spy( new TestAbstractPage() ); page.createContent( shell, ui ); page.openPage( "foo" ); verify( operator ).openPage( "foo" ); } @Test public void testCanOpenNewPageWithData() { UI ui = mock( UI.class ); PageData data = new PageData(); PageOperator operator = mock( PageOperator.class ); when( operator.getCurrentPageData() ).thenReturn( data ); when( ui.getPageOperator() ).thenReturn( operator ); TestAbstractPage page = spy( new TestAbstractPage() ); page.createContent( shell, ui ); page.openPage( "foo", data ); verify( operator ).openPage( "foo", data ); } @Test public void testCanHideAction() { UI ui = mock( UI.class ); PageData data = new PageData(); PageOperator operator = mock( PageOperator.class ); ActionOperator actionOperator = mock( ActionOperator.class ); when( operator.getCurrentPageData() ).thenReturn( data ); when( ui.getPageOperator() ).thenReturn( operator ); when( ui.getActionOperator() ).thenReturn( actionOperator ); TestAbstractPage page = spy( new TestAbstractPage() ); page.createContent( shell, ui ); page.setActionVisible( "foo", false ); verify( actionOperator ).setActionVisible( "foo", false ); } @Test public void testCanDisableAction() { UI ui = mock( UI.class ); PageData data = new PageData(); PageOperator operator = mock( PageOperator.class ); ActionOperator actionOperator = mock( ActionOperator.class ); when( operator.getCurrentPageData() ).thenReturn( data ); when( ui.getPageOperator() ).thenReturn( operator ); when( ui.getActionOperator() ).thenReturn( actionOperator ); TestAbstractPage page = spy( new TestAbstractPage() ); page.createContent( shell, ui ); page.setActionEnabled( "foo", false ); verify( actionOperator ).setActionEnabled( "foo", false ); } private static class TestAbstractPage extends AbstractPage { @Override public void createContent( Composite parent, PageData data ) { // nothing to do here } } }