Bug 1242443 - TestPermissions: Add test cases for non-Activity context, doNotPrompt() and doNotPromptIf(). r?nalexander draft
authorSebastian Kaspari <s.kaspari@gmail.com>
Mon, 25 Jan 2016 14:12:20 +0100
changeset 325460 0c99719e6bb48b8b3cf1cb8051e800734c6473ab
parent 325459 2ff2a6523bc06d93a5d55d848c8638296f0f574f
child 513442 2ab51655838ee525a1b087351097d2888a9cab74
push id9972
push users.kaspari@gmail.com
push dateMon, 25 Jan 2016 13:12:56 +0000
reviewersnalexander
bugs1242443
milestone46.0a1
Bug 1242443 - TestPermissions: Add test cases for non-Activity context, doNotPrompt() and doNotPromptIf(). r?nalexander
mobile/android/tests/background/junit4/src/org/mozilla/gecko/permissions/TestPermissions.java
--- a/mobile/android/tests/background/junit4/src/org/mozilla/gecko/permissions/TestPermissions.java
+++ b/mobile/android/tests/background/junit4/src/org/mozilla/gecko/permissions/TestPermissions.java
@@ -162,16 +162,72 @@ public class TestPermissions {
                 .andFallback(onPermissionDenied)
                 .run(onPermissionGranted);
 
         verify(onPermissionGranted).run();
         verify(onPermissionDenied, never()).run();
         verify(helper, never()).prompt(anyActivity(), any(String[].class));
     }
 
+    @Test
+    public void testDoNotPromptBehavior() {
+        PermissionsHelper helper = mockDenyingHelper();
+        Permissions.setPermissionHelper(helper);
+
+        Permissions.from(mockActivity())
+                .withPermissions(Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .doNotPrompt()
+                .andFallback(mock(Runnable.class))
+                .run(mock(Runnable.class));
+
+        verify(helper, never()).prompt(anyActivity(), any(String[].class));
+    }
+
+    @Test(expected = IllegalStateException.class)
+    public void testThrowsExceptionIfNeedstoPromptWithNonActivityContext() {
+        Permissions.setPermissionHelper(mockDenyingHelper());
+
+        Permissions.from(mock(Context.class))
+                .withPermissions(Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .andFallback(mock(Runnable.class))
+                .run(mock(Runnable.class));
+    }
+
+    @Test
+    public void testDoNotPromptIfFalse() {
+        Activity activity = mockActivity();
+
+        PermissionsHelper helper = mockDenyingHelper();
+        Permissions.setPermissionHelper(helper);
+
+        Permissions.from(activity)
+                .withPermissions(Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .doNotPromptIf(false)
+                .andFallback(mock(Runnable.class))
+                .run(mock(Runnable.class));
+
+        verify(helper).prompt(anyActivity(), any(String[].class));
+
+        Permissions.onRequestPermissionsResult(activity, new String[0], new int[0]);
+    }
+
+    @Test
+    public void testDoNotPromptIfTrue() {
+        PermissionsHelper helper = mockDenyingHelper();
+        Permissions.setPermissionHelper(helper);
+
+        Permissions.from(mockActivity())
+                .withPermissions(Manifest.permission.WRITE_EXTERNAL_STORAGE)
+                .doNotPromptIf(true)
+                .andFallback(mock(Runnable.class))
+                .run(mock(Runnable.class));
+
+        verify(helper, never()).prompt(anyActivity(), any(String[].class));
+    }
+
     private Activity mockActivity() {
         return mock(Activity.class);
     }
 
     private PermissionsHelper mockGrantingHelper() {
         PermissionsHelper helper = mock(PermissionsHelper.class);
         doReturn(true).when(helper).hasPermissions(any(Context.class), anyPermissions());
         return helper;