Skip to content
This repository was archived by the owner on Oct 3, 2024. It is now read-only.

Commit fdabbe1

Browse files
author
Henrique Faria
committed
Add tests for requestPermissions methods when low API
1 parent af5ab94 commit fdabbe1

File tree

3 files changed

+81
-5
lines changed

3 files changed

+81
-5
lines changed

easypermissions/src/test/java/pub/devrel/easypermissions/EasyPermissionsLowApiTest.java

Lines changed: 77 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,29 @@
22

33
import android.Manifest;
44

5+
import org.junit.Before;
56
import org.junit.Test;
67
import org.junit.runner.RunWith;
8+
import org.mockito.ArgumentCaptor;
9+
import org.mockito.Captor;
10+
import org.mockito.Mockito;
11+
import org.mockito.MockitoAnnotations;
12+
import org.robolectric.Robolectric;
713
import org.robolectric.RobolectricTestRunner;
814
import org.robolectric.RuntimeEnvironment;
915
import org.robolectric.annotation.Config;
16+
import org.robolectric.shadows.ShadowApplication;
17+
import org.robolectric.shadows.support.v4.SupportFragmentController;
18+
19+
import java.util.ArrayList;
20+
21+
import pub.devrel.easypermissions.testhelper.TestActivity;
22+
import pub.devrel.easypermissions.testhelper.TestFragment;
23+
import pub.devrel.easypermissions.testhelper.TestSupportFragment;
1024

1125
import static com.google.common.truth.Truth.assertThat;
26+
import static org.mockito.Mockito.times;
27+
import static org.mockito.Mockito.verify;
1228

1329
/**
1430
* Low-API (SDK = 19) tests for {@link pub.devrel.easypermissions.EasyPermissions}.
@@ -17,12 +33,71 @@
1733
@Config(sdk = 19)
1834
public class EasyPermissionsLowApiTest {
1935

36+
private static final int REQUEST_CODE = 10;
37+
private static final String RATIONALE = "RATIONALE";
38+
private static final String[] ALL_PERMS = new String[]{
39+
Manifest.permission.READ_SMS, Manifest.permission.ACCESS_FINE_LOCATION};
40+
41+
private TestActivity spyActivity;
42+
private TestFragment spyFragment;
43+
private TestSupportFragment spySupportFragment;
44+
@Captor
45+
private ArgumentCaptor<Integer> integerCaptor;
46+
@Captor
47+
private ArgumentCaptor<ArrayList<String>> listCaptor;
48+
49+
@Before
50+
public void setUp() {
51+
MockitoAnnotations.initMocks(this);
52+
setUpActivityAndFragment();
53+
}
54+
2055
@Test
2156
public void shouldHavePermission_whenHasPermissionsBeforeMarshmallow() {
22-
// On low-API devices, we should always get 'true' when we call 'hasPermissions'
2357
assertThat(EasyPermissions.hasPermissions(RuntimeEnvironment.application,
2458
Manifest.permission.ACCESS_COARSE_LOCATION)).isTrue();
2559
}
2660

27-
//TODO: call all needed methods and expect IllegalStateException
61+
@Test
62+
public void shouldCallbackOnPermissionGranted_whenRequestFromActivity() {
63+
EasyPermissions.requestPermissions(spyActivity, RATIONALE, REQUEST_CODE, ALL_PERMS);
64+
65+
verify(spyActivity, times(1))
66+
.onPermissionsGranted(integerCaptor.capture(), listCaptor.capture());
67+
assertThat(integerCaptor.getValue()).isEqualTo(REQUEST_CODE);
68+
assertThat(listCaptor.getValue()).containsAllIn(ALL_PERMS);
69+
}
70+
71+
@Test
72+
public void shouldCallbackOnPermissionGranted_whenRequestFromFragment() {
73+
EasyPermissions.requestPermissions(spyFragment, RATIONALE, REQUEST_CODE, ALL_PERMS);
74+
75+
verify(spyFragment, times(1))
76+
.onPermissionsGranted(integerCaptor.capture(), listCaptor.capture());
77+
assertThat(integerCaptor.getValue()).isEqualTo(REQUEST_CODE);
78+
assertThat(listCaptor.getValue()).containsAllIn(ALL_PERMS);
79+
}
80+
81+
@Test
82+
public void shouldCallbackOnPermissionGranted_whenRequestFromSupportedFragment() {
83+
EasyPermissions.requestPermissions(spySupportFragment, RATIONALE, REQUEST_CODE, ALL_PERMS);
84+
85+
verify(spySupportFragment, times(1))
86+
.onPermissionsGranted(integerCaptor.capture(), listCaptor.capture());
87+
assertThat(integerCaptor.getValue()).isEqualTo(REQUEST_CODE);
88+
assertThat(listCaptor.getValue()).containsAllIn(ALL_PERMS);
89+
}
90+
91+
private void setUpActivityAndFragment() {
92+
TestActivity activity = Robolectric.buildActivity(TestActivity.class)
93+
.create().start().resume().get();
94+
TestFragment fragment = Robolectric.buildFragment(TestFragment.class)
95+
.create().start().resume().get();
96+
TestSupportFragment supportFragment = SupportFragmentController.of(new TestSupportFragment())
97+
.create().start().resume().get();
98+
99+
spyActivity = Mockito.spy(activity);
100+
spyFragment = Mockito.spy(fragment);
101+
spySupportFragment = Mockito.spy(supportFragment);
102+
}
28103
}

easypermissions/src/test/java/pub/devrel/easypermissions/EasyPermissionsTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public void shouldThrowException_whenHasPermissionsWithNullContext() {
9393
}
9494

9595
@Test
96-
public void shouldCallbackOnPermissionGranted_whenRequestAlreadyGrantedPermissionFromActivity() {
96+
public void shouldCallbackOnPermissionGranted_whenRequestAlreadyGrantedPermissionsFromActivity() {
9797
grantPermissions(ALL_PERMS);
9898

9999
EasyPermissions.requestPermissions(spyActivity, RATIONALE, REQUEST_CODE, ALL_PERMS);
@@ -148,7 +148,7 @@ public void shouldShowCorrectDialogUsingDeprecated_whenMissingPermissionsAndShow
148148
}
149149

150150
@Test
151-
public void shouldCallbackOnPermissionGranted_whenRequestAlreadyGrantedPermissionFromFragment() {
151+
public void shouldCallbackOnPermissionGranted_whenRequestAlreadyGrantedPermissionsFromFragment() {
152152
grantPermissions(ALL_PERMS);
153153

154154
EasyPermissions.requestPermissions(spyFragment, RATIONALE, REQUEST_CODE, ALL_PERMS);
@@ -203,7 +203,7 @@ public void shouldShowCorrectDialogUsingDeprecated_whenMissingPermissionsAndShow
203203
}
204204

205205
@Test
206-
public void shouldCallbackOnPermissionGranted_whenRequestAlreadyGrantedPermissionFromSupportFragment() {
206+
public void shouldCallbackOnPermissionGranted_whenRequestAlreadyGrantedPermissionsFromSupportFragment() {
207207
grantPermissions(ALL_PERMS);
208208

209209
EasyPermissions.requestPermissions(spySupportFragment, RATIONALE, REQUEST_CODE, ALL_PERMS);

easypermissions/src/test/java/pub/devrel/easypermissions/testhelper/TestSupportFragment.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public class TestSupportFragment extends Fragment implements EasyPermissions.Per
1919
@Nullable
2020
@Override
2121
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
22+
// Support Fragments should use AppCompat or derived themes
2223
getContext().getTheme().applyStyle(R.style.Theme_AppCompat, true);
2324
return super.onCreateView(inflater, container, savedInstanceState);
2425
}

0 commit comments

Comments
 (0)