Skip to content

Commit

Permalink
Differentiate between FragmentActivity and AppCompatActivity (#268)
Browse files Browse the repository at this point in the history
  • Loading branch information
samtstern committed Jan 15, 2019
2 parents 0a0a46e + 97e1429 commit a88d501
Show file tree
Hide file tree
Showing 7 changed files with 151 additions and 65 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ ext {

mavenGroup = 'pub.devrel'
mavenArtifactId = 'easypermissions'
mavenVersion = '2.0.0'
mavenVersion = '2.0.1-SNAPSHOT'

bintrayOrg = 'easygoogle'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,15 @@
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;

/**
* Permissions helper for {@link AppCompatActivity}.
*/
class FragmentActivityPermissionHelper extends BaseSupportPermissionsHelper<FragmentActivity> {
class AppCompatActivityPermissionsHelper extends BaseSupportPermissionsHelper<AppCompatActivity> {

public FragmentActivityPermissionHelper(FragmentActivity host) {
public AppCompatActivityPermissionsHelper(AppCompatActivity host) {
super(host);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import android.support.annotation.NonNull;
import android.support.annotation.StyleRes;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.AppCompatActivity;

import java.util.List;

Expand All @@ -23,8 +23,8 @@ public static PermissionHelper<? extends Activity> newInstance(Activity host) {
return new LowApiPermissionsHelper<>(host);
}

if (host instanceof FragmentActivity)
return new FragmentActivityPermissionHelper((FragmentActivity) host);
if (host instanceof AppCompatActivity)
return new AppCompatActivityPermissionsHelper((AppCompatActivity) host);
else {
return new ActivityPermissionHelper(host);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@

import pub.devrel.easypermissions.testhelper.TestActivity;
import pub.devrel.easypermissions.testhelper.TestFragment;
import pub.devrel.easypermissions.testhelper.TestSupportActivity;
import pub.devrel.easypermissions.testhelper.TestAppCompatActivity;
import pub.devrel.easypermissions.testhelper.TestSupportFragmentActivity;

import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.times;
Expand All @@ -39,10 +40,12 @@ public class EasyPermissionsLowApiTest {
Manifest.permission.READ_SMS, Manifest.permission.ACCESS_FINE_LOCATION};

private TestActivity spyActivity;
private TestSupportActivity spySupportActivity;
private TestSupportFragmentActivity spySupportFragmentActivity;
private TestAppCompatActivity spyAppCompatActivity;
private TestFragment spyFragment;
private ActivityController<TestActivity> activityController;
private ActivityController<TestSupportActivity> supportActivityController;
private ActivityController<TestSupportFragmentActivity> supportFragmentActivityController;
private ActivityController<TestAppCompatActivity> appCompatActivityController;
private SupportFragmentController<TestFragment> supportController;
@Captor
private ArgumentCaptor<Integer> integerCaptor;
Expand Down Expand Up @@ -83,12 +86,23 @@ public void shouldCallbackOnPermissionGranted_whenRequestFromActivity() {
// ------ From Support Activity ------

@Test
public void shouldCallbackOnPermissionGranted_whenRequestFromSupportActivity() {
EasyPermissions.requestPermissions(spySupportActivity, RATIONALE, TestSupportActivity.REQUEST_CODE, ALL_PERMS);
public void shouldCallbackOnPermissionGranted_whenRequestFromSupportFragmentActivity() {
EasyPermissions.requestPermissions(spySupportFragmentActivity, RATIONALE, TestSupportFragmentActivity.REQUEST_CODE, ALL_PERMS);

verify(spySupportActivity, times(1))
verify(spySupportFragmentActivity, times(1))
.onPermissionsGranted(integerCaptor.capture(), listCaptor.capture());
assertThat(integerCaptor.getValue()).isEqualTo(TestSupportActivity.REQUEST_CODE);
assertThat(integerCaptor.getValue()).isEqualTo(TestSupportFragmentActivity.REQUEST_CODE);
assertThat(listCaptor.getValue()).containsAllIn(ALL_PERMS);
}


@Test
public void shouldCallbackOnPermissionGranted_whenRequestFromAppCompatActivity() {
EasyPermissions.requestPermissions(spyAppCompatActivity, RATIONALE, TestAppCompatActivity.REQUEST_CODE, ALL_PERMS);

verify(spyAppCompatActivity, times(1))
.onPermissionsGranted(integerCaptor.capture(), listCaptor.capture());
assertThat(integerCaptor.getValue()).isEqualTo(TestAppCompatActivity.REQUEST_CODE);
assertThat(listCaptor.getValue()).containsAllIn(ALL_PERMS);
}

Expand All @@ -105,19 +119,22 @@ public void shouldCallbackOnPermissionGranted_whenRequestFromFragment() {
private void setUpActivityAndFragment() {
activityController = Robolectric.buildActivity(TestActivity.class)
.create().start().resume();
supportActivityController = Robolectric.buildActivity(TestSupportActivity.class)
supportFragmentActivityController = Robolectric.buildActivity(TestSupportFragmentActivity.class)
.create().start().resume();
appCompatActivityController = Robolectric.buildActivity(TestAppCompatActivity.class)
.create().start().resume();
supportController = SupportFragmentController.of(new TestFragment())
.create().start().resume();

spyActivity = Mockito.spy(activityController.get());
spySupportActivity = Mockito.spy(supportActivityController.get());
spySupportFragmentActivity = Mockito.spy(supportFragmentActivityController.get());
spyAppCompatActivity = Mockito.spy(appCompatActivityController.get());
spyFragment = Mockito.spy(supportController.get());
}

private void tearDownActivityAndFragment() {
activityController.pause().stop().destroy();
supportActivityController.pause().stop().destroy();
appCompatActivityController.pause().stop().destroy();
supportController.pause().stop().destroy();
}
}
Loading

0 comments on commit a88d501

Please sign in to comment.