Skip to content

Commit ce32505

Browse files
committed
Created a Robolectric unit test replacement for the NearbyActivity test.
1 parent 9a5bff4 commit ce32505

File tree

11 files changed

+100
-39
lines changed

11 files changed

+100
-39
lines changed

app/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ dependencies {
5858

5959
testImplementation 'junit:junit:4.12'
6060
testImplementation 'org.robolectric:robolectric:3.4'
61+
testImplementation 'org.mockito:mockito-all:1.10.19'
6162

6263
testImplementation 'com.squareup.okhttp3:mockwebserver:3.8.1'
6364
androidTestImplementation 'com.squareup.okhttp3:mockwebserver:3.8.1'

app/src/androidTest/java/fr/free/nrw/commons/NearbyActivityTest.java

-30
This file was deleted.

app/src/main/java/fr/free/nrw/commons/CommonsApplication.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
import javax.inject.Inject;
3131

32+
import dagger.android.AndroidInjector;
3233
import dagger.android.DispatchingAndroidInjector;
3334
import dagger.android.HasActivityInjector;
3435
import fr.free.nrw.commons.auth.AccountUtil;
@@ -272,7 +273,7 @@ public void run(AccountManagerFuture<Boolean> accountManagerFuture) {
272273
}
273274

274275
@Override
275-
public DispatchingAndroidInjector<Activity> activityInjector() {
276+
public AndroidInjector<Activity> activityInjector() {
276277
return dispatchingActivityInjector;
277278
}
278279

app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ private void setMapFragment() {
338338
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
339339
Fragment fragment = new NearbyMapFragment();
340340
fragment.setArguments(bundle);
341-
fragmentTransaction.replace(R.id.container, fragment);
341+
fragmentTransaction.replace(R.id.container, fragment, fragment.getClass().getSimpleName());
342342
fragmentTransaction.commitAllowingStateLoss();
343343
}
344344

@@ -349,7 +349,7 @@ private void setListFragment() {
349349
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
350350
Fragment fragment = new NearbyListFragment();
351351
fragment.setArguments(bundle);
352-
fragmentTransaction.replace(R.id.container, fragment);
352+
fragmentTransaction.replace(R.id.container, fragment, fragment.getClass().getSimpleName());
353353
fragmentTransaction.commitAllowingStateLoss();
354354
}
355355

app/src/test/java/fr/free/nrw/commons/MediaTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import static org.junit.Assert.assertThat;
1010

1111
@RunWith(RobolectricTestRunner.class)
12-
@Config(constants = BuildConfig.class, sdk = 21)
12+
@Config(constants = BuildConfig.class, sdk = 21, application = TestCommonsApplication.class)
1313
public class MediaTest {
1414
@Test
1515
public void displayTitleShouldStripExtension() {

app/src/test/java/fr/free/nrw/commons/NearbyControllerTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import static org.junit.Assert.assertThat;
1919

2020
@RunWith(RobolectricTestRunner.class)
21-
@Config(constants = BuildConfig.class, sdk = 21)
21+
@Config(constants = BuildConfig.class, sdk = 21, application = TestCommonsApplication.class)
2222
public class NearbyControllerTest {
2323

2424
@Test

app/src/test/java/fr/free/nrw/commons/PageTitleTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import static org.junit.Assert.assertThat;
1212

1313
@RunWith(RobolectricTestRunner.class)
14-
@Config(constants = BuildConfig.class, sdk = 21)
14+
@Config(constants = BuildConfig.class, sdk = 21, application = TestCommonsApplication.class)
1515
public class PageTitleTest {
1616
@Test
1717
public void displayTextShouldNotBeUnderscored() {
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,40 @@
11
package fr.free.nrw.commons;
22

3+
import android.app.Activity;
4+
35
import com.squareup.leakcanary.RefWatcher;
46

5-
// This class is automatically discovered by Robolectric
7+
import org.mockito.Mock;
8+
import org.mockito.MockitoAnnotations;
9+
10+
import dagger.android.AndroidInjector;
11+
import fr.free.nrw.commons.nearby.NearbyPlaces;
12+
613
public class TestCommonsApplication extends CommonsApplication {
14+
@Mock
15+
private AndroidInjector<Activity> mockInjector;
16+
@Mock
17+
private NearbyPlaces mockNearbyPlaces;
18+
19+
@Override
20+
public void onCreate() {
21+
super.onCreate();
22+
MockitoAnnotations.initMocks(this);
23+
}
24+
725
@Override
826
protected RefWatcher setupLeakCanary() {
927
// No leakcanary in unit tests.
1028
return RefWatcher.DISABLED;
1129
}
30+
31+
@Override
32+
public AndroidInjector<Activity> activityInjector() {
33+
return mockInjector;
34+
}
35+
36+
@Override
37+
public synchronized NearbyPlaces getNearbyPlaces() {
38+
return mockNearbyPlaces;
39+
}
1240
}

app/src/test/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.Set;
1818

1919
import fr.free.nrw.commons.BuildConfig;
20+
import fr.free.nrw.commons.TestCommonsApplication;
2021
import io.reactivex.observers.TestObserver;
2122
import okhttp3.HttpUrl;
2223
import okhttp3.mockwebserver.MockResponse;
@@ -28,7 +29,7 @@
2829
import static org.junit.Assert.assertTrue;
2930

3031
@RunWith(RobolectricTestRunner.class)
31-
@Config(constants = BuildConfig.class, sdk = 21)
32+
@Config(constants = BuildConfig.class, sdk = 21, application = TestCommonsApplication.class)
3233
public class ApacheHttpClientMediaWikiApiTest {
3334

3435
private ApacheHttpClientMediaWikiApi testObject;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package fr.free.nrw.commons.nearby;
2+
3+
import android.app.Activity;
4+
import android.support.v4.app.Fragment;
5+
6+
import org.junit.Before;
7+
import org.junit.Test;
8+
import org.junit.runner.RunWith;
9+
import org.mockito.Mock;
10+
import org.mockito.Mockito;
11+
import org.mockito.MockitoAnnotations;
12+
import org.robolectric.Robolectric;
13+
import org.robolectric.RobolectricTestRunner;
14+
import org.robolectric.RuntimeEnvironment;
15+
import org.robolectric.android.controller.ActivityController;
16+
import org.robolectric.annotation.Config;
17+
18+
import dagger.android.AndroidInjector;
19+
import fr.free.nrw.commons.BuildConfig;
20+
import fr.free.nrw.commons.TestCommonsApplication;
21+
import fr.free.nrw.commons.location.LatLng;
22+
import fr.free.nrw.commons.location.LocationServiceManager;
23+
24+
import static junit.framework.Assert.assertNotNull;
25+
import static org.mockito.Matchers.isA;
26+
import static org.mockito.Mockito.when;
27+
28+
@RunWith(RobolectricTestRunner.class)
29+
@Config(constants = BuildConfig.class, sdk = 21, application = TestCommonsApplication.class)
30+
public class NearbyActivityTest {
31+
32+
private static final LatLng ST_LOUIS_MO_LAT_LNG = new LatLng(38.627003, -90.199402, 0);
33+
34+
@Mock
35+
LocationServiceManager mockLocationManager;
36+
37+
private ActivityController<NearbyActivity> activityController;
38+
private NearbyActivity nearbyActivity;
39+
40+
@Before
41+
public void setUp() throws Exception {
42+
MockitoAnnotations.initMocks(this);
43+
44+
AndroidInjector<Activity> injector = ((TestCommonsApplication) RuntimeEnvironment.application).activityInjector();
45+
Mockito.doNothing().when(injector).inject(isA(NearbyActivity.class));
46+
when(mockLocationManager.getLastLocation()).thenReturn(ST_LOUIS_MO_LAT_LNG);
47+
48+
activityController = Robolectric.buildActivity(NearbyActivity.class);
49+
nearbyActivity = activityController.get();
50+
nearbyActivity.locationManager = mockLocationManager;
51+
}
52+
53+
@Test
54+
public void activityLaunchesAndShowsList() {
55+
activityController.create().resume().visible();
56+
assertNotNull(nearbyActivity.getSupportFragmentManager().findFragmentByTag("NearbyListFragment"));
57+
}
58+
59+
}

app/src/test/java/fr/free/nrw/commons/nearby/NearbyAdapterFactoryTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,14 @@
2020

2121
import fr.free.nrw.commons.BuildConfig;
2222
import fr.free.nrw.commons.R;
23+
import fr.free.nrw.commons.TestCommonsApplication;
2324
import fr.free.nrw.commons.location.LatLng;
2425

2526
import static org.junit.Assert.assertEquals;
2627
import static org.junit.Assert.assertNotNull;
2728

2829
@RunWith(RobolectricTestRunner.class)
29-
@Config(constants = BuildConfig.class, sdk = 21)
30+
@Config(constants = BuildConfig.class, sdk = 21, application = TestCommonsApplication.class)
3031
public class NearbyAdapterFactoryTest {
3132

3233
private static final Place PLACE = new Place("name", Place.Description.AIRPORT,

0 commit comments

Comments
 (0)