forked from upstream-mirrors/OpenTracks
Change test code of ChooseMapAsyncTaskTest.
This commit is contained in:
@@ -75,19 +75,32 @@ public class ChooseMapAsyncTask extends AsyncTask<Void, Integer, Boolean> {
|
|||||||
private ArrayList<String> mapIds;
|
private ArrayList<String> mapIds;
|
||||||
private ArrayList<MapsMapMetadata> mapData;
|
private ArrayList<MapsMapMetadata> mapData;
|
||||||
|
|
||||||
public ChooseMapAsyncTask(ChooseMapActivity activity, Account account) {
|
public ChooseMapAsyncTask(ChooseMapActivity activity, Account account) {
|
||||||
this.activity = activity;
|
this(activity, account, activity.getApplicationContext(),
|
||||||
this.account = account;
|
GDataClientFactory.getGDataClient(activity
|
||||||
|
.getApplicationContext()), new MapsClient(
|
||||||
|
GDataClientFactory.getGDataClient(activity
|
||||||
|
.getApplicationContext()),
|
||||||
|
new XmlMapsGDataParserFactory(
|
||||||
|
new AndroidXmlParserFactory())));
|
||||||
|
}
|
||||||
|
|
||||||
context = activity.getApplicationContext();
|
/**
|
||||||
gDataClient = GDataClientFactory.getGDataClient(context);
|
* Creates this constructor for test.
|
||||||
mapsClient = new MapsClient(
|
*/
|
||||||
gDataClient, new XmlMapsGDataParserFactory(new AndroidXmlParserFactory()));
|
public ChooseMapAsyncTask(ChooseMapActivity activity, Account account,
|
||||||
|
Context context, GDataClient gDataClient, MapsClient mapsClient) {
|
||||||
|
this.activity = activity;
|
||||||
|
this.account = account;
|
||||||
|
|
||||||
canRetry = true;
|
this.context = context;
|
||||||
completed = false;
|
this.gDataClient = gDataClient;
|
||||||
success = false;
|
this.mapsClient = mapsClient;
|
||||||
}
|
|
||||||
|
canRetry = true;
|
||||||
|
completed = false;
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the activity associated with this AyncTask.
|
* Sets the activity associated with this AyncTask.
|
||||||
|
|||||||
+92
-25
@@ -15,11 +15,18 @@
|
|||||||
*/
|
*/
|
||||||
package com.google.android.apps.mytracks.io.maps;
|
package com.google.android.apps.mytracks.io.maps;
|
||||||
|
|
||||||
|
import com.google.android.apps.mytracks.io.gdata.maps.MapsClient;
|
||||||
|
import com.google.android.apps.mytracks.io.gdata.maps.XmlMapsGDataParserFactory;
|
||||||
|
import com.google.android.common.gdata.AndroidXmlParserFactory;
|
||||||
import com.google.android.testing.mocking.AndroidMock;
|
import com.google.android.testing.mocking.AndroidMock;
|
||||||
|
import com.google.android.testing.mocking.UsesMocks;
|
||||||
|
import com.google.wireless.gdata.client.GDataClient;
|
||||||
|
|
||||||
import android.accounts.Account;
|
import android.accounts.Account;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests {@link ChooseMapAsyncTask}.
|
* Tests {@link ChooseMapAsyncTask}.
|
||||||
*
|
*
|
||||||
@@ -29,8 +36,8 @@ public class ChooseMapAsyncTaskTest extends AndroidTestCase {
|
|||||||
|
|
||||||
private ChooseMapActivity chooseMapActivityMock;
|
private ChooseMapActivity chooseMapActivityMock;
|
||||||
private Account account;
|
private Account account;
|
||||||
private final String ACCOUNT_NAME = "AccountName";
|
private static final String ACCOUNT_NAME = "AccountName";
|
||||||
private final String ACCOUNT_TYPE = "AccountType";
|
private static final String ACCOUNT_TYPE = "AccountType";
|
||||||
private boolean getMapsStatus = false;
|
private boolean getMapsStatus = false;
|
||||||
|
|
||||||
public class ChooseMapAsyncTaskMock extends ChooseMapAsyncTask {
|
public class ChooseMapAsyncTaskMock extends ChooseMapAsyncTask {
|
||||||
@@ -51,11 +58,31 @@ public class ChooseMapAsyncTaskTest extends AndroidTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests the method {@link ChooseMapAsyncTask#setActivity(ChooseMapActivity)}
|
* Tests {@link ChooseMapAsyncTask#execute(Void...)} and makes sure
|
||||||
* when the task is completed.
|
* {@link ChooseMapActivity#showProgressDialog()} will be run.
|
||||||
|
*/
|
||||||
|
@UsesMocks({ ChooseMapActivity.class, GDataClient.class, MapsClient.class })
|
||||||
|
public void testExecute() {
|
||||||
|
chooseMapActivityMock = AndroidMock.createMock(ChooseMapActivity.class);
|
||||||
|
chooseMapActivityMock.showProgressDialog();
|
||||||
|
GDataClient gDataClient = AndroidMock.createMock(GDataClient.class);
|
||||||
|
MapsClient mapsClient = AndroidMock.createMock(MapsClient.class, gDataClient,
|
||||||
|
new XmlMapsGDataParserFactory(new AndroidXmlParserFactory()));
|
||||||
|
AndroidMock.replay(chooseMapActivityMock, gDataClient, mapsClient);
|
||||||
|
ChooseMapAsyncTask asyncTask = new ChooseMapAsyncTask(chooseMapActivityMock, account,
|
||||||
|
getContext(), gDataClient, mapsClient);
|
||||||
|
asyncTask.execute();
|
||||||
|
AndroidMock.verify(chooseMapActivityMock);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests {@link ChooseMapAsyncTask#setActivity(ChooseMapActivity)} when the
|
||||||
|
* task is completed. Makes sure it calls
|
||||||
|
* {@link ChooseMapActivity#onAsyncTaskCompleted(boolean, ArrayList, ArrayList)}
|
||||||
|
* .
|
||||||
*/
|
*/
|
||||||
public void testSetActivity_completed() {
|
public void testSetActivity_completed() {
|
||||||
createMockObjects();
|
setup();
|
||||||
chooseMapActivityMock.onAsyncTaskCompleted(false, null, null);
|
chooseMapActivityMock.onAsyncTaskCompleted(false, null, null);
|
||||||
AndroidMock.replay(chooseMapActivityMock);
|
AndroidMock.replay(chooseMapActivityMock);
|
||||||
ChooseMapAsyncTask chooseMapAsyncTask = new ChooseMapAsyncTask(chooseMapActivityMock, account);
|
ChooseMapAsyncTask chooseMapAsyncTask = new ChooseMapAsyncTask(chooseMapActivityMock, account);
|
||||||
@@ -65,11 +92,13 @@ public class ChooseMapAsyncTaskTest extends AndroidTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests the method {@link ChooseMapAsyncTask#setActivity(ChooseMapActivity)}
|
* Test {@link ChooseMapAsyncTask#setActivity(ChooseMapActivity)} when the
|
||||||
* when the task is not completed.
|
* task is not completed. Makes sure
|
||||||
|
* {@link ChooseMapActivity#onAsyncTaskCompleted(boolean, ArrayList, ArrayList)}
|
||||||
|
* is not invoked.
|
||||||
*/
|
*/
|
||||||
public void testSetActivity_notCompleted() {
|
public void testSetActivity_notCompleted() {
|
||||||
createMockObjects();
|
setup();
|
||||||
AndroidMock.replay(chooseMapActivityMock);
|
AndroidMock.replay(chooseMapActivityMock);
|
||||||
ChooseMapAsyncTask chooseMapAsyncTask = new ChooseMapAsyncTask(chooseMapActivityMock, account);
|
ChooseMapAsyncTask chooseMapAsyncTask = new ChooseMapAsyncTask(chooseMapActivityMock, account);
|
||||||
chooseMapAsyncTask.setCompleted(false);
|
chooseMapAsyncTask.setCompleted(false);
|
||||||
@@ -78,23 +107,28 @@ public class ChooseMapAsyncTaskTest extends AndroidTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests the method {@link ChooseMapAsyncTask#setActivity(ChooseMapActivity)}
|
* Tests {@link ChooseMapAsyncTask#setActivity(ChooseMapActivity)} when the
|
||||||
* when the activity is null.
|
* activity is null. Makes sure
|
||||||
|
* {@link ChooseMapActivity#onAsyncTaskCompleted(boolean, ArrayList, ArrayList)}
|
||||||
|
* is not invoked.
|
||||||
*/
|
*/
|
||||||
public void testSetActivity_nullActivity() {
|
public void testSetActivity_nullActivity() {
|
||||||
createMockObjects();
|
setup();
|
||||||
AndroidMock.replay(chooseMapActivityMock);
|
AndroidMock.replay(chooseMapActivityMock);
|
||||||
ChooseMapAsyncTask chooseMapAsyncTask = new ChooseMapAsyncTask(chooseMapActivityMock, account);
|
ChooseMapAsyncTask chooseMapAsyncTask = new ChooseMapAsyncTask(chooseMapActivityMock, account);
|
||||||
chooseMapAsyncTask.setCompleted(true);
|
chooseMapAsyncTask.setCompleted(true);
|
||||||
chooseMapAsyncTask.setActivity(null);
|
chooseMapAsyncTask.setActivity(null);
|
||||||
|
AndroidMock.verify(chooseMapActivityMock);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests the method {@link ChooseMapAsyncTask#onPostExecute(Boolean)} when the
|
* Tests the method {@link ChooseMapAsyncTask#onPostExecute(Boolean)} when the
|
||||||
* result is true.
|
* result is true. Makes sure
|
||||||
|
* {@link ChooseMapActivity#onAsyncTaskCompleted(boolean, ArrayList, ArrayList)}
|
||||||
|
* is invoked.
|
||||||
*/
|
*/
|
||||||
public void testOnPostExecute_trueResult() {
|
public void testOnPostExecute_trueResult() {
|
||||||
createMockObjects();
|
setup();
|
||||||
chooseMapActivityMock.onAsyncTaskCompleted(true, null, null);
|
chooseMapActivityMock.onAsyncTaskCompleted(true, null, null);
|
||||||
AndroidMock.replay(chooseMapActivityMock);
|
AndroidMock.replay(chooseMapActivityMock);
|
||||||
ChooseMapAsyncTask chooseMapAsyncTask = new ChooseMapAsyncTask(chooseMapActivityMock, account);
|
ChooseMapAsyncTask chooseMapAsyncTask = new ChooseMapAsyncTask(chooseMapActivityMock, account);
|
||||||
@@ -104,10 +138,12 @@ public class ChooseMapAsyncTaskTest extends AndroidTestCase {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests the method {@link ChooseMapAsyncTask#onPostExecute(Boolean)} when the
|
* Tests the method {@link ChooseMapAsyncTask#onPostExecute(Boolean)} when the
|
||||||
* result is false.
|
* result is false. Makes sure
|
||||||
|
* {@link ChooseMapActivity#onAsyncTaskCompleted(boolean, ArrayList, ArrayList)}
|
||||||
|
* is invoked.
|
||||||
*/
|
*/
|
||||||
public void testOnPostExecute_falseResult() {
|
public void testOnPostExecute_falseResult() {
|
||||||
createMockObjects();
|
setup();
|
||||||
chooseMapActivityMock.onAsyncTaskCompleted(false, null, null);
|
chooseMapActivityMock.onAsyncTaskCompleted(false, null, null);
|
||||||
AndroidMock.replay(chooseMapActivityMock);
|
AndroidMock.replay(chooseMapActivityMock);
|
||||||
ChooseMapAsyncTask chooseMapAsyncTask = new ChooseMapAsyncTask(chooseMapActivityMock, account);
|
ChooseMapAsyncTask chooseMapAsyncTask = new ChooseMapAsyncTask(chooseMapActivityMock, account);
|
||||||
@@ -116,10 +152,26 @@ public class ChooseMapAsyncTaskTest extends AndroidTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests the method {@link ChooseMapAsyncTas#retryUpload()}.
|
* Tests the method {@link ChooseMapAsyncTask#retryUpload()}. Make sure can
|
||||||
|
* not retry again after have retried once and failed.
|
||||||
*/
|
*/
|
||||||
public void testRetryUpload() throws Exception {
|
public void testRetryUpload() throws Exception {
|
||||||
createMockObjects();
|
setup();
|
||||||
|
AndroidMock.replay(chooseMapActivityMock);
|
||||||
|
ChooseMapAsyncTaskMock chooseMapAsyncTaskTMock = new ChooseMapAsyncTaskMock(
|
||||||
|
chooseMapActivityMock, account);
|
||||||
|
chooseMapAsyncTaskTMock.setCanRetry(false);
|
||||||
|
getMapsStatus = true;
|
||||||
|
assertFalse(chooseMapAsyncTaskTMock.retryUpload());
|
||||||
|
AndroidMock.verify(chooseMapActivityMock);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests the method {@link ChooseMapAsyncTask#retryUpload()}. Make sure can
|
||||||
|
* retry after get maps failed and never retry before.
|
||||||
|
*/
|
||||||
|
public void testRetryUpload_retryOnce() throws Exception {
|
||||||
|
setup();
|
||||||
AndroidMock.replay(chooseMapActivityMock);
|
AndroidMock.replay(chooseMapActivityMock);
|
||||||
ChooseMapAsyncTaskMock chooseMapAsyncTaskTMock = new ChooseMapAsyncTaskMock(
|
ChooseMapAsyncTaskMock chooseMapAsyncTaskTMock = new ChooseMapAsyncTaskMock(
|
||||||
chooseMapActivityMock, account);
|
chooseMapActivityMock, account);
|
||||||
@@ -128,25 +180,40 @@ public class ChooseMapAsyncTaskTest extends AndroidTestCase {
|
|||||||
assertFalse(chooseMapAsyncTaskTMock.retryUpload());
|
assertFalse(chooseMapAsyncTaskTMock.retryUpload());
|
||||||
// Can only retry once.
|
// Can only retry once.
|
||||||
assertFalse(chooseMapAsyncTaskTMock.getCanRetry());
|
assertFalse(chooseMapAsyncTaskTMock.getCanRetry());
|
||||||
|
AndroidMock.verify(chooseMapActivityMock);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests the method {@link ChooseMapAsyncTask#retryUpload()}. Make sure will
|
||||||
|
* not retry after get maps successfully.
|
||||||
|
*/
|
||||||
|
public void testRetryUpload_successGetMaps() throws Exception {
|
||||||
|
setup();
|
||||||
|
AndroidMock.replay(chooseMapActivityMock);
|
||||||
|
ChooseMapAsyncTaskMock chooseMapAsyncTaskTMock = new ChooseMapAsyncTaskMock(
|
||||||
|
chooseMapActivityMock, account);
|
||||||
chooseMapAsyncTaskTMock.setCanRetry(true);
|
chooseMapAsyncTaskTMock.setCanRetry(true);
|
||||||
getMapsStatus = true;
|
getMapsStatus = true;
|
||||||
assertTrue(chooseMapAsyncTaskTMock.retryUpload());
|
assertTrue(chooseMapAsyncTaskTMock.retryUpload());
|
||||||
// Can only retry once.
|
// Can only retry once.
|
||||||
assertFalse(chooseMapAsyncTaskTMock.getCanRetry());
|
assertFalse(chooseMapAsyncTaskTMock.getCanRetry());
|
||||||
|
|
||||||
chooseMapAsyncTaskTMock.setCanRetry(false);
|
|
||||||
getMapsStatus = true;
|
|
||||||
assertFalse(chooseMapAsyncTaskTMock.retryUpload());
|
|
||||||
AndroidMock.verify(chooseMapActivityMock);
|
AndroidMock.verify(chooseMapActivityMock);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initials chooseMapActivityMock and account for test.
|
* Initials setup for test.
|
||||||
*/
|
*/
|
||||||
private void createMockObjects() {
|
void setup() {
|
||||||
chooseMapActivityMock = AndroidMock.createMock(ChooseMapActivity.class);
|
setupChooseMapActivityMock();
|
||||||
account = new Account(ACCOUNT_NAME, ACCOUNT_TYPE);
|
account = new Account(ACCOUNT_NAME, ACCOUNT_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a mock object of ChooseMapActivity.
|
||||||
|
*/
|
||||||
|
@UsesMocks(ChooseMapActivity.class)
|
||||||
|
private void setupChooseMapActivityMock() {
|
||||||
|
chooseMapActivityMock = AndroidMock.createMock(ChooseMapActivity.class);
|
||||||
// This is used in the constructor of ChooseMapAsyncTask.
|
// This is used in the constructor of ChooseMapAsyncTask.
|
||||||
AndroidMock.expect(chooseMapActivityMock.getApplicationContext()).andReturn(getContext());
|
AndroidMock.expect(chooseMapActivityMock.getApplicationContext()).andReturn(getContext());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user