diff --git a/ui/revenuecatui/src/main/kotlin/com/revenuecat/purchases/ui/revenuecatui/data/testdata/TestData.kt b/ui/revenuecatui/src/main/kotlin/com/revenuecat/purchases/ui/revenuecatui/data/testdata/TestData.kt index 0e9e1d7ee8..4b73decf11 100644 --- a/ui/revenuecatui/src/main/kotlin/com/revenuecat/purchases/ui/revenuecatui/data/testdata/TestData.kt +++ b/ui/revenuecatui/src/main/kotlin/com/revenuecat/purchases/ui/revenuecatui/data/testdata/TestData.kt @@ -114,6 +114,7 @@ internal object TestData { Packages.weekly, Packages.monthly, Packages.annual, + Packages.lifetime, ), metadata = mapOf(), paywall = template2, diff --git a/ui/revenuecatui/src/test/kotlin/com/revenuecat/purchases/ui/revenuecatui/data/PaywallViewModelTest.kt b/ui/revenuecatui/src/test/kotlin/com/revenuecat/purchases/ui/revenuecatui/data/PaywallViewModelTest.kt index 9ba234d4f0..8da637a186 100644 --- a/ui/revenuecatui/src/test/kotlin/com/revenuecat/purchases/ui/revenuecatui/data/PaywallViewModelTest.kt +++ b/ui/revenuecatui/src/test/kotlin/com/revenuecat/purchases/ui/revenuecatui/data/PaywallViewModelTest.kt @@ -10,6 +10,7 @@ import com.revenuecat.purchases.Offerings import com.revenuecat.purchases.Package import com.revenuecat.purchases.PurchaseResult import com.revenuecat.purchases.models.StoreTransaction +import com.revenuecat.purchases.models.Transaction import com.revenuecat.purchases.paywalls.PaywallData import com.revenuecat.purchases.ui.revenuecatui.PaywallListener import com.revenuecat.purchases.ui.revenuecatui.PaywallMode @@ -35,6 +36,8 @@ import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith +import java.util.Date +import java.util.UUID @RunWith(AndroidJUnit4::class) class PaywallViewModelTest { @@ -111,7 +114,10 @@ class PaywallViewModelTest { @Test fun `Should load default offering`() { - val model = create(activeSubscriptions = arrayOf(TestData.Packages.monthly.product.id)) + val model = create( + activeSubscriptions = setOf(TestData.Packages.monthly.product.id), + nonSubscriptionTransactionProductIdentifiers = setOf(TestData.Packages.lifetime.product.id), + ) coVerify { purchases.awaitOfferings() } @@ -128,6 +134,8 @@ class PaywallViewModelTest { .isTrue assertThat(state.templateConfiguration.packages.packageIsCurrentlySubscribed(TestData.Packages.annual)) .isFalse + assertThat(state.templateConfiguration.packages.packageIsCurrentlySubscribed(TestData.Packages.lifetime)) + .isTrue } @Test @@ -226,9 +234,11 @@ class PaywallViewModelTest { private fun create( offering: Offering? = null, - vararg activeSubscriptions: String, + activeSubscriptions: Set = setOf(), + nonSubscriptionTransactionProductIdentifiers: Set = setOf(), ): PaywallViewModelImpl { - mockActiveSubscriptions(*activeSubscriptions) + mockActiveSubscriptions(activeSubscriptions) + mockNonSubscriptionTransactions(nonSubscriptionTransactionProductIdentifiers) return PaywallViewModelImpl( MockApplicationContext(), @@ -241,8 +251,21 @@ class PaywallViewModelTest { ) } - private fun mockActiveSubscriptions(vararg subscriptions: String) { - every { customerInfo.activeSubscriptions } returns setOf(*subscriptions) + private fun mockActiveSubscriptions(subscriptions: Set) { + every { customerInfo.activeSubscriptions } returns subscriptions + } + + private fun mockNonSubscriptionTransactions(productIdentifiers: Set) { + every { customerInfo.nonSubscriptionTransactions } returns productIdentifiers + .map { + Transaction( + UUID.randomUUID().toString(), + UUID.randomUUID().toString(), + it, + it, + Date() + ) + } } /** diff --git a/ui/revenuecatui/src/test/resources/default_template.json b/ui/revenuecatui/src/test/resources/default_template.json index e1dd0c8150..08e279d896 100644 --- a/ui/revenuecatui/src/test/resources/default_template.json +++ b/ui/revenuecatui/src/test/resources/default_template.json @@ -28,7 +28,8 @@ }, "packages" : [ "$rc_annual", - "$rc_monthly" + "$rc_monthly", + "$rc_lifetime" ], "privacy_url" : null, "tos_url" : null