package com.appdynamics.gasp.robotium;
import android.app.Activity;
import android.test.ActivityInstrumentationTestCase2;
import com.appdynamics.demo.gasp.R;
import com.appdynamics.demo.gasp.activity.GaspDataActivity;
import com.appdynamics.demo.gasp.activity.LocationsActivity;
import com.appdynamics.demo.gasp.activity.SetPreferencesActivity;
import com.appdynamics.demo.gasp.activity.TwitterStreamActivity;
import com.jayway.android.robotium.solo.Solo;
/**
* Copyright (c) 2013 Mark Prichard
* <p/>
* 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
* <p/>
* http://www.apache.org/licenses/LICENSE-2.0
* <p/>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License 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.
*/
public class NavigationTest extends ActivityInstrumentationTestCase2<LocationsActivity> {
private Solo solo;
public NavigationTest() {
super(LocationsActivity.class);
}
@Override
public void setUp() throws Exception {
solo = new Solo(getInstrumentation(), getActivity());
}
/**
* Start Activity from Action Bar
* @param resId Resource id for the Activity
* @param to Activity subclass to start
*/
private void actionBarActivity(int resId, Class<? extends Activity> to) {
solo.clickOnActionBarItem(resId);
solo.waitForActivity(to, 5000);
solo.assertCurrentActivity("Action Bar: " + to.getClass().getName(), to);
}
/**
* Start Activity from Options Menu
* @param text Menu item text
* @param to Activity subclass to start
*/
private void optionsMenuActivity(String text, Class<? extends Activity> to) {
solo.clickOnMenuItem(text);
solo.waitForActivity(to, 5000);
solo.assertCurrentActivity("Action Bar: " + to.getClass().getName(), to);
}
/**
* Simulate Action Bar Home click
* @param to Parent Activity
*/
private void actionBarHome(Class<? extends Activity> to) {
solo.clickOnActionBarHomeButton();
solo.waitForActivity(to, 5000);
solo.assertCurrentActivity("Action Bar Home", to);
}
/**
* Simulate Hardware back button press
* @param to Parent Activity
*/
private void backButton(Class<? extends Activity> to) {
solo.goBack();
solo.waitForActivity(to, 5000);
solo.assertCurrentActivity("Back: " + to.getClass().getName(), to);
}
public void testTwitterNavigation() {
actionBarActivity(R.id.gasp_menu_twitter, TwitterStreamActivity.class);
backButton(LocationsActivity.class);
}
public void testSettingsNavigation() {
optionsMenuActivity(solo.getString(R.string.gasp_settings), SetPreferencesActivity.class);
backButton(LocationsActivity.class);
}
public void testGaspDataBackNavigation() {
optionsMenuActivity(solo.getString(R.string.gasp_data), GaspDataActivity.class);
backButton(LocationsActivity.class);
}
public void testGaspDataHomeNavigation() {
optionsMenuActivity(solo.getString(R.string.gasp_data), GaspDataActivity.class);
actionBarHome(LocationsActivity.class);
}
/*
public void testRestaurantsNavigation() {
optionsMenuActivity(solo.getString(R.string.gasp_restaurants_data), RestaurantListActivity.class);
backButton(LocationsActivity.class);
}
public void testReviewsNavigation() {
optionsMenuActivity(solo.getString(R.string.gasp_reviews_data), ReviewListActivity.class);
backButton(LocationsActivity.class);
}
public void testUsersNavigation() {
optionsMenuActivity(solo.getString(R.string.gasp_users_data), UserListActivity.class);
backButton(LocationsActivity.class);
}
*/
@Override
public void tearDown() throws Exception {
solo.finishOpenedActivities();
}
}