From d234a008fcda06e116c0cd8a19226bf5cbd32085 Mon Sep 17 00:00:00 2001 From: Lentumunai-Mark Date: Mon, 14 Oct 2024 10:26:47 +0300 Subject: [PATCH] Add tests for permissions helper. Signed-off-by: Lentumunai-Mark --- library/build.gradle | 5 ++ .../kujaku/helpers/PermissionsHelperTest.java | 46 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 library/src/test/java/io/ona/kujaku/helpers/PermissionsHelperTest.java diff --git a/library/build.gradle b/library/build.gradle index c4201c23..b13ed6a0 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -136,6 +136,11 @@ dependencies { configuration -> implementation 'androidx.multidex:multidex:2.0.1' + androidTestImplementation 'org.powermock:powermock-module-junit4:2.0.9' + androidTestImplementation 'org.powermock:powermock-api-mockito2:2.0.9' + androidTestImplementation 'org.mockito:mockito-core:5.12.0' + androidTestImplementation 'org.robolectric:robolectric:4.13' + customDependencies(this, configuration) appPermissionsDependencies(configuration) infoWindowDependencies(this, configuration) diff --git a/library/src/test/java/io/ona/kujaku/helpers/PermissionsHelperTest.java b/library/src/test/java/io/ona/kujaku/helpers/PermissionsHelperTest.java new file mode 100644 index 00000000..86dac07e --- /dev/null +++ b/library/src/test/java/io/ona/kujaku/helpers/PermissionsHelperTest.java @@ -0,0 +1,46 @@ +package io.ona.kujaku.helpers; + +import android.app.Activity; +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; + +import com.karumi.dexter.MultiplePermissionsReport; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; + +import io.ona.kujaku.utils.KujakuMultiplePermissionListener; + +@RunWith(RobolectricTestRunner.class) +@Config(sdk = 28) +public class PermissionsHelperTest { + + private Context mockContext; + + @Before + public void setUp() { + MockitoAnnotations.openMocks(this); + // Use a real context + mockContext = Robolectric.setupActivity(Activity.class).getApplicationContext(); + } + + @Test + public void testOnPermissionsChecked_WhenAnyPermissionPermanentlyDenied() { + MultiplePermissionsReport report = Mockito.mock(MultiplePermissionsReport.class); + Mockito.when(report.isAnyPermissionPermanentlyDenied()).thenReturn(true); + Mockito.when(report.areAllPermissionsGranted()).thenReturn(false); + KujakuMultiplePermissionListener listener = new KujakuMultiplePermissionListener(mockContext); + listener.onPermissionsChecked(report); + + // Check that the dialog was created with the expected properties + Mockito.verify(report).isAnyPermissionPermanentlyDenied(); + } +}