forked from upstream-mirrors/OpenTracks
Add code to drop the maps data, fusion table table of a track after send it Google. Change some code to make end-to-end tests run more stable.
This commit is contained in:
+3
-1
@@ -124,7 +124,7 @@ public class CreateAndSendTrackTest extends ActivityInstrumentationTestCase2<Tra
|
||||
.getString(R.string.generic_progress_title)));
|
||||
// Waiting the send is finish.
|
||||
while (EndToEndTestUtils.SOLO.waitForText(activityMyTracks
|
||||
.getString(R.string.generic_progress_title), 1, 500)) {
|
||||
.getString(R.string.generic_progress_title), 1, 2000)) {
|
||||
}
|
||||
|
||||
// Check whether the result dialog is display.
|
||||
@@ -136,6 +136,8 @@ public class CreateAndSendTrackTest extends ActivityInstrumentationTestCase2<Tra
|
||||
assertTrue(GoogleUtils.searchMapByTitle(EndToEndTestUtils.trackName, activityMyTracks));
|
||||
assertTrue(GoogleUtils.searchFusionTableByTitle(EndToEndTestUtils.TRACK_NAME_PREFIX, activityMyTracks));
|
||||
assertTrue(GoogleUtils.searchTrackTitleInSpreadsheet(EndToEndTestUtils.trackName, activityMyTracks, "My Tracks-" + EndToEndTestUtils.DEFAULTACTIVITY));
|
||||
GoogleUtils.dropMaps(EndToEndTestUtils.trackName, activityMyTracks);
|
||||
GoogleUtils.dropFusionTables(EndToEndTestUtils.trackName, activityMyTracks);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -359,12 +359,15 @@ public class EndToEndTestUtils {
|
||||
+ System.currentTimeMillis();
|
||||
SOLO.sendKey(KeyEvent.KEYCODE_DEL);
|
||||
SOLO.enterText(0, trackName);
|
||||
SOLO.clickOnEditText(1);
|
||||
SOLO.sendKey(KeyEvent.KEYCODE_DEL);
|
||||
SOLO.enterText(1, DEFAULTACTIVITY);
|
||||
if(!EndToEndTestUtils.isEmulator) {
|
||||
// Close soft keyboard.
|
||||
EndToEndTestUtils.SOLO.goBack();
|
||||
}
|
||||
SOLO.clickLongOnText(activityMytracks.getString(R.string.generic_save));
|
||||
instrumentation.waitForIdleSync();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -50,6 +50,7 @@ import android.content.Context;
|
||||
import android.util.Log;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Locale;
|
||||
@@ -74,6 +75,9 @@ public class GoogleUtils {
|
||||
* @return true means set successfully
|
||||
*/
|
||||
private static boolean getMaps(Context context) {
|
||||
|
||||
account = AccountManager.get(context).getAccountsByType(
|
||||
Constants.ACCOUNT_TYPE)[0];
|
||||
// Reset the per request states
|
||||
authToken = null;
|
||||
mapIds = new ArrayList<String>();
|
||||
@@ -118,8 +122,6 @@ public class GoogleUtils {
|
||||
* @return true means find the map
|
||||
*/
|
||||
static boolean searchMapByTitle(String title, Activity activity) {
|
||||
account = AccountManager.get(activity.getApplicationContext()).getAccountsByType(
|
||||
Constants.ACCOUNT_TYPE)[0];
|
||||
if (getMaps(activity.getApplicationContext())) {
|
||||
for (MapsMapMetadata oneData : mapData) {
|
||||
if (oneData.getTitle().indexOf(title) > -1) {
|
||||
@@ -129,6 +131,36 @@ public class GoogleUtils {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Drops map which contain the string in title and is created by My Tracks on Google Maps.
|
||||
*
|
||||
* @param title the title of track to drop
|
||||
* @param activity activity to get context
|
||||
*/
|
||||
static void dropMaps(String title, Activity activity) {
|
||||
Context context = activity.getApplicationContext();
|
||||
// Get all maps at first.
|
||||
getMaps(context);
|
||||
|
||||
// Drop maps.
|
||||
MapsClient mapsClient = new MapsClient(GDataClientFactory.getGDataClient(context),
|
||||
new XmlMapsGDataParserFactory(new AndroidXmlParserFactory()));
|
||||
for (MapsMapMetadata oneData : mapData) {
|
||||
// Only drop maps created by My Tracks.
|
||||
if (oneData.getDescription().indexOf("My Tracks") > -1 && oneData.getTitle().indexOf(title) > -1) {
|
||||
try {
|
||||
account = AccountManager.get(context).getAccountsByType(Constants.ACCOUNT_TYPE)[0];
|
||||
authToken = AccountManager.get(context).blockingGetAuthToken(account,
|
||||
MapsConstants.SERVICE_NAME, false);
|
||||
|
||||
mapsClient.deleteEntry(oneData.getGDataEditUri(), authToken);
|
||||
} catch (Exception e) {
|
||||
Log.d(LOG_TAG, "Unable to drop map", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches a doc in user's Google Documents.
|
||||
@@ -217,7 +249,6 @@ public class GoogleUtils {
|
||||
*/
|
||||
static boolean searchFusionTableByTitle(String title, Activity activity) {
|
||||
Context context = activity.getApplicationContext();
|
||||
account = AccountManager.get(context).getAccountsByType(Constants.ACCOUNT_TYPE)[0];
|
||||
try {
|
||||
HttpResponse response = sendFusionTableQuery("SHOW TABLES", context);
|
||||
// We can use index of method to check new table for every track name is unique.
|
||||
@@ -230,6 +261,31 @@ public class GoogleUtils {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove one fusion table which contain the string in title of current user.
|
||||
*
|
||||
* @param title the title of a track to drop
|
||||
* @param activity to get context
|
||||
*/
|
||||
static void dropFusionTables(String title, Activity activity) {
|
||||
Context context = activity.getApplicationContext();
|
||||
|
||||
HttpResponse response = sendFusionTableQuery("SHOW TABLES", context);
|
||||
String[] rowsTable;
|
||||
try {
|
||||
rowsTable = response.parseAsString().split("\n");
|
||||
for (String string : rowsTable) {
|
||||
// If the first column is all figure, it is the table id.
|
||||
String regularExpression = "^[0-9]*$";
|
||||
if (string.split(",")[0].matches(regularExpression) && string.indexOf(title) > -1) {
|
||||
sendFusionTableQuery("DROP TABLE " + string.split(",")[0], context);
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
Log.d(LOG_TAG, "Failed when delete all fusion tables.", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends query to operate fusion tables.
|
||||
*
|
||||
|
||||
@@ -91,9 +91,11 @@ public class SettingTest extends ActivityInstrumentationTestCase2<TrackListActiv
|
||||
EndToEndTestUtils.getButtonOnScreen(activityMyTracks.getString(R.string.generic_ok), true, true);
|
||||
|
||||
// Check settings.
|
||||
// Add following scroll up for a bug of Robotium.
|
||||
EndToEndTestUtils.SOLO.scrollUp();
|
||||
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_stats_tab));
|
||||
EndToEndTestUtils.SOLO.waitForText(activityMyTracks
|
||||
.getString(R.string.settings_stats_units_title), 1, 20000);
|
||||
assertTrue(EndToEndTestUtils.SOLO.waitForText(activityMyTracks
|
||||
.getString(R.string.settings_stats_units_title), 1, 20000));
|
||||
displayCheckBoxs = EndToEndTestUtils.SOLO.getCurrentCheckBoxes();
|
||||
assertEquals(useMetric, displayCheckBoxs.get(0).isChecked());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user