/*
* Copyright 2010-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://aws.amazon.com/apache2.0
*
* This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
* OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and
* limitations under the License.
*/
package com.amazonaws.mobileconnectors.pinpoint;
import android.app.Activity;
import android.content.Context;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.AnonymousAWSCredentials;
import com.amazonaws.mobileconnectors.pinpoint.analytics.AnalyticsClient;
import com.amazonaws.mobileconnectors.pinpoint.analytics.SessionClient;
import com.amazonaws.mobileconnectors.pinpoint.analytics.utils.AnalyticsContextBuilder;
import com.amazonaws.mobileconnectors.pinpoint.internal.core.PinpointContext;
import com.amazonaws.mobileconnectors.pinpoint.internal.core.configuration.AndroidPreferencesConfiguration;
import com.amazonaws.mobileconnectors.pinpoint.internal.core.system.MockSystem;
import com.amazonaws.mobileconnectors.pinpoint.analytics.utils.ContextWithPermissions;
import com.amazonaws.mobileconnectors.pinpoint.targeting.TargetingClient;
import com.amazonaws.mobileconnectors.pinpoint.analytics.utils.ApplyLocalesRule;
import com.amazonaws.mobileconnectors.pinpoint.analytics.utils.LocaleTestingSetupAndTeardown;
import com.amazonaws.regions.Regions;
import org.junit.Rule;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import java.util.Locale;
import static org.mockito.Mockito.mock;
@RunWith(RobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public abstract class AWSErsLocaleTestBase implements LocaleTestingSetupAndTeardown {
@Mock
AndroidPreferencesConfiguration mockConfiguration;
private static final Locale[] locales = new Locale[] {
new Locale("en", "US"),
new Locale("ar", "SA"),
new Locale("ja", "JP", "JP"),
new Locale("fr", "FR")
};
@Rule
public ApplyLocalesRule applyLocalesRule = new ApplyLocalesRule(locales);
protected static final String SDK_VERSION = "2.1.test";
protected static final String SDK_NAME = "AmazonAnalyticsSDK";
protected static final String UNIQUE_ID = "BEEFBEEF-BEEF-BEEF-BEEF-BEEFBEEFBEEF";
protected PinpointContext context;
protected PinpointManager instance;
@Override
public void setupForRepeatedTestCase() {
Context mockAndroidContext = new ContextWithPermissions(new Activity());
AWSCredentialsProvider provider = new AWSCredentialsProvider() {
AWSCredentials creds = new AnonymousAWSCredentials();
@Override
public AWSCredentials getCredentials() {
return creds;
}
@Override
public void refresh() {
};
};
mockConfiguration = mock(AndroidPreferencesConfiguration.class);
PinpointConfiguration options = new PinpointConfiguration(mockAndroidContext, UNIQUE_ID, Regions.US_EAST_1, provider);
context = new AnalyticsContextBuilder()
.withSdkInfo(SDK_NAME, SDK_VERSION)
.withUniqueIdValue(UNIQUE_ID)
.withContext(Robolectric.application.getApplicationContext())
.withSystem(new MockSystem("HELLO.world"))
.withConfiguration(mockConfiguration)
.build();
AnalyticsClient analyticsClient = new AnalyticsClient(context);
TargetingClient targetingClient = new TargetingClient(context);
context.setAnalyticsClient(analyticsClient);
context.setTargetingClient(targetingClient);
SessionClient isc = new SessionClient(context);
PinpointConfiguration config = new PinpointConfiguration(mockAndroidContext, UNIQUE_ID, Regions.US_EAST_1, provider);
instance = new PinpointManager(config);
}
@Override
public void teardownForRepeatedTestCase() {
((MockSystem) context.getSystem()).reset();
}
}