forked from upstream-mirrors/OpenTracks
Code cleanup: MenuItemsTest
This commit is contained in:
+138
-127
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user