Package com.eclipsesource.tabris.widgets

Source Code of com.eclipsesource.tabris.widgets.ClientDialogTest

/*******************************************************************************
* Copyright (c) 2014 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.widgets;

import static com.eclipsesource.tabris.internal.Constants.EVENT_SELECTION;
import static com.eclipsesource.tabris.widgets.ClientDialog.Severity.ERROR;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

import java.io.Serializable;

import org.eclipse.rap.json.JsonObject;
import org.eclipse.rap.rwt.remote.RemoteObject;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.mockito.ArgumentCaptor;

import com.eclipsesource.tabris.internal.Constants;
import com.eclipsesource.tabris.test.util.TabrisEnvironment;
import com.eclipsesource.tabris.widgets.ClientDialog.ButtonType;
import com.eclipsesource.tabris.widgets.ClientDialog.Severity;


public class ClientDialogTest {

  @Rule
  public TabrisEnvironment environment = new TabrisEnvironment();
  @Rule
  public ExpectedException thrown = ExpectedException.none();

  @Test
  public void testIsSerializable() {
    assertTrue( Serializable.class.isAssignableFrom( ClientDialog.class ) );
  }

  @Test
  public void testFailsWithNullTitle() {
    thrown.expect( IllegalArgumentException.class );
    thrown.expectMessage( "title must not be null" );

    ClientDialog dialog = new ClientDialog();
    dialog.setTitle( null );
  }

  @Test
  public void testSetsTitle() {
    ClientDialog dialog = new ClientDialog();

    dialog.setTitle( "foo" );

    String title = dialog.getTitle();
    assertEquals( "foo", title );
  }

  @Test
  public void testSetsTitleOnRemoteObject() {
    RemoteObject remoteObject = environment.getRemoteObject();
    ClientDialog dialog = new ClientDialog();

    dialog.setTitle( "foo" );

    verify( remoteObject ).set( "title", "foo" );
  }

  @Test
  public void testFailsToSetNullMessage() {
    thrown.expect( IllegalArgumentException.class );
    thrown.expectMessage( "message must not be null" );

    ClientDialog dialog = new ClientDialog();
    dialog.setMessage( null );
  }

  @Test
  public void testSetsMessage() {
    ClientDialog dialog = new ClientDialog();

    dialog.setMessage( "bar" );

    String message = dialog.getMessage();
    assertEquals( "bar", message );
  }

  @Test
  public void testSetsMessageOnRemoteObject() {
    RemoteObject remoteObject = environment.getRemoteObject();
    ClientDialog dialog = new ClientDialog();

    dialog.setMessage( "bar" );

    verify( remoteObject ).set( "message", "bar" );
  }

  @Test
  public void testSetMessageReturnsDialog() {
    ClientDialog dialog = new ClientDialog();

    ClientDialog actualDialog = dialog.setMessage( "bar" );

    assertSame( dialog, actualDialog );
  }

  @Test
  public void testFailsToSetNullSeverity() {
    thrown.expect( IllegalArgumentException.class );
    thrown.expectMessage( "severity must not be null" );

    ClientDialog dialog = new ClientDialog();
    dialog.setSeverity( null );
  }

  @Test
  public void testSetsSeverity() {
    ClientDialog dialog = new ClientDialog();

    dialog.setSeverity( ERROR );

    Severity severity = dialog.getSeverity();
    assertSame( ERROR, severity );
  }

  @Test
  public void testSetsSeverityOnRemoteObject() {
    RemoteObject remoteObject = environment.getRemoteObject();
    ClientDialog dialog = new ClientDialog();

    dialog.setSeverity( ERROR );

    verify( remoteObject ).set( "severity", ERROR.toString() );
  }

  @Test
  public void testSetSeverityReturnsDialog() {
    ClientDialog dialog = new ClientDialog();

    ClientDialog actualDialog = dialog.setSeverity( ERROR );

    assertSame( dialog, actualDialog );
  }

  @Test
  public void testOpenCreatesCallOperation() {
    RemoteObject remoteObject = environment.getRemoteObject();
    ClientDialog dialog = new ClientDialog();

    dialog.open();

    verify( remoteObject ).call( "open", null );
  }

  @Test
  public void testCloseCreatesCallOperation() {
    RemoteObject remoteObject = environment.getRemoteObject();
    ClientDialog dialog = new ClientDialog();

    dialog.close();

    verify( remoteObject ).call( "close", null );
  }

  @Test
  public void testNotifiesListenerOnSelectionEvent() {
    ClientDialog dialog = new ClientDialog();
    Listener listener = mock( Listener.class );
    JsonObject properties = new JsonObject();
    properties.add( "buttonType", "buttonOk" );

    dialog.setButton( ButtonType.OK, "bar", listener );
    environment.dispatchNotify( "Selection", properties );

    verify( listener ).handleEvent( any( Event.class ) );
  }

  @Test
  public void testNotifiesListenerOnSelectionEventWithCorrectDisplay() {
    Display display = new Display();
    ClientDialog dialog = new ClientDialog();
    Listener listener = mock( Listener.class );
    JsonObject properties = new JsonObject();
    properties.add( "buttonType", "buttonOk" );

    dialog.setButton( ButtonType.OK, "bar", listener );
    environment.dispatchNotify( "Selection", properties );

    ArgumentCaptor<Event> captor = ArgumentCaptor.forClass( Event.class );
    verify( listener ).handleEvent( captor.capture() );
    assertSame( display, captor.getValue().display );
  }

  @Test
  public void testSetsButtonSetsButtonPropertyOnRemoteObject() {
    RemoteObject remoteObject = environment.getRemoteObject();
    ClientDialog dialog = new ClientDialog();
    Listener listener = mock( Listener.class );

    dialog.setButton( ButtonType.OK, "bar", listener );

    verify( remoteObject ).set( "buttonOk", "bar" );
  }

  @Test
  public void testSetsButtonCreateListenOnRemoteObject() {
    RemoteObject remoteObject = environment.getRemoteObject();
    ClientDialog dialog = new ClientDialog();
    Listener listener = mock( Listener.class );

    dialog.setButton( ButtonType.OK, "bar", listener );

    verify( remoteObject ).listen( EVENT_SELECTION, true );
  }

  @Test
  public void testSetsButtonCreateListenOnRemoteObjectOnce() {
    RemoteObject remoteObject = environment.getRemoteObject();
    ClientDialog dialog = new ClientDialog();
    Listener listener = mock( Listener.class );

    dialog.setButton( ButtonType.OK, "bar", listener );
    dialog.setButton( ButtonType.OK, "bar", listener );

    verify( remoteObject, times( 1 ) ).listen( Constants.EVENT_SELECTION, true );
  }

  @Test
  public void testSetsButtonWithoutListenerSetsButtonPropertyOnRemoteObject() {
    RemoteObject remoteObject = environment.getRemoteObject();
    ClientDialog dialog = new ClientDialog();

    dialog.setButton( ButtonType.OK, "bar" );

    verify( remoteObject ).set( "buttonOk", "bar" );
  }

  @Test
  public void testFailsToSetButtonWithNullType() {
    thrown.expect( IllegalArgumentException.class );
    thrown.expectMessage( "type must not be null" );

    ClientDialog dialog = new ClientDialog();
    dialog.setButton( null, "bar", mock( Listener.class ) );
  }

  @Test
  public void testFailsToSetButtonWithNullText() {
    thrown.expect( IllegalArgumentException.class );
    thrown.expectMessage( "text must not be null" );

    ClientDialog dialog = new ClientDialog();
    dialog.setButton( ButtonType.OK, null, mock( Listener.class ) );
  }

  @Test
  public void testFailsToSetButtonWithEmptyText() {
    thrown.expect( IllegalArgumentException.class );
    thrown.expectMessage( "text must not be empty" );

    ClientDialog dialog = new ClientDialog();
    dialog.setButton( ButtonType.OK, "", mock( Listener.class ) );
  }

  @Test
  public void testFailsToSetButtonWithNullTypeWithoutListener() {
    thrown.expect( IllegalArgumentException.class );
    thrown.expectMessage( "type must not be null" );

    ClientDialog dialog = new ClientDialog();
    dialog.setButton( null, "bar" );
  }

  @Test
  public void testFailsToSetButtonWithNullTextWithoutListener() {
    thrown.expect( IllegalArgumentException.class );
    thrown.expectMessage( "text must not be null" );

    ClientDialog dialog = new ClientDialog();
    dialog.setButton( ButtonType.OK, null );
  }

  @Test
  public void testFailsToSetButtonWithEmptyTextWithoutListener() {
    thrown.expect( IllegalArgumentException.class );
    thrown.expectMessage( "text must not be empty" );

    ClientDialog dialog = new ClientDialog();
    dialog.setButton( ButtonType.OK, "" );
  }

  @Test
  public void testFailsToAddNullClientListener() {
    thrown.expect( IllegalArgumentException.class );
    thrown.expectMessage( "listener must not be null" );

    ClientDialog dialog = new ClientDialog();
    dialog.addClientDialogListener( null );
  }

  @Test
  public void testFailsToRemoveNullClientListener() {
    thrown.expect( IllegalArgumentException.class );
    thrown.expectMessage( "listener must not be null" );

    ClientDialog dialog = new ClientDialog();
    dialog.removeClientDialogListener( null );
  }

  @Test
  public void testAddClientDialogListenerSendsListen() {
    RemoteObject remoteObject = environment.getRemoteObject();
    ClientDialog dialog = new ClientDialog();

    dialog.addClientDialogListener( mock( ClientDialogListener.class ) );

    verify( remoteObject ).listen( "ClientDialogClose", true );
  }

  @Test
  public void testAddClientDialogListenersSendsListenOnce() {
    RemoteObject remoteObject = environment.getRemoteObject();
    ClientDialog dialog = new ClientDialog();

    dialog.addClientDialogListener( mock( ClientDialogListener.class ) );
    dialog.addClientDialogListener( mock( ClientDialogListener.class ) );

    verify( remoteObject, times( 1 ) ).listen( "ClientDialogClose", true );
  }

  @Test
  public void testRemoveClientDialogListenerSendsListen() {
    RemoteObject remoteObject = environment.getRemoteObject();
    ClientDialog dialog = new ClientDialog();
    ClientDialogListener listener = mock( ClientDialogListener.class );
    dialog.addClientDialogListener( listener );

    dialog.removeClientDialogListener( listener );

    verify( remoteObject ).listen( "ClientDialogClose", false );
  }

  @Test
  public void testOpenCallsClientDialogListener() {
    ClientDialog dialog = new ClientDialog();
    ClientDialogListener listener = mock( ClientDialogListener.class );
    dialog.addClientDialogListener( listener );

    dialog.open();

    verify( listener ).open();
  }

  @Test
  public void testCloseEventCallsClientDialogListener() {
    ClientDialog dialog = new ClientDialog();
    ClientDialogListener listener = mock( ClientDialogListener.class );
    dialog.addClientDialogListener( listener );

    environment.dispatchNotify( "ClientDialogClose", null );

    verify( listener ).close();
  }
}
TOP

Related Classes of com.eclipsesource.tabris.widgets.ClientDialogTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.