Package com.eclipsesource.tabris.test.util

Source Code of com.eclipsesource.tabris.test.util.TabrisEnvironment

package com.eclipsesource.tabris.test.util;
/*******************************************************************************
* 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
******************************************************************************/


import static org.mockito.Mockito.mock;

import org.eclipse.rap.json.JsonObject;
import org.eclipse.rap.rwt.RWT;
import org.eclipse.rap.rwt.client.Client;
import org.eclipse.rap.rwt.internal.remote.ConnectionImpl;
import org.eclipse.rap.rwt.internal.service.ContextProvider;
import org.eclipse.rap.rwt.lifecycle.PhaseId;
import org.eclipse.rap.rwt.remote.Connection;
import org.eclipse.rap.rwt.remote.RemoteObject;
import org.eclipse.rap.rwt.testfixture.Fixture;
import org.eclipse.rap.rwt.testfixture.TestRequest;
import org.eclipse.rap.rwt.testfixture.internal.engine.ThemeManagerHelper;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;

import com.eclipsesource.tabris.TabrisClient;
import com.eclipsesource.tabris.test.util.internal.RemoteObjectHelper;


/**
* <b>Please Note:</b> This class is preliminary API and may change in future version
*/
@SuppressWarnings( { "restriction", "deprecation" } )
public class TabrisEnvironment implements TestRule {

  @Override
  public Statement apply( final Statement base, Description description ) {
    return new Statement() {

      @Override
      public void evaluate() throws Throwable {
        try {
          Fixture.setSkipResourceRegistration( true );
          Fixture.setUp();
          Fixture.fakePhase( PhaseId.PROCESS_ACTION );
          Fixture.fakeClient( mock( TabrisClient.class ) );
          RemoteObjectHelper.mockRemoteObject();
          base.evaluate();
        } catch( Throwable shouldNotHappen ) {
          throw shouldNotHappen;
        } finally {
          if( ContextProvider.hasContext() ) {
            Fixture.tearDown();
          }
        }
      }
    };
  }

  public RemoteObject getRemoteObject() {
    return RWT.getUISession().getConnection().createRemoteObject( "foo" );
  }

  public RemoteObject getServiceObject() {
    Connection connection = RWT.getUISession().getConnection();
    return ( ( ConnectionImpl )connection ).createServiceObject( "foo" );
  }

  public TabrisRequest getRequest() {
    return new TabrisRequest( ( TestRequest )RWT.getRequest() );
  }

  public void resetThemes() {
    ThemeManagerHelper.resetThemeManager();
  }

  public void setClient( Client client ) {
    Fixture.fakeClient( client );
  }

  public void dispatchSet( JsonObject properties ) {
    ( ( TestRemoteObject )getRemoteObject() ).getHandler().handleSet( properties );
  }

  public void dispatchNotify( String eventName, JsonObject properties ) {
    ( ( TestRemoteObject )getRemoteObject() ).getHandler().handleNotify( eventName, properties );
  }

  public void dispatchCall( String methodName, JsonObject parameters ) {
    ( ( TestRemoteObject )getRemoteObject() ).getHandler().handleCall( methodName, parameters );
  }

  public void dispatchSetOnServiceObject( JsonObject properties ) {
    ( ( TestRemoteObject )getServiceObject() ).getHandler().handleSet( properties );
  }

  public void dispatchNotifyOnServiceObject( String eventName, JsonObject properties ) {
    ( ( TestRemoteObject )getServiceObject() ).getHandler().handleNotify( eventName, properties );
  }

  public void dispatchCallOnServiceObject( String methodName, JsonObject parameters ) {
    ( ( TestRemoteObject )getServiceObject() ).getHandler().handleCall( methodName, parameters );
  }

  public TabrisRequest newRequest() {
    TabrisRequest request = new TabrisRequest( Fixture.fakeNewRequest() );
    Fixture.fakePhase( PhaseId.PROCESS_ACTION );
    return request;
  }

  public TabrisRequest newGetRequest() {
    TabrisRequest request = new TabrisRequest( Fixture.fakeNewGetRequest() );
    Fixture.fakePhase( PhaseId.PROCESS_ACTION );
    return request;
  }

  public Image getTestImage() {
    return new Image( Display.getCurrent(), Fixture.class.getResourceAsStream( "/" + Fixture.IMAGE1 ) );
  }

}
TOP

Related Classes of com.eclipsesource.tabris.test.util.TabrisEnvironment

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.