From 7decb2fab0d1468e2004b596d5f4f4dc025ccea0 Mon Sep 17 00:00:00 2001 From: youtaol Date: Wed, 7 Nov 2012 15:26:54 +0800 Subject: [PATCH] Split the CreateAndSendTrackTest to two files. Add a test case to test the send same track(the activity string of this track contains special character) to Google twice. --- ...endTrackTest.java => CreateTrackTest.java} | 87 +--------- .../endtoendtest/EndToEndTestUtils.java | 22 ++- .../endtoendtest/ExportAndImportTest.java | 2 +- .../mytracks/endtoendtest/GoogleUtils.java | 43 ++++- .../mytracks/endtoendtest/MenuItemsTest.java | 2 +- .../endtoendtest/SendToGoogleTest.java | 160 ++++++++++++++++++ .../mytracks/endtoendtest/SettingTest.java | 4 +- 7 files changed, 223 insertions(+), 97 deletions(-) rename MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/{CreateAndSendTrackTest.java => CreateTrackTest.java} (73%) create mode 100644 MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/SendToGoogleTest.java diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/CreateAndSendTrackTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/CreateTrackTest.java similarity index 73% rename from MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/CreateAndSendTrackTest.java rename to MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/CreateTrackTest.java index 8926f4e0b..af01f1fd1 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/CreateAndSendTrackTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/CreateTrackTest.java @@ -30,13 +30,13 @@ import java.util.ArrayList; * * @author Youtao Liu */ -public class CreateAndSendTrackTest extends ActivityInstrumentationTestCase2 { +public class CreateTrackTest extends ActivityInstrumentationTestCase2 { private static final String WAYPOINT_NAME = "testWaypoint"; private Instrumentation instrumentation; private TrackListActivity activityMyTracks; - public CreateAndSendTrackTest() { + public CreateTrackTest() { super(TrackListActivity.class); } @@ -83,25 +83,6 @@ public class CreateAndSendTrackTest extends ActivityInstrumentationTestCase2 checkBoxs = EndToEndTestUtils.SOLO.getCurrentCheckBoxes(); - for (int i = 0; i < checkBoxs.size(); i++) { - if (!checkBoxs.get(i).isChecked()) { - EndToEndTestUtils.SOLO.clickOnCheckBox(i); - } - } - - if (checkBoxs.size() < 3) { - EndToEndTestUtils.SOLO.scrollDown(); - checkBoxs = EndToEndTestUtils.SOLO.getCurrentCheckBoxes(); - - // Choose all Google service. - for (int i = 0; i < checkBoxs.size(); i++) { - if (!checkBoxs.get(i).isChecked()) { - EndToEndTestUtils.SOLO.clickOnCheckBox(i); - } - } - } - instrumentation.waitForIdleSync(); - EndToEndTestUtils.getButtonOnScreen(activityMyTracks.getString(R.string.send_google_send_now), - true, true); - - if(!GoogleUtils.isAccountAvailable()) { - return; - } - - // Following check the process of "Send to Google". - assertTrue(EndToEndTestUtils.SOLO.waitForText(activityMyTracks - .getString(R.string.generic_progress_title))); - // Waiting the send is finish. - while (EndToEndTestUtils.SOLO.waitForText( - activityMyTracks.getString(R.string.generic_progress_title), 1, - EndToEndTestUtils.SHORT_WAIT_TIME)) {} - - // Check whether the result dialog is display. - assertTrue(EndToEndTestUtils.SOLO.waitForText(activityMyTracks - .getString(R.string.share_track_share_url))); - EndToEndTestUtils - .getButtonOnScreen(activityMyTracks.getString(R.string.generic_ok), true, true); - - // Check whether all data is correct on Google Map, Documents, and - // Spreadsheet. - assertTrue(GoogleUtils.deleteMap(EndToEndTestUtils.trackName, activityMyTracks)); - assertTrue(GoogleUtils.searchFusionTableByTitle(EndToEndTestUtils.TRACK_NAME_PREFIX, - activityMyTracks)); - assertTrue(GoogleUtils.deleteTrackInSpreadSheet(EndToEndTestUtils.trackName, activityMyTracks)); - assertTrue(GoogleUtils.dropFusionTables(EndToEndTestUtils.trackName, activityMyTracks)); - } - /** * Creates a way point and a split maker during track recording. */ @@ -305,4 +230,4 @@ public class CreateAndSendTrackTest extends ActivityInstrumentationTestCase2 searchAllSpreadsheetByTitle(String title, Activity activity) { + List docs = new ArrayList(); + Context context = activity.getApplicationContext(); + DocumentsClient documentsClient = new DocumentsClient( + GDataClientFactory.getGDataClient(context), + new XmlDocsGDataParserFactory(new AndroidXmlParserFactory())); + + try { + String documentsAuthToken = AccountManager.get(context) + .blockingGetAuthToken(getAccount(context), documentsClient.getServiceName(), false); + String uri = String.format(Locale.US, SendDocsUtils.GET_SPREADSHEET_BY_TITLE_URI, + URLEncoder.encode(title, "utf-8")); + GDataParser gDataParser = documentsClient.getParserForFeed(Entry.class, uri, + documentsAuthToken); + gDataParser.init(); + + while (gDataParser.hasMoreData()) { + Entry entry = gDataParser.readNextEntry(null); + String entryTitle = entry.getTitle(); + if (entryTitle.equals(title)) { + docs.add(entry); + } + } + } catch (Exception e) { + Log.d(EndToEndTestUtils.LOG_TAG, "Unable to fetch spreadsheet.", e); + } + return docs; + } + /** * Searches a track title in a spreadsheet. @@ -396,4 +433,4 @@ public class GoogleUtils { return true; } -} +} \ No newline at end of file diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/MenuItemsTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/MenuItemsTest.java index 70747c8f9..2af6d5041 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/MenuItemsTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/MenuItemsTest.java @@ -85,7 +85,7 @@ public class MenuItemsTest extends ActivityInstrumentationTestCase2 { + + private Instrumentation instrumentation; + private TrackListActivity activityMyTracks; + + @TargetApi(15) + public SendToGoogleTest() { + super(TrackListActivity.class); + } + + @Override + protected void setUp() throws Exception { + super.setUp(); + instrumentation = getInstrumentation(); + activityMyTracks = getActivity(); + EndToEndTestUtils.setupForAllTest(instrumentation, activityMyTracks); + } + + /** + * Check all services and send to google. + */ + public void testCreateAndSendTrack_send() { + EndToEndTestUtils.createTrackIfEmpty(1, false); + instrumentation.waitForIdleSync(); + checkSendTrackToGoogle(); + } + + /** + * Check all services and send to google. + */ + public void testCreateAndSendTrack_sendPausedTrack() { + EndToEndTestUtils.deleteAllTracks(); + EndToEndTestUtils.createTrackWithPause(3); + instrumentation.waitForIdleSync(); + checkSendTrackToGoogle(); + } + + /** + * Sends two tracks with same activity. Two tracks should be in the same + * spreadsheet. + */ + public void testSendTwoTracksWithSameActivity() { + String testActivity = "(TestActivity)"; + EndToEndTestUtils.activityType = testActivity; + EndToEndTestUtils.createSimpleTrack(1, false); + sendToGoogle(); + sendToGoogle(); + + List spreadsheetEntry = GoogleUtils.searchAllSpreadsheetByTitle(GoogleUtils.DOCUMENT_NAME_PREFIX + "-" + + EndToEndTestUtils.activityType, activityMyTracks); + assertEquals(1, spreadsheetEntry.size()); + } + + /** + * Checks the process of sending track to google. + */ + private void checkSendTrackToGoogle() { + if (!sendToGoogle()) { + return; + } + // Check whether all data is correct on Google Map, Documents, and + // Spreadsheet. + assertTrue(GoogleUtils.deleteMap(EndToEndTestUtils.trackName, activityMyTracks)); + assertTrue(GoogleUtils.searchFusionTableByTitle(EndToEndTestUtils.TRACK_NAME_PREFIX, + activityMyTracks)); + assertTrue(GoogleUtils.deleteTrackInSpreadSheet(EndToEndTestUtils.trackName, activityMyTracks)); + assertTrue(GoogleUtils.dropFusionTables(EndToEndTestUtils.trackName, activityMyTracks)); + } + + /** + * Sends a track to Google. + * + * @return true means send successfully + */ + private boolean sendToGoogle() { + EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_send_google), true); + EndToEndTestUtils.SOLO.waitForText(activityMyTracks.getString(R.string.send_google_title)); + ArrayList checkBoxs = EndToEndTestUtils.SOLO.getCurrentCheckBoxes(); + for (int i = 0; i < checkBoxs.size(); i++) { + if (!checkBoxs.get(i).isChecked()) { + EndToEndTestUtils.SOLO.clickOnCheckBox(i); + } + } + + if (checkBoxs.size() < 3) { + EndToEndTestUtils.SOLO.scrollDown(); + checkBoxs = EndToEndTestUtils.SOLO.getCurrentCheckBoxes(); + + // Choose all Google service. + for (int i = 0; i < checkBoxs.size(); i++) { + if (!checkBoxs.get(i).isChecked()) { + EndToEndTestUtils.SOLO.clickOnCheckBox(i); + } + } + } + instrumentation.waitForIdleSync(); + EndToEndTestUtils.getButtonOnScreen(activityMyTracks.getString(R.string.send_google_send_now), + true, true); + + if (!GoogleUtils.isAccountAvailable()) { + return false; + } + + // Following check the process of "Send to Google". + assertTrue(EndToEndTestUtils.SOLO.waitForText(activityMyTracks + .getString(R.string.generic_progress_title))); + // Waiting the send is finish. + while (EndToEndTestUtils.SOLO.waitForText( + activityMyTracks.getString(R.string.generic_progress_title), 1, + EndToEndTestUtils.SHORT_WAIT_TIME)) {} + + // Check whether the result dialog is display. + assertTrue(EndToEndTestUtils.SOLO.waitForText(activityMyTracks + .getString(R.string.share_track_share_url))); + EndToEndTestUtils + .getButtonOnScreen(activityMyTracks.getString(R.string.generic_ok), true, true); + return true; + } + + @Override + protected void tearDown() throws Exception { + EndToEndTestUtils.activityType = EndToEndTestUtils.DEFAULTACTIVITYTYPE; + super.tearDown(); + } + +} \ No newline at end of file diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/SettingTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/SettingTest.java index 30a2be078..83aa2c999 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/SettingTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/endtoendtest/SettingTest.java @@ -280,7 +280,7 @@ public class SettingTest extends ActivityInstrumentationTestCase2