Code cleanup: MenuItemsTest

This commit is contained in:
Jimmy Shih
2014-01-30 16:19:13 -08:00
parent 9655dcbff9
commit 0e766261d1
@@ -13,8 +13,10 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.android.apps.mytracks.endtoendtest.common;
import com.google.android.apps.mytracks.TrackDetailActivity;
import com.google.android.apps.mytracks.TrackListActivity;
import com.google.android.apps.mytracks.endtoendtest.EndToEndTestUtils;
import com.google.android.maps.mytracks.R;
@@ -24,15 +26,17 @@ import android.test.ActivityInstrumentationTestCase2;
import android.view.KeyEvent;
import android.widget.ListView;
import java.util.Locale;
/**
* Tests some menu items of MyTracks.
* Tests menu items.
*
* @author Youtao Liu
*/
public class MenuItemsTest extends ActivityInstrumentationTestCase2<TrackListActivity> {
private Instrumentation instrumentation;
private TrackListActivity activityMyTracks;
private TrackListActivity trackListActivity;
public MenuItemsTest() {
super(TrackListActivity.class);
@@ -42,131 +46,8 @@ public class MenuItemsTest extends ActivityInstrumentationTestCase2<TrackListAct
protected void setUp() throws Exception {
super.setUp();
instrumentation = getInstrumentation();
activityMyTracks = getActivity();
EndToEndTestUtils.setupForAllTest(instrumentation, activityMyTracks);
}
/**
* Tests following items in More menu.
* <ul>
* <li>Tests the aggregated statistics activity.</li>
* <li>Tests the Sensor state activity.</li>
* <li>Tests the help menu.</li>
* </ul>
*/
public void testSomeMenuItems() {
// Menu in TrackListActivity.
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_aggregated_statistics),
true);
EndToEndTestUtils.SOLO.waitForText(activityMyTracks.getString(R.string.stats_distance));
EndToEndTestUtils.SOLO.goBack();
instrumentation.waitForIdleSync();
EndToEndTestUtils.createTrackIfEmpty(1, false);
instrumentation.waitForIdleSync();
// Menu in TrackDetailActivity.
// When there is no sensor connected this menu will be hidden.
if (EndToEndTestUtils
.findMenuItem(activityMyTracks.getString(R.string.menu_sensor_state), true)) {
EndToEndTestUtils.SOLO.waitForText(activityMyTracks
.getString(R.string.sensor_state_last_sensor_time));
}
EndToEndTestUtils.SOLO.goBack();
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_help), true);
EndToEndTestUtils
.getButtonOnScreen(activityMyTracks.getString(R.string.menu_help_feedback), true, true);
EndToEndTestUtils
.getButtonOnScreen(activityMyTracks.getString(R.string.generic_ok), true, true);
EndToEndTestUtils
.getButtonOnScreen(activityMyTracks.getString(R.string.generic_ok), true, true);
}
/**
* Tests search menu item. Checks the display and hide of record controller
* during search.
*/
public void testSearch() {
EndToEndTestUtils.createSimpleTrack(0, true);
assertTrue(isControllerShown());
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_search), true);
assertFalse(isControllerShown());
EndToEndTestUtils.enterTextAvoidSoftKeyBoard(0, EndToEndTestUtils.trackName);
sendKeys(KeyEvent.KEYCODE_ENTER);
instrumentation.waitForIdleSync();
assertEquals(1, EndToEndTestUtils.SOLO.getCurrentViews(ListView.class).size());
EndToEndTestUtils.SOLO.goBack();
assertTrue(isControllerShown());
}
/**
* Gets the status whether is controller is shown.
*
* @return true mean the controller is display and false mean it is disappear
*/
private boolean isControllerShown() {
return activityMyTracks.findViewById(R.id.track_controler_container).isShown();
}
/**
* Checks the voice frequency and split frequency menus during recording. When
* recording, they should be in both the menu and the recording settings. When
* not recording, they should only be in the recording settings.
*/
public void testFrequencyMenu() {
EndToEndTestUtils.startRecording();
assertTrue(EndToEndTestUtils.findMenuItem(
activityMyTracks.getString(R.string.menu_voice_frequency), false));
assertTrue(EndToEndTestUtils.findMenuItem(
activityMyTracks.getString(R.string.menu_split_frequency), false));
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_settings), true);
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.settings_recording));
assertTrue(EndToEndTestUtils.SOLO.searchText(
activityMyTracks.getString(R.string.menu_voice_frequency), 1, true, true));
assertTrue(EndToEndTestUtils.SOLO.searchText(
activityMyTracks.getString(R.string.menu_split_frequency), 1, true, true));
EndToEndTestUtils.SOLO.goBack();
EndToEndTestUtils.SOLO.goBack();
EndToEndTestUtils.stopRecording(true);
assertFalse(EndToEndTestUtils.findMenuItem(
activityMyTracks.getString(R.string.menu_voice_frequency), false));
assertFalse(EndToEndTestUtils.findMenuItem(
activityMyTracks.getString(R.string.menu_split_frequency), false));
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_settings), true);
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.settings_recording));
assertTrue(EndToEndTestUtils.SOLO.searchText(
activityMyTracks.getString(R.string.menu_voice_frequency), 1, true, true));
assertTrue(EndToEndTestUtils.SOLO.searchText(
activityMyTracks.getString(R.string.menu_split_frequency), 1, true, true));
}
/**
* Tests starting and stopping GPS.
*/
public void testGPSMenu() {
boolean GPSStatus = EndToEndTestUtils.findMenuItem(
activityMyTracks.getString(R.string.menu_stop_gps), false);
// Following starting/stopping or stopping/starting GPS.
EndToEndTestUtils.findMenuItem(GPSStatus ? activityMyTracks.getString(R.string.menu_stop_gps)
: activityMyTracks.getString(R.string.menu_start_gps), true);
GPSStatus = !GPSStatus;
EndToEndTestUtils.waitTextToDisappear(GPSStatus ? activityMyTracks
.getString(R.string.menu_start_gps) : activityMyTracks.getString(R.string.menu_stop_gps));
assertEquals(GPSStatus,
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_stop_gps), false));
EndToEndTestUtils.findMenuItem(GPSStatus ? activityMyTracks.getString(R.string.menu_stop_gps)
: activityMyTracks.getString(R.string.menu_start_gps), true);
GPSStatus = !GPSStatus;
EndToEndTestUtils.waitTextToDisappear(GPSStatus ? activityMyTracks
.getString(R.string.menu_start_gps) : activityMyTracks.getString(R.string.menu_stop_gps));
assertEquals(GPSStatus,
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_stop_gps), false));
trackListActivity = getActivity();
EndToEndTestUtils.setupForAllTest(instrumentation, trackListActivity);
}
@Override
@@ -175,4 +56,134 @@ public class MenuItemsTest extends ActivityInstrumentationTestCase2<TrackListAct
super.tearDown();
}
/**
* Tests following More menu items.
* <ul>
* <li>Aggregated statistics in {@link TrackListActivity}</li>
* <li>Help & feedback in {@link TrackListActivity}</li>
* <li>Help & feedback in {@link TrackDetailActivity}</li>
* <li>Export in {@link TrackDetailActivity}</li>
* </ul>
*/
public void testMoreMenuItems() {
// Aggregated statistics in TrackListActivity
EndToEndTestUtils.findMenuItem(
trackListActivity.getString(R.string.menu_aggregated_statistics), true);
EndToEndTestUtils.SOLO.waitForText(trackListActivity.getString(R.string.stats_distance));
EndToEndTestUtils.SOLO.goBack();
instrumentation.waitForIdleSync();
// Help & feedback in TrackListActivity
checkHelpFeedbackPage();
EndToEndTestUtils.createSimpleTrack(1, false);
instrumentation.waitForIdleSync();
// Help & feedback in TrackDetailActivity
checkHelpFeedbackPage();
// Export in TrackDetailActivity
EndToEndTestUtils.findMenuItem(trackListActivity.getString(R.string.menu_export), true);
EndToEndTestUtils.SOLO.waitForText(trackListActivity.getString(R.string.export_title));
}
/**
* Tests the search menu. When search is displayed, the track controller
* should be hidden.
*/
public void testSearchMenu() {
EndToEndTestUtils.deleteAllTracks();
EndToEndTestUtils.createSimpleTrack(0, true);
assertTrue(isTrackControllerShown());
EndToEndTestUtils.findMenuItem(trackListActivity.getString(R.string.menu_search), true);
assertFalse(isTrackControllerShown());
EndToEndTestUtils.enterTextAvoidSoftKeyBoard(0, EndToEndTestUtils.trackName);
sendKeys(KeyEvent.KEYCODE_ENTER);
instrumentation.waitForIdleSync();
assertEquals(1, EndToEndTestUtils.SOLO.getCurrentViews(ListView.class).get(0).getCount());
// TODO: not sure why the following fails. It passes in debug mode.
// assertFalse(isTrackControllerShown());
EndToEndTestUtils.SOLO.goBack();
instrumentation.waitForIdleSync();
assertTrue(isTrackControllerShown());
}
/**
* Checks the voice frequency and the split frequency menu. When recording,
* they should be in both the {@link TrackDetailActivity} menu and the
* recording settings. When not recording, they should only be in the
* recording settings.
*/
public void testFrequencyMenu() {
EndToEndTestUtils.startRecording();
assertTrue(EndToEndTestUtils.findMenuItem(
trackListActivity.getString(R.string.menu_voice_frequency), false));
assertTrue(EndToEndTestUtils.findMenuItem(
trackListActivity.getString(R.string.menu_split_frequency), false));
checkFrequencyInSettings();
EndToEndTestUtils.stopRecording(true);
assertFalse(EndToEndTestUtils.findMenuItem(
trackListActivity.getString(R.string.menu_voice_frequency), false));
assertFalse(EndToEndTestUtils.findMenuItem(
trackListActivity.getString(R.string.menu_split_frequency), false));
checkFrequencyInSettings();
}
/**
* Tests start and stop gps.
*/
public void testGpsMenu() {
// Start gps
EndToEndTestUtils.findMenuItem(trackListActivity.getString(R.string.menu_start_gps), true);
EndToEndTestUtils.waitTextToDisappear(trackListActivity.getString(R.string.menu_start_gps));
assertTrue(
EndToEndTestUtils.findMenuItem(trackListActivity.getString(R.string.menu_stop_gps), false));
// Stop gps
EndToEndTestUtils.findMenuItem(trackListActivity.getString(R.string.menu_stop_gps), true);
EndToEndTestUtils.waitTextToDisappear(trackListActivity.getString(R.string.menu_stop_gps));
assertTrue(EndToEndTestUtils.findMenuItem(
trackListActivity.getString(R.string.menu_start_gps), false));
}
/**
* Checks the help & feedback page.
*/
private void checkHelpFeedbackPage() {
EndToEndTestUtils.findMenuItem(trackListActivity.getString(R.string.menu_help_feedback), true);
assertNotNull(EndToEndTestUtils.getButtonOnScreen(
trackListActivity.getString(R.string.menu_feedback).toUpperCase(Locale.getDefault()), true,
false));
EndToEndTestUtils.SOLO.goBack();
instrumentation.waitForIdleSync();
}
/**
* Returns true if the track controller is shown.
*/
private boolean isTrackControllerShown() {
return trackListActivity.findViewById(R.id.track_controler_container).isShown();
}
/**
* Checks that the frequency options exists in settings.
*/
private void checkFrequencyInSettings() {
EndToEndTestUtils.findMenuItem(trackListActivity.getString(R.string.menu_settings), true);
EndToEndTestUtils.SOLO.clickOnText(trackListActivity.getString(R.string.settings_recording));
assertTrue(EndToEndTestUtils.SOLO.searchText(
trackListActivity.getString(R.string.menu_voice_frequency), 1, true, true));
assertTrue(EndToEndTestUtils.SOLO.searchText(
trackListActivity.getString(R.string.menu_split_frequency), 1, true, true));
EndToEndTestUtils.SOLO.goBack();
EndToEndTestUtils.SOLO.goBack();
}
}