From b7f161f0416a834cfed4dd1015ac56c77d9d5966 Mon Sep 17 00:00:00 2001 From: Toni Rico Date: Wed, 19 Jul 2023 08:31:28 +0200 Subject: [PATCH 1/2] Add internal customEntitlementsComputation mode to app config --- .../revenuecat/purchases/DangerousSettings.kt | 8 +++++-- .../revenuecat/purchases/common/AppConfig.kt | 2 ++ .../purchases/DangerousSettingsTest.kt | 21 ++++++++++++++++++ .../purchases/common/AppConfigTest.kt | 22 +++++++++++++++++++ 4 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 purchases/src/test/java/com/revenuecat/purchases/DangerousSettingsTest.kt diff --git a/purchases/src/main/kotlin/com/revenuecat/purchases/DangerousSettings.kt b/purchases/src/main/kotlin/com/revenuecat/purchases/DangerousSettings.kt index 52b31983d..05d4c1c98 100644 --- a/purchases/src/main/kotlin/com/revenuecat/purchases/DangerousSettings.kt +++ b/purchases/src/main/kotlin/com/revenuecat/purchases/DangerousSettings.kt @@ -3,11 +3,15 @@ package com.revenuecat.purchases /** * Only use a Dangerous Setting if suggested by RevenueCat support team. */ -data class DangerousSettings( +data class DangerousSettings internal constructor( /** * Disable or enable syncing purchases automatically. If this is disabled, RevenueCat will not sync any purchase * automatically, and you will have to call syncPurchases whenever a new purchase is completed in order to send it * to the RevenueCat's backend. Auto syncing of purchases is enabled by default. */ val autoSyncPurchases: Boolean = true, -) + + internal val customEntitlementsComputation: Boolean = false, +) { + constructor(autoSyncPurchases: Boolean = true) : this(autoSyncPurchases, false) +} diff --git a/purchases/src/main/kotlin/com/revenuecat/purchases/common/AppConfig.kt b/purchases/src/main/kotlin/com/revenuecat/purchases/common/AppConfig.kt index 9b26651c1..935a46094 100644 --- a/purchases/src/main/kotlin/com/revenuecat/purchases/common/AppConfig.kt +++ b/purchases/src/main/kotlin/com/revenuecat/purchases/common/AppConfig.kt @@ -34,6 +34,8 @@ internal class AppConfig( log(LogIntent.INFO, ConfigureStrings.CONFIGURING_PURCHASES_PROXY_URL_SET) } ?: URL("https://api.revenuecat.com/") val diagnosticsURL = URL("https://api-diagnostics.revenuecat.com/") + val customEntitlementsComputation: Boolean + get() = dangerousSettings.customEntitlementsComputation val playStoreVersionName = context.playStoreVersionName val playServicesVersionName = context.playServicesVersionName diff --git a/purchases/src/test/java/com/revenuecat/purchases/DangerousSettingsTest.kt b/purchases/src/test/java/com/revenuecat/purchases/DangerousSettingsTest.kt new file mode 100644 index 000000000..3fa056f25 --- /dev/null +++ b/purchases/src/test/java/com/revenuecat/purchases/DangerousSettingsTest.kt @@ -0,0 +1,21 @@ +package com.revenuecat.purchases + +import androidx.test.ext.junit.runners.AndroidJUnit4 +import org.assertj.core.api.Assertions.assertThat +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class DangerousSettingsTest { + @Test + fun `default customEntitlementComputation is false`() { + val dangerousSettings = DangerousSettings() + assertThat(dangerousSettings.customEntitlementsComputation).isFalse + } + + @Test + fun `default autoSyncPurchases is true`() { + val dangerousSettings = DangerousSettings() + assertThat(dangerousSettings.autoSyncPurchases).isTrue + } +} diff --git a/purchases/src/test/java/com/revenuecat/purchases/common/AppConfigTest.kt b/purchases/src/test/java/com/revenuecat/purchases/common/AppConfigTest.kt index 7eda43e51..f71d4a176 100644 --- a/purchases/src/test/java/com/revenuecat/purchases/common/AppConfigTest.kt +++ b/purchases/src/test/java/com/revenuecat/purchases/common/AppConfigTest.kt @@ -184,6 +184,28 @@ class AppConfigTest { assertThat(appConfig.forceSigningErrors).isFalse } + @Test + fun `customEntitlementComputation matches version from dangerous settings`() { + val appConfig = AppConfig( + context = mockk(relaxed = true), + observerMode = false, + platformInfo = PlatformInfo(flavor = "native", version = "3.2.0"), + proxyURL = null, + store = Store.PLAY_STORE, + dangerousSettings = DangerousSettings(customEntitlementsComputation = true) + ) + assertThat(appConfig.customEntitlementsComputation).isTrue + val appConfig2 = AppConfig( + context = mockk(relaxed = true), + observerMode = false, + platformInfo = PlatformInfo(flavor = "native", version = "3.2.0"), + proxyURL = null, + store = Store.PLAY_STORE, + dangerousSettings = DangerousSettings(customEntitlementsComputation = false) + ) + assertThat(appConfig2.customEntitlementsComputation).isFalse + } + @Test fun `Given two app configs with same data, both are equal`() { val x = AppConfig( From 18bf2140dc9dc78c35a0b1d007b462e61557be77 Mon Sep 17 00:00:00 2001 From: Toni Rico Date: Wed, 19 Jul 2023 10:05:16 +0200 Subject: [PATCH 2/2] Fix toString test --- .../test/java/com/revenuecat/purchases/common/AppConfigTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purchases/src/test/java/com/revenuecat/purchases/common/AppConfigTest.kt b/purchases/src/test/java/com/revenuecat/purchases/common/AppConfigTest.kt index f71d4a176..bc5970805 100644 --- a/purchases/src/test/java/com/revenuecat/purchases/common/AppConfigTest.kt +++ b/purchases/src/test/java/com/revenuecat/purchases/common/AppConfigTest.kt @@ -309,7 +309,7 @@ class AppConfigTest { "AppConfig(" + "platformInfo=PlatformInfo(flavor=native, version=3.2.0), " + "store=PLAY_STORE, " + - "dangerousSettings=DangerousSettings(autoSyncPurchases=true), " + + "dangerousSettings=DangerousSettings(autoSyncPurchases=true, customEntitlementsComputation=false), " + "languageTag='', " + "versionName='', " + "packageName='', " +