Package com.eclipsesource.tabris.internal

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

/*******************************************************************************
* 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.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
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 java.io.Serializable;

import org.eclipse.rap.json.JsonObject;
import org.eclipse.rap.json.JsonValue;
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.print.PrintError;
import com.eclipsesource.tabris.print.PrintListener;
import com.eclipsesource.tabris.print.PrintOptions;
import com.eclipsesource.tabris.print.Printer;
import com.eclipsesource.tabris.test.util.TabrisEnvironment;


public class PrinterImplTest {

  @Rule
  public TabrisEnvironment environment = new TabrisEnvironment();

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

  @Test
  public void testPrintListenerIsSerializable() {
    assertTrue( Serializable.class.isAssignableFrom( PrintListener.class ) );
  }

  @Test
  public void testSetsNoInitialPrintOptionsWithDefaultOptions() {
    RemoteObject remoteObject = environment.getServiceObject();

    new PrinterImpl();

    verify( remoteObject, never() ).set( eq( "url" ), any( JsonValue.class ) );
    verify( remoteObject, never() ).set( eq( "printer" ), any( JsonValue.class ) );
    verify( remoteObject, never() ).set( eq( "jobName" ), any( JsonValue.class ) );
    verify( remoteObject, never() ).set( eq( "showPageRange" ), any( JsonValue.class ) );
    verify( remoteObject, never() ).set( eq( "showNumberOfCopies" ), any( JsonValue.class ) );
    verify( remoteObject, never() ).set( eq( "outputType" ), any( JsonValue.class ) );
    verify( remoteObject, never() ).set( eq( "quality" ), any( JsonValue.class ) );
    verify( remoteObject, never() ).set( eq( "duplex" ), any( JsonValue.class ) );
  }

  @Test
  public void testSendsPrintWithPrintCall() {
    RemoteObject remoteObject = environment.getServiceObject();
    Printer print = new PrinterImpl();

    print.print( "http://localhost/file.pdf", createOptions() );

    ArgumentCaptor<JsonObject> captor = ArgumentCaptor.forClass( JsonObject.class );
    verify( remoteObject ).call( eq( "print" ), captor.capture() );
    assertEquals( "http://localhost/file.pdf", captor.getValue().get( "url" ).asString() );
    assertEquals( "A Printer ID", captor.getValue().get( "printer" ).asString() );
    assertEquals( "A Job Name", captor.getValue().get( "jobName" ).asString() );
    assertTrue( captor.getValue().get( "showPageRange" ).asBoolean() );
    assertTrue( captor.getValue().get( "showNumberOfCopies" ).asBoolean() );
    assertEquals( "normal", captor.getValue().get( "quality" ).asString() );
    assertEquals( "color", captor.getValue().get( "outputType" ).asString() );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testPrintFailsWithNullOptions() {
    Printer print = new PrinterImpl();

    print.print( "foo", null );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testPrintFailsWithNullUrl() {
    Printer print = new PrinterImpl();

    print.print( null, new PrintOptions() );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testPrintFailsWithEmptyUrl() {
    Printer print = new PrinterImpl();

    print.print( "", new PrintOptions() );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testAddListenerFailsWithNullListener() {
    Printer print = new PrinterImpl();

    print.addPrintListener( null );
  }

  @Test( expected = IllegalArgumentException.class )
  public void testRemoveListenerFailsWithNullListener() {
    Printer print= new PrinterImpl();

    print.removePrintListener( null );
  }

  @Test
  public void testDelegatesError() {
    PrinterImpl print = new PrinterImpl();
    PrintListener listener = mock( PrintListener.class );
    print.addPrintListener( listener );
    JsonObject properties = new JsonObject();
    properties.add( "printer", "" );
    properties.add( "jobName", "" );
    properties.add( "message", "" );

    print.print( "http://localhost/file.pdf", createOptions() );
    environment.dispatchNotifyOnServiceObject( "Error", properties );

    verify( listener ).printFailed( any( PrintError.class ) );
  }

  @Test
  public void testDelegatesErrorWithoutProperties() {
    PrinterImpl print = new PrinterImpl();
    PrintListener listener = mock( PrintListener.class );
    print.addPrintListener( listener );

    print.print( "http://localhost/file.pdf", createOptions() );
    environment.dispatchNotifyOnServiceObject( "Error", new JsonObject() );

    verify( listener ).printFailed( any( PrintError.class ) );
  }

  @Test
  public void testDelegatesErrorToAllListeners() {
    PrinterImpl print = new PrinterImpl();
    PrintListener listener1 = mock( PrintListener.class );
    PrintListener listener2 = mock( PrintListener.class );
    print.addPrintListener( listener1 );
    print.addPrintListener( listener2 );
    JsonObject properties = new JsonObject();
    properties.add( "printer", "" );
    properties.add( "jobName", "" );
    properties.add( "message", "" );

    print.print( "http://localhost/file.pdf", createOptions() );
    environment.dispatchNotifyOnServiceObject( "Error", properties );

    InOrder order = inOrder( listener1, listener2 );
    order.verify( listener1 ).printFailed( any( PrintError.class ) );
    order.verify( listener2 ).printFailed( any( PrintError.class ) );
  }

  @Test
  public void testDelegatesCancel() {
    PrinterImpl print = new PrinterImpl();
    PrintListener listener = mock( PrintListener.class );
    print.addPrintListener( listener );
    JsonObject properties = new JsonObject();
    properties.add( "printer", "" );
    properties.add( "jobName", "" );

    print.print( "http://localhost/file.pdf", createOptions() );
    environment.dispatchNotifyOnServiceObject( "Cancel", properties );

    verify( listener ).printCanceled( any( String.class ), any( String.class ) );
  }

  @Test
  public void testDelegatesCancelWithoutProperties() {
    PrinterImpl print = new PrinterImpl();
    PrintListener listener = mock( PrintListener.class );
    print.addPrintListener( listener );

    print.print( "http://localhost/file.pdf", createOptions() );
    environment.dispatchNotifyOnServiceObject( "Cancel", new JsonObject() );

    verify( listener ).printCanceled( null, null );
  }

  @Test
  public void testDelegatesCancelToAllListeners() {
    PrinterImpl print = new PrinterImpl();
    PrintListener listener1 = mock( PrintListener.class );
    PrintListener listener2 = mock( PrintListener.class );
    print.addPrintListener( listener1 );
    print.addPrintListener( listener2 );
    JsonObject properties = new JsonObject();
    properties.add( "printer", "" );
    properties.add( "jobName", "" );

    print.print( "http://localhost/file.pdf", createOptions() );
    environment.dispatchNotifyOnServiceObject( "Cancel", properties );

    InOrder order = inOrder( listener1, listener2 );
    order.verify( listener1 ).printCanceled( any( String.class ), any( String.class ) );
    order.verify( listener2 ).printCanceled( any( String.class ), any( String.class ) );
  }

  @Test
  public void testDelegatesSuccess() {
    PrinterImpl print = new PrinterImpl();
    PrintListener listener = mock( PrintListener.class );
    print.addPrintListener( listener );
    JsonObject properties = new JsonObject();
    properties.add( "printer", "" );
    properties.add( "jobName", "" );

    print.print( "http://localhost/file.pdf", createOptions() );
    environment.dispatchNotifyOnServiceObject( "Success", properties );

    verify( listener ).printSucceeded( any( String.class ), any( String.class ) );
  }

  @Test
  public void testDelegatesSuccessWithoutProperties() {
    PrinterImpl print = new PrinterImpl();
    PrintListener listener = mock( PrintListener.class );
    print.addPrintListener( listener );

    print.print( "http://localhost/file.pdf", createOptions() );
    environment.dispatchNotifyOnServiceObject( "Success", new JsonObject() );

    verify( listener ).printSucceeded( null, null );
  }

  @Test
  public void testDelegatesSuccessToAllListeners() {
    PrinterImpl print = new PrinterImpl();
    PrintListener listener1 = mock( PrintListener.class );
    PrintListener listener2 = mock( PrintListener.class );
    print.addPrintListener( listener1 );
    print.addPrintListener( listener2 );
    JsonObject properties = new JsonObject();
    properties.add( "printer", "" );
    properties.add( "jobName", "" );

    print.print( "http://localhost/file.pdf", createOptions() );
    environment.dispatchNotifyOnServiceObject( "Success", properties );

    InOrder order = inOrder( listener1, listener2 );
    order.verify( listener1 ).printSucceeded( any( String.class ), any( String.class ) );
    order.verify( listener2 ).printSucceeded( any( String.class ), any( String.class ) );
  }

  private PrintOptions createOptions() {
    PrintOptions options = new PrintOptions();
    options.setPrinter( "A Printer ID" );
    options.setJobName( "A Job Name" );
    return options;
  }

}
TOP

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

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.