/******************************************************************************* * 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.tracking.internal.analytics.request; import static com.eclipsesource.tabris.tracking.internal.analytics.request.RequestKeyProvider.getRequestKey; import static com.eclipsesource.tabris.tracking.internal.analytics.request.RequestKeys.APP_NAME; import static com.eclipsesource.tabris.tracking.internal.analytics.request.RequestKeys.CLIENT_ID; import static org.junit.Assert.assertEquals; import java.util.HashMap; import java.util.Map; import org.junit.Test; import com.eclipsesource.tabris.tracking.internal.Requestable; import com.eclipsesource.tabris.tracking.internal.analytics.model.hit.ScreenViewHit; public class AnalyticsRequestTest { @Test( expected = IllegalArgumentException.class ) public void testFailsWithNullAppName() { new AnalyticsRequest( null, "foo", new ScreenViewHit( "qaz" ) ); } @Test( expected = IllegalArgumentException.class ) public void testFailsWithEmptyAppName() { new AnalyticsRequest( "", "foo", new ScreenViewHit( "qaz" ) ); } @Test( expected = IllegalArgumentException.class ) public void testFailsWithNullClientId() { new AnalyticsRequest( "foo", null, new ScreenViewHit( "qaz" ) ); } @Test( expected = IllegalArgumentException.class ) public void testFailsWithEmptyClientId() { new AnalyticsRequest( "foo", "", new ScreenViewHit( "qaz" ) ); } @Test public void testSetsAppName() { AnalyticsRequest request = new AnalyticsRequest( "appName", "foo", new TestRequestable( "foo", "bar" ) ); String appName = ( String )request.assemble().get( getRequestKey( APP_NAME ) ); assertEquals( "appName", appName ); } @Test public void testSetsClientIdAsParameter() { AnalyticsRequest request = new AnalyticsRequest( "appName", "foo", new TestRequestable( "foo", "bar" ) ); String clientId = ( String )request.assemble().get( getRequestKey( CLIENT_ID ) ); assertEquals( "foo", clientId ); } @Test public void testAddsParameterFromRequestables() { TestRequestable requestable1 = new TestRequestable( "foo", "bar" ); TestRequestable requestable2 = new TestRequestable( "foo2", "bar2" ); AnalyticsRequest request = new AnalyticsRequest( "foo", "foo", requestable1, requestable2 ); Map<String, Object> parameter = request.assemble(); assertEquals( "bar", parameter.get( "foo" ) ); assertEquals( "bar2", parameter.get( "foo2" ) ); } private static class TestRequestable implements Requestable { private final HashMap<String, Object> parameter; public TestRequestable( String key, String value ) { this.parameter = new HashMap<String, Object>(); parameter.put( key, value ); } @Override public Map<String, Object> getParameter() { return parameter; } } }