/******************************************************************************* * 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 org.eclipse.rap.rwt.internal.service; import static org.eclipse.rap.rwt.internal.service.ContextProvider.getApplicationContext; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.eclipse.rap.rwt.internal.application.ApplicationContextImpl; import org.eclipse.rap.rwt.internal.lifecycle.LifeCycle; import org.eclipse.rap.rwt.internal.lifecycle.LifeCycleFactory; import org.eclipse.rap.rwt.internal.protocol.ProtocolUtil; import org.eclipse.rap.rwt.internal.protocol.RequestMessage; import org.eclipse.rap.rwt.testfixture.internal.Fixture; import org.eclipse.rap.rwt.testfixture.internal.TestMessage; import org.junit.After; import org.junit.Before; import org.junit.Test; public class RWTMessageHandler_Test { private List<Object> log; @Before public void setUp() { Fixture.setUp(); log = new ArrayList<Object>(); } @After public void tearDown() { Fixture.tearDown(); } @Test public void testHandleMessage_executesLifeCycleWithMessage() { LifeCycle lifeCycle = createLoggingLifeCycle( getApplicationContext() ); RWTMessageHandler messageHandler = new RWTMessageHandler( mockLifeCycleFactory( lifeCycle ) ); RequestMessage requestMessage = new TestMessage(); messageHandler.handleMessage( requestMessage, null ); assertEquals( 1, log.size() ); assertEquals( requestMessage.toString(), log.get( 0 ).toString() ); } private LifeCycle createLoggingLifeCycle( ApplicationContextImpl applicationContext ) { return new LifeCycle( applicationContext ) { @Override public void execute() throws IOException { log.add( ProtocolUtil.getClientMessage() ); } @Override public void requestThreadExec( Runnable runnable ) { } @Override public void sleep() { } }; } private static LifeCycleFactory mockLifeCycleFactory( LifeCycle lifeCycle ) { LifeCycleFactory lifeCycleFactory = mock( LifeCycleFactory.class ); when( lifeCycleFactory.getLifeCycle() ).thenReturn( lifeCycle ); return lifeCycleFactory; } }