Package com.eclipsesource.tabris.xcallbackurl

Source Code of com.eclipsesource.tabris.xcallbackurl.XCallbackTest

package com.eclipsesource.tabris.xcallbackurl;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;
import static org.mockito.Matchers.anyMap;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;

import java.util.Map;

import org.eclipse.rap.json.JsonObject;
import org.eclipse.rap.rwt.remote.RemoteObject;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.InOrder;

import com.eclipsesource.tabris.test.util.TabrisEnvironment;


public class XCallbackTest {

  @Rule
  public TabrisEnvironment environment = new TabrisEnvironment();

  @Test( expected = IllegalArgumentException.class )
  public void testFailsWithNullConfiguration() {
    new XCallback( null );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testFailsWithNullCallback() {
    XCallback xCallback = new XCallback( mock( XCallbackConfiguration.class ) );

    xCallback.addXCallbackListener( null );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testFailsWithRemovingNullCallback() {
    XCallback xCallback = new XCallback( mock( XCallbackConfiguration.class ) );

    xCallback.removeXCallbackListener( null );
  }

  @Test
  public void testUsesConfigAsCallParameter() {
    RemoteObject remoteObject = environment.getRemoteObject();
    XCallbackConfiguration configuration = new XCallbackConfiguration( "foo", "bar" );
    XCallback xCallback = new XCallback( configuration );

    xCallback.call();

    ArgumentCaptor<JsonObject> captor = ArgumentCaptor.forClass( JsonObject.class );
    verify( remoteObject ).call( eq( "call" ), captor.capture() );
    assertEquals( "foo", captor.getValue().get( "targetScheme" ).asString() );
    assertEquals( "bar", captor.getValue().get( "targetAction" ).asString() );
  }

  @Test
  public void testUsesConfigAsCallParameterWithXSource() {
    RemoteObject remoteObject = environment.getRemoteObject();
    XCallbackConfiguration configuration = new XCallbackConfiguration( "foo", "bar" );
    XCallback xCallback = new XCallback( configuration );
    configuration.setXSource( "foo" );

    xCallback.call();

    ArgumentCaptor<JsonObject> captor = ArgumentCaptor.forClass( JsonObject.class );
    verify( remoteObject ).call( eq( "call" ), captor.capture() );
    assertEquals( "foo", captor.getValue().get( "xSource" ).asString() );
  }

  @Test
  public void testUsesConfigAsCallParameterWithActionParameters() {
    RemoteObject remoteObject = environment.getRemoteObject();
    XCallbackConfiguration configuration = new XCallbackConfiguration( "foo", "bar" );
    XCallback xCallback = new XCallback( configuration );
    configuration.addActionParameter( "foo1", "bar1" );

    xCallback.call();

    ArgumentCaptor<JsonObject> captor = ArgumentCaptor.forClass( JsonObject.class );
    verify( remoteObject ).call( eq( "call" ), captor.capture() );
    JsonObject parameter = captor.getValue().get( "actionParameters" ).asObject();
    assertEquals( "bar1", parameter.get( "foo1" ).asString() );
  }

  @Test
  @SuppressWarnings("unchecked")
  public void testNotifiesCallbackOnSuccess() {
    XCallback xCallback = new XCallback( mock( XCallbackConfiguration.class ) );
    XCallbackListener listener = mock( XCallbackListener.class );
    xCallback.addXCallbackListener( listener );
    JsonObject parameters = new JsonObject();
    parameters.add( "foo", "bar" );

    environment.dispatchNotify( "Success", parameters );

    ArgumentCaptor<Map> captor = ArgumentCaptor.forClass( Map.class );
    verify( listener ).onSuccess( captor.capture() );
    assertEquals( 1, captor.getValue().size() );
    assertEquals( "bar", captor.getValue().get( "foo" ) );
  }

  @Test
  @SuppressWarnings("unchecked")
  public void testNotifiesAllCallbacksOnSuccess() {
    XCallback xCallback = new XCallback( mock( XCallbackConfiguration.class ) );
    XCallbackListener listener = mock( XCallbackListener.class );
    XCallbackListener listener2 = mock( XCallbackListener.class );
    xCallback.addXCallbackListener( listener );
    xCallback.addXCallbackListener( listener2 );

    environment.dispatchNotify( "Success", null );

    InOrder order = inOrder( listener, listener2 );
    order.verify( listener ).onSuccess( anyMap() );
    order.verify( listener2 ).onSuccess( anyMap() );
  }

  @Test
  public void testNotifiesCallbackOnError() {
    XCallback xCallback = new XCallback( mock( XCallbackConfiguration.class ) );
    XCallbackListener listener = mock( XCallbackListener.class );
    xCallback.addXCallbackListener( listener );
    JsonObject parameters = new JsonObject();
    parameters.add( "errorCode", "42" );
    parameters.add( "errorMessage", "foo" );

    environment.dispatchNotify( "Error", parameters );

    verify( listener ).onError( "42", "foo" );
  }

  @Test
  public void testNotifiesAllCallbacksOnError() {
    XCallback xCallback = new XCallback( mock( XCallbackConfiguration.class ) );
    XCallbackListener listener = mock( XCallbackListener.class );
    XCallbackListener listener2 = mock( XCallbackListener.class );
    xCallback.addXCallbackListener( listener );
    xCallback.addXCallbackListener( listener2 );
    JsonObject parameters = new JsonObject();
    parameters.add( "errorCode", "42" );
    parameters.add( "errorMessage", "foo" );

    environment.dispatchNotify( "Error", parameters );

    InOrder order = inOrder( listener, listener2 );
    order.verify( listener ).onError( "42", "foo" );
    order.verify( listener2 ).onError( "42", "foo" );
  }

  @Test
  public void testNotifiesCallbackOnCancel() {
    XCallback xCallback = new XCallback( mock( XCallbackConfiguration.class ) );
    XCallbackListener listener = mock( XCallbackListener.class );
    xCallback.addXCallbackListener( listener );

    environment.dispatchNotify( "Cancel", null );

    verify( listener ).onCancel();
  }

  @Test
  public void testNotifiesAllCallbacksOnCancel() {
    XCallback xCallback = new XCallback( mock( XCallbackConfiguration.class ) );
    XCallbackListener listener = mock( XCallbackListener.class );
    XCallbackListener listener2 = mock( XCallbackListener.class );
    xCallback.addXCallbackListener( listener );
    xCallback.addXCallbackListener( listener2 );

    environment.dispatchNotify( "Cancel", null );

    InOrder order = inOrder( listener, listener2 );
    order.verify( listener ).onCancel();
    order.verify( listener2 ).onCancel();
  }

  @Test
  public void testGetsRemoteObjectAsAdapter() {
    XCallback xCallback = new XCallback( mock( XCallbackConfiguration.class ) );

    RemoteObject adapter = xCallback.getAdapter( RemoteObject.class );

    assertSame( adapter, xCallback.getRemoteObject() );
  }

  @Test
  public void testGetsConfigurationAsAdapter() {
    XCallbackConfiguration configuration = mock( XCallbackConfiguration.class );
    XCallback xCallback = new XCallback( configuration );

    XCallbackConfiguration adapter = xCallback.getAdapter( XCallbackConfiguration.class );

    assertSame( adapter, configuration );
  }

  @Test
  public void testDisposeDestroysRemoteObject() {
    RemoteObject remoteObject = environment.getRemoteObject();
    XCallbackConfiguration configuration = mock( XCallbackConfiguration.class );
    XCallback xCallback = new XCallback( configuration );

    xCallback.dispose();

    verify( remoteObject ).destroy();
  }

  @Test( expected = IllegalStateException.class )
  public void testFaislWithDoubleDestroy() {
    XCallbackConfiguration configuration = mock( XCallbackConfiguration.class );
    XCallback xCallback = new XCallback( configuration );

    xCallback.dispose();
    xCallback.dispose();
  }

  @Test( expected = IllegalStateException.class )
  public void testFaislCallAfterDestroy() {
    XCallbackConfiguration configuration = mock( XCallbackConfiguration.class );
    XCallback xCallback = new XCallback( configuration );

    xCallback.dispose();
    xCallback.call();
  }

}
TOP

Related Classes of com.eclipsesource.tabris.xcallbackurl.XCallbackTest

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.