Package com.eclipsesource.tabris.internal

Source Code of com.eclipsesource.tabris.internal.CloudPushImplTest

/*******************************************************************************
* 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.internal;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;

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

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

public class CloudPushImplTest {

  @Rule
  public TabrisEnvironment environment = new TabrisEnvironment();

  @Test
  public void testCreatesRemoteObject() {
    CloudPushImpl cloudPush = new CloudPushImpl();
    RemoteObject remoteObject = cloudPush.getRemoteObject();

    assertNotNull( remoteObject );
  }

  @Test
  public void testCreatesRemoteObjectOnInitialization() {
    CloudPushImpl cloudPush = new CloudPushImpl();

    RemoteObject remoteObject = cloudPush.getRemoteObject();
    RemoteObject remoteObject2 = cloudPush.getRemoteObject();

    assertSame( remoteObject, remoteObject2 );
  }

  @Test(expected = IllegalArgumentException.class)
  public void testAddListenerFailsWithNullListener() {
    CloudPushImpl cloudPush = new CloudPushImpl();

    cloudPush.addListener( null );
  }

  @Test
  public void testAddListenerCreatesListenOperation() {
    CloudPushImpl cloudPush = new CloudPushImpl();

    cloudPush.addListener( mock( CloudPushListener.class ) );

    verify( environment.getServiceObject() ).listen( "Notification", true );
  }

  @Test(expected = IllegalArgumentException.class)
  public void testRemoveListenerFailsWithNullListener() {
    CloudPushImpl cloudPush = new CloudPushImpl();

    cloudPush.removeListener( null );
  }

  @Test
  public void testRemoveListenerCreatesUnListenOperation() {
    CloudPushImpl cloudPush = new CloudPushImpl();
    CloudPushListener listenerMock = mock( CloudPushListener.class );

    cloudPush.addListener( listenerMock );
    cloudPush.removeListener( listenerMock );

    InOrder order = inOrder( environment.getServiceObject(), environment.getServiceObject() );
    order.verify( environment.getServiceObject() ).listen( "Notification", true );
    order.verify( environment.getServiceObject() ).listen( "Notification", false );
  }

  @Test
  public void testRemoveOneOfManyListenersContinuesToListen() {
    CloudPushImpl cloudPush = new CloudPushImpl();
    CloudPushListener listenerMock1 = mock( CloudPushListener.class );
    CloudPushListener listenerMock2 = mock( CloudPushListener.class );

    cloudPush.addListener( listenerMock1 );
    cloudPush.addListener( listenerMock2 );
    cloudPush.removeListener( listenerMock1 );

    verify( environment.getServiceObject(), atLeastOnce() ).listen( "Notification", true );
    verify( environment.getServiceObject(), never() ).listen( "Notification", false );
  }

  @Test
  public void testCallsListenerWithRegisteredEvent() {
    CloudPushImpl cloudPush = new CloudPushImpl();
    CloudPushListener listener = mock( CloudPushListener.class );
    cloudPush.addListener( listener );

    environment.dispatchNotifyOnServiceObject( "Registered", new JsonObject().add( "token", "foo" ) );

    verify( listener ).registered( "foo" );
  }

  @Test
  public void testCallsAllListenersInOrderWithRegisteredEvent() {
    CloudPushImpl cloudPush = new CloudPushImpl();
    CloudPushListener listener = mock( CloudPushListener.class );
    CloudPushListener listener2 = mock( CloudPushListener.class );
    cloudPush.addListener( listener );
    cloudPush.addListener( listener2 );

    environment.dispatchNotifyOnServiceObject( "Registered", new JsonObject().add( "token", "foo" ) );

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

  @Test
  public void testCallsListenerWithMessageReceivedEvent() {
    CloudPushImpl cloudPush = new CloudPushImpl();
    CloudPushListener listener = mock( CloudPushListener.class );
    cloudPush.addListener( listener );

    environment.dispatchNotifyOnServiceObject( "MessageReceived", null );

    verify( listener ).messageReceived();
  }

  @Test
  public void testCallsAllsListenersWithMessageReceivedEvent() {
    CloudPushImpl cloudPush = new CloudPushImpl();
    CloudPushListener listener = mock( CloudPushListener.class );
    CloudPushListener listener2 = mock( CloudPushListener.class );
    cloudPush.addListener( listener );
    cloudPush.addListener( listener2 );

    environment.dispatchNotifyOnServiceObject( "MessageReceived", null );

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

  @Test
  public void testCallsListenerWithErrorReceivedEvent() {
    CloudPushImpl cloudPush = new CloudPushImpl();
    CloudPushListener listener = mock( CloudPushListener.class );
    cloudPush.addListener( listener );

    environment.dispatchNotifyOnServiceObject( "ErrorReceived",
                                               new JsonObject().add( "errorMessage", "error" ) );

    verify( listener ).errorReceived( "error" );
  }

  @Test
  public void testCallsAllsListenersWithErrorReceivedEvent() {
    CloudPushImpl cloudPush = new CloudPushImpl();
    CloudPushListener listener = mock( CloudPushListener.class );
    CloudPushListener listener2 = mock( CloudPushListener.class );
    cloudPush.addListener( listener );
    cloudPush.addListener( listener2 );

    environment.dispatchNotifyOnServiceObject( "ErrorReceived",
                                               new JsonObject().add( "errorMessage", "error" ) );

    InOrder order = inOrder( listener, listener2 );
    order.verify( listener ).errorReceived( "error" );
    order.verify( listener2 ).errorReceived( "error" );
  }

  @Test(expected = UnsupportedOperationException.class)
  public void testThrowsUnsupportedOperationExceptionWithInvalidEvent() {
    CloudPushImpl cloudPush = new CloudPushImpl();
    CloudPushListener listener = mock( CloudPushListener.class );
    cloudPush.addListener( listener );

    environment.dispatchNotifyOnServiceObject( "blub", new JsonObject().add( "message", "foo" ) );
  }

  @Test
  public void testSetsMessage() {
    CloudPushImpl cloudPush = new CloudPushImpl();
    JsonObject properties = new JsonObject();
    properties.set( "message", "payload" );

    cloudPush.handleSet( properties );

    String message = cloudPush.getMessage();
    assertEquals( "payload", message );
  }
}
TOP

Related Classes of com.eclipsesource.tabris.internal.CloudPushImplTest

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.