Skip to content

Commit bef023b

Browse files
committed
Merge remote-tracking branch 'origin/master' into fix-kujaku-tests
2 parents 338fbc6 + 8c1aae0 commit bef023b

8 files changed

Lines changed: 84 additions & 26 deletions

File tree

configs.gradle

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@ ext {
110110
mapboxAnnotationPluginVersion = "0.9.0"
111111
mapboxSdkVersion = "9.7.1"
112112
mapboxSdkTurfVersion = "7.2.0"
113-
robolectricShadowsMultidexVersion = "4.13"
114113
robolectricVersion = "4.13"
115114
supportVersion = "1.0.0"
116115
volleyVersion = "1.2.1"
@@ -123,13 +122,12 @@ ext {
123122
mapboxSDKTurf = "com.mapbox.mapboxsdk:mapbox-sdk-turf:$mapboxSdkTurfVersion"
124123
mapboxAnnotationPlugin = "com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:$mapboxAnnotationPluginVersion"
125124
robolectric = "org.robolectric:robolectric:$robolectricVersion"
126-
robolectricShadowsMultidex = "org.robolectric:shadows-multidex:$robolectricShadowsMultidexVersion"
127125
}
128126

129127
ext.mapboxDependencies = { instance, configuration ->
130128

131129
configuration.implementation("com.mapbox.maps:android:$mapboxSdkVersion") {
132-
transitive = true;
130+
transitive = true
133131
exclude group: 'com.android.support', module: 'support-v4'
134132
exclude group: 'com.android.support', module: 'support-annotations'
135133
exclude group: 'com.android.support', module: 'support-fragment'

library/build.gradle

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ buildscript {
1313
apply plugin: 'realm-android'
1414
apply plugin: 'maven-publish'
1515

16-
version '0.10.6-2-SNAPSHOT'
16+
version '0.10.8-SNAPSHOT'
1717

1818
project.version = this.version
1919

@@ -42,7 +42,6 @@ android {
4242
versionCode 1
4343
versionName this.version
4444
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
45-
multiDexEnabled true
4645
}
4746

4847
buildTypes {
@@ -57,11 +56,11 @@ android {
5756
properties.containsKey("mapbox.sdk.token")) {
5857
buildConfigField "String", "MAPBOX_SDK_ACCESS_TOKEN", "\"" + localProperties["mapbox.sdk.token"] + "\""
5958
} else {
60-
println("One of the required config variables is not set in your local.properties");
59+
println("One of the required config variables is not set in your local.properties")
6160
buildConfigField "String", "MAPBOX_SDK_ACCESS_TOKEN", "\"sample_key\""
6261
}
6362
} else {
64-
println("local.properties does not exist");
63+
println("local.properties does not exist")
6564
buildConfigField "String", "MAPBOX_SDK_ACCESS_TOKEN", "\"sample_key\""
6665
}
6766
}
@@ -77,11 +76,11 @@ android {
7776
properties.containsKey("mapbox.sdk.token")) {
7877
buildConfigField "String", "MAPBOX_SDK_ACCESS_TOKEN", "\"" + localProperties["mapbox.sdk.token"] + "\""
7978
} else {
80-
println("One of the required config variables is not set in your local.properties");
79+
println("One of the required config variables is not set in your local.properties")
8180
buildConfigField "String", "MAPBOX_SDK_ACCESS_TOKEN", "\"sample_key\""
8281
}
8382
} else {
84-
println("local.properties does not exist");
83+
println("local.properties does not exist")
8584
buildConfigField "String", "MAPBOX_SDK_ACCESS_TOKEN", "\"sample_key\""
8685

8786
}
@@ -107,7 +106,7 @@ android {
107106
dependencies { configuration ->
108107
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
109108
implementation (mapboxSDK) {
110-
transitive = true;
109+
transitive = true
111110
exclude group: 'com.android.support', module: 'support-v4'
112111
exclude group: 'com.android.support', module: 'support-annotations'
113112
exclude group: 'com.android.support', module: 'support-fragment'
@@ -120,9 +119,9 @@ dependencies { configuration ->
120119
implementation mapboxAnnotationPlugin
121120

122121
// Comment the line below when creating releases - The line is for development of the library & utils
123-
//implementation (project(":utils")) {
122+
implementation (project(":utils")) {
124123
// Uncomment the line below when creating releases
125-
implementation('io.ona.kujaku:utils:0.10.6-SNAPSHOT') {
124+
implementation('io.ona.kujaku:utils:0.10.8-SNAPSHOT') {
126125
transitive = true
127126
exclude group: 'com.mapbox.mapboxsdk', module: 'mapbox-android-sdk'
128127
exclude group: 'com.android.support', module: 'support-v4'
@@ -134,8 +133,6 @@ dependencies { configuration ->
134133
implementation 'com.jakewharton.threetenabp:threetenabp:1.1.1'
135134
implementation 'com.jakewharton.timber:timber:5.0.1'
136135

137-
implementation 'androidx.multidex:multidex:2.0.1'
138-
139136
customDependencies(this, configuration)
140137
appPermissionsDependencies(configuration)
141138
infoWindowDependencies(this, configuration)
@@ -147,7 +144,6 @@ private static void testDependencies(instance, configuration) {
147144
configuration.testImplementation instance.junit
148145

149146
configuration.testImplementation instance.robolectric
150-
configuration.testImplementation instance.robolectricShadowsMultidex
151147

152148
configuration.testImplementation 'org.mockito:mockito-inline:5.2.0'
153149

library/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
88
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
99
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32"/>
10-
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" />
10+
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
1111
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
1212
<uses-permission android:name="android.permission.INTERNET"/>
1313
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

library/src/main/java/io/ona/kujaku/helpers/PermissionsHelper.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,33 @@
99
import com.karumi.dexter.Dexter;
1010
import com.karumi.dexter.listener.multi.MultiplePermissionsListener;
1111

12+
import java.util.ArrayList;
13+
import java.util.List;
14+
1215
import io.ona.kujaku.utils.KujakuMultiplePermissionListener;
16+
import timber.log.Timber;
1317

1418
public class PermissionsHelper {
1519

1620
public static void checkPermissions(String TAG, Context context) {
1721
if (context instanceof Activity) {
22+
List<String> permissions = new ArrayList<>();
23+
permissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
24+
25+
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.S) {
26+
permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
27+
}
1828
final Activity activity = (Activity) context;
1929

2030
MultiplePermissionsListener dialogMultiplePermissionListener = new KujakuMultiplePermissionListener(activity);
2131

2232
Dexter.withActivity(activity)
23-
.withPermissions(Manifest.permission.ACCESS_FINE_LOCATION, (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) ? Manifest.permission.MANAGE_EXTERNAL_STORAGE : Manifest.permission.WRITE_EXTERNAL_STORAGE)
33+
.withPermissions(permissions)
2434
.withListener(dialogMultiplePermissionListener)
2535
.check();
2636

2737
} else {
28-
Log.wtf(TAG, "KujakuMapView was not started in an activity!! This is very bad or it is being used in tests. We are going to ignore the permissions check! Good luck");
38+
Timber.tag(TAG).wtf("KujakuMapView was not started in an activity!! This is very bad or it is being used in tests. We are going to ignore the permissions check! Good luck");
2939
}
3040
}
3141
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package io.ona.kujaku.helpers;
2+
3+
import static org.junit.Assert.assertFalse;
4+
5+
import android.app.Activity;
6+
import android.content.Context;
7+
import org.junit.Before;
8+
import org.junit.Test;
9+
import org.junit.runner.RunWith;
10+
import org.mockito.Mock;
11+
import org.mockito.Mockito;
12+
import org.mockito.MockitoAnnotations;
13+
import org.robolectric.Robolectric;
14+
import org.robolectric.RobolectricTestRunner;
15+
import com.karumi.dexter.MultiplePermissionsReport;
16+
import io.ona.kujaku.utils.KujakuMultiplePermissionListener;
17+
18+
@RunWith(RobolectricTestRunner.class)
19+
public class PermissionsHelperTest {
20+
21+
@Mock
22+
Context mockContext;
23+
24+
@Before
25+
public void setUp() {
26+
MockitoAnnotations.openMocks(this);
27+
// Use a real context
28+
mockContext = Robolectric.setupActivity(Activity.class).getApplicationContext();
29+
}
30+
31+
@Test
32+
public void testOnPermissionsCheckedWhenAnyPermissionPermanentlyDenied() {
33+
MultiplePermissionsReport report = Mockito.mock(MultiplePermissionsReport.class);
34+
Mockito.when(report.isAnyPermissionPermanentlyDenied()).thenReturn(true);
35+
Mockito.when(report.areAllPermissionsGranted()).thenReturn(false);
36+
KujakuMultiplePermissionListener listener = new KujakuMultiplePermissionListener(mockContext);
37+
listener.onPermissionsChecked(report);
38+
39+
// Check that the dialog was created with the expected properties
40+
Mockito.verify(report).isAnyPermissionPermanentlyDenied();
41+
}
42+
43+
@Test
44+
public void testOnPermissionsCheckedWhenAnyPermissionNotPermanentlyDenied() {
45+
MultiplePermissionsReport report = Mockito.mock(MultiplePermissionsReport.class);
46+
Mockito.when(report.isAnyPermissionPermanentlyDenied()).thenReturn(false);
47+
Mockito.when(report.areAllPermissionsGranted()).thenReturn(false);
48+
KujakuMultiplePermissionListener listener = new KujakuMultiplePermissionListener(mockContext);
49+
listener.onPermissionsChecked(report);
50+
51+
boolean result = report.isAnyPermissionPermanentlyDenied();
52+
53+
// Use the result in your assertions or further logic
54+
assertFalse(result);
55+
}
56+
}

sample/build.gradle

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ android {
2828
versionCode getMasterCommitCount()
2929
versionName getVersionName()
3030

31-
multiDexEnabled true
3231
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
3332
}
3433

@@ -95,8 +94,6 @@ dependencies { configuration ->
9594
exclude group: "com.android.support", module: "appcompat-v7"
9695
}
9796

98-
implementation 'androidx.multidex:multidex:2.0.1'
99-
10097
testImplementation junit
10198
testImplementation robolectric
10299
}
@@ -111,15 +108,15 @@ private static void libraryModuleDevelopment(instance, configuration) {
111108
}
112109

113110
configuration.implementation(instance.project(":utils")) {
114-
transitive = true;
111+
transitive = true
115112
exclude group: 'com.mapbox.mapboxsdk', module: 'mapbox-android-sdk'
116113
exclude group: 'com.android.support', module: 'support-v4'
117114
exclude group: 'com.android.support', module: 'appcompat-v7'
118115
exclude group: 'org.jacoco'
119116
}
120117

121118
configuration.implementation(instance.mapboxSDK) {
122-
transitive = true;
119+
transitive = true
123120
exclude group: 'com.android.support', module: 'support-v4'
124121
exclude group: 'com.android.support', module: 'support-annotations'
125122
exclude group: 'com.android.support', module: 'support-fragment'

sample/src/main/java/io/ona/kujaku/sample/MyApplication.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
package io.ona.kujaku.sample;
22

3-
import androidx.multidex.MultiDexApplication;
43
import io.ona.kujaku.KujakuLibrary;
54
import io.ona.kujaku.sample.repository.KujakuRepository;
65
import io.ona.kujaku.sample.repository.PointsRepository;
76
import timber.log.Timber;
87

98
import static io.ona.kujaku.sample.util.Constants.DATABASE_NAME;
109

11-
public class MyApplication extends MultiDexApplication {
10+
import android.app.Application;
11+
12+
public class MyApplication extends Application {
1213

1314
private static final String TAG = MyApplication.class.getName();
1415

utils/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
22
apply plugin: 'maven-publish'
33
apply plugin: 'jacoco'
44

5-
version '0.10.6-SNAPSHOT'
5+
version '0.10.8-SNAPSHOT'
66
project.version = this.version
77

88

0 commit comments

Comments
 (0)