Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tests/moving change tier flows addons tests #2371

Open
wants to merge 14 commits into
base: develop
Choose a base branch
from
Original file line number Diff line number Diff line change
Expand Up @@ -137,11 +137,11 @@ private fun DeductibleFragment.toDeductible(): Deductible {
}

private fun List<DisplayItemFragment>.toDisplayItems(): List<ChangeTierDeductibleDisplayItem> {
return this.map {
return this.map { displayItemFragment ->
ChangeTierDeductibleDisplayItem(
displayTitle = it.displayTitle,
displaySubtitle = it.displaySubtitle,
displayValue = it.displayValue,
displayTitle = displayItemFragment.displayTitle,
displaySubtitle = displayItemFragment.displaySubtitle,
displayValue = displayItemFragment.displayValue,
)
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package data

import assertk.assertions.first
import assertk.assertions.index
import assertk.assertions.isEmpty
import assertk.assertions.isEqualTo
import assertk.assertions.isNotNull
Expand All @@ -12,20 +14,26 @@ import com.hedvig.android.apollo.test.TestApolloClientRule
import com.hedvig.android.apollo.test.TestNetworkTransportType
import com.hedvig.android.core.common.test.isLeft
import com.hedvig.android.core.common.test.isRight
import com.hedvig.android.core.uidata.UiMoney
import com.hedvig.android.data.changetier.data.ChangeTierCreateSource
import com.hedvig.android.data.changetier.data.ChangeTierDeductibleDisplayItem
import com.hedvig.android.data.changetier.data.ChangeTierDeductibleIntent
import com.hedvig.android.data.changetier.data.CreateChangeTierDeductibleIntentUseCaseImpl
import com.hedvig.android.data.changetier.data.TierConstants
import com.hedvig.android.data.changetier.data.TierDeductibleQuote
import com.hedvig.android.featureflags.flags.Feature
import com.hedvig.android.featureflags.test.FakeFeatureManager2
import com.hedvig.android.logger.TestLogcatLoggingRule
import kotlin.collections.List
import kotlinx.coroutines.test.runTest
import kotlinx.datetime.LocalDate
import octopus.ChangeTierDeductibleCreateIntentMutation
import octopus.type.ChangeTierDeductibleSource.SELF_SERVICE
import octopus.type.CurrencyCode.SEK
import octopus.type.buildAddonVariant
import octopus.type.buildChangeTierDeductibleAddonQuote
import octopus.type.buildChangeTierDeductibleCreateIntentOutput
import octopus.type.buildChangeTierDeductibleDisplayItem
import octopus.type.buildChangeTierDeductibleFromAgreement
import octopus.type.buildChangeTierDeductibleIntent
import octopus.type.buildChangeTierDeductibleQuote
Expand Down Expand Up @@ -278,6 +286,78 @@ class CreateChangeTierDeductibleIntentUseCaseImplTest {
@OptIn(ApolloExperimental::class)
private val apolloClientWithGoodResponse: ApolloClient
get() = testApolloClientRule.apolloClient.apply {
registerTestResponse(
operation = ChangeTierDeductibleCreateIntentMutation(
contractId = testId,
source = testSource,
addonsFlagOn = false,
),
data = ChangeTierDeductibleCreateIntentMutation.Data(OctopusFakeResolver) {
changeTierDeductibleCreateIntent = buildChangeTierDeductibleCreateIntentOutput {
intent = buildChangeTierDeductibleIntent {
activationDate = activationDateNovember
agreementToChange = buildChangeTierDeductibleFromAgreement {
premium = buildMoney {
amount = 169.0
currencyCode = SEK
}
deductible = buildDeductible {
displayText = "A very good deductible"
percentage = 0
amount = buildMoney {
amount = 3000.0
currencyCode = SEK
}
}
displayItems = listOf()
tierLevel = 1
tierName = "STANDARD"
productVariant = buildProductVariant {
displayName = "Variant"
typeOfContract = "SE_APARTMENT_RENT"
partner = null
perils = listOf()
insurableLimits = listOf()
documents = listOf()
displayNameTier = "Standard"
tierDescription = "Our standard coverage"
}
}
quotes = List(1) {
buildChangeTierDeductibleQuote {
id = "id"
premium = buildMoney {
amount = 500.0
currencyCode = SEK
}
deductible = buildDeductible {
displayText = "A very good deductible"
percentage = 0
amount = buildMoney {
amount = 500.0
currencyCode = SEK
}
}
displayItems = listOf()
tierLevel = 1
tierName = "STANDARD"
productVariant = buildProductVariant {
displayName = "Variant"
typeOfContract = "SE_APARTMENT_RENT"
partner = null
perils = listOf()
insurableLimits = listOf()
documents = listOf()
displayNameTier = "Standard"
tierDescription = "Our standard coverage"
}
}
}
}
}
},
)

registerTestResponse(
operation = ChangeTierDeductibleCreateIntentMutation(
contractId = testId,
Expand Down Expand Up @@ -333,6 +413,35 @@ class CreateChangeTierDeductibleIntentUseCaseImplTest {
displayItems = listOf()
tierLevel = 1
tierName = "STANDARD"
addons = List(1) {
buildChangeTierDeductibleAddonQuote {
addonId = "addonId"
displayName = "Travel Plus"
displayItems = List(1) {
buildChangeTierDeductibleDisplayItem {
displayTitle = "Coinsured people"
displaySubtitle = null
displayValue = "Only you"
}
}
previousPremium = buildMoney {
currencyCode = SEK
amount = 29.0
}
premium = buildMoney {
currencyCode = SEK
amount = 30.0
}
addonVariant = buildAddonVariant {
termsVersion = "terms"
displayName = "addonVariantDisplayName"
product = "product"
perils = emptyList()
insurableLimits = emptyList()
documents = emptyList()
}
}
}
productVariant = buildProductVariant {
displayName = "Variant"
typeOfContract = "SE_APARTMENT_RENT"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ internal class SummaryViewModel(
),
)

private class SummaryPresenter(
internal class SummaryPresenter(
private val params: SummaryParameters,
private val tierRepository: ChangeTierRepository,
private val getCurrentContractDataUseCase: GetCurrentContractDataUseCase,
Expand Down
129 changes: 129 additions & 0 deletions app/feature/feature-choose-tier/src/test/kotlin/CommonTestdata.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.hedvig.android.core.common.ErrorMessage
import com.hedvig.android.core.uidata.UiCurrencyCode.SEK
import com.hedvig.android.core.uidata.UiMoney
import com.hedvig.android.data.changetier.data.ChangeTierCreateSource
import com.hedvig.android.data.changetier.data.ChangeTierDeductibleAddonQuote
import com.hedvig.android.data.changetier.data.ChangeTierDeductibleDisplayItem
import com.hedvig.android.data.changetier.data.ChangeTierDeductibleIntent
import com.hedvig.android.data.changetier.data.ChangeTierRepository
Expand All @@ -13,6 +14,7 @@ import com.hedvig.android.data.changetier.data.Tier
import com.hedvig.android.data.changetier.data.TierDeductibleQuote
import com.hedvig.android.data.contract.ContractGroup
import com.hedvig.android.data.contract.ContractType
import com.hedvig.android.data.productvariant.AddonVariant
import com.hedvig.android.data.productvariant.ProductVariant

internal class FakeChangeTierRepository() : ChangeTierRepository {
Expand Down Expand Up @@ -155,6 +157,133 @@ internal val testQuote3 = TierDeductibleQuote(
addons = emptyList(),
)

internal val testQuoteWithOneAddon = TierDeductibleQuote(
id = "id3",
deductible = Deductible(
UiMoney(0.0, SEK),
deductiblePercentage = 25,
description = "Endast en rörlig del om 25% av skadekostnaden.",
),
displayItems = listOf(
ChangeTierDeductibleDisplayItem(
displayValue = "hhh",
displaySubtitle = "mmm",
displayTitle = "ioi",
),
),
premium = UiMoney(205.0, SEK),
tier = standardTier,
productVariant = ProductVariant(
displayName = "Test",
contractGroup = ContractGroup.RENTAL,
contractType = ContractType.SE_APARTMENT_RENT,
partner = "test",
perils = listOf(),
insurableLimits = listOf(),
documents = listOf(),
displayTierName = "Bas",
tierDescription = "Our most basic coverage",
termsVersion = "termsVersion",
),
addons = listOf(
ChangeTierDeductibleAddonQuote(
addonId = "addonId",
displayName = "Travel Plus",
displayItems = listOf(
ChangeTierDeductibleDisplayItem(
displayTitle = "Coinsured people",
displaySubtitle = null,
displayValue = "Only you",
),
),
previousPremium = UiMoney(29.0, SEK),
premium = UiMoney(30.0, SEK),
addonVariant = AddonVariant(
termsVersion = "terms",
displayName = "addonVariantDisplayName",
product = "product",
perils = emptyList(),
insurableLimits = emptyList(),
documents = emptyList(),
),
),
),
)

internal val testQuoteWithTwoAddons = TierDeductibleQuote(
id = "id3",
deductible = Deductible(
UiMoney(0.0, SEK),
deductiblePercentage = 25,
description = "Endast en rörlig del om 25% av skadekostnaden.",
),
displayItems = listOf(
ChangeTierDeductibleDisplayItem(
displayValue = "hhh",
displaySubtitle = "mmm",
displayTitle = "ioi",
),
),
premium = UiMoney(205.0, SEK),
tier = standardTier,
productVariant = ProductVariant(
displayName = "Test",
contractGroup = ContractGroup.RENTAL,
contractType = ContractType.SE_APARTMENT_RENT,
partner = "test",
perils = listOf(),
insurableLimits = listOf(),
documents = listOf(),
displayTierName = "Bas",
tierDescription = "Our most basic coverage",
termsVersion = "termsVersion",
),
addons = listOf(
ChangeTierDeductibleAddonQuote(
addonId = "addonId",
displayName = "Travel Plus",
displayItems = listOf(
ChangeTierDeductibleDisplayItem(
displayTitle = "Coinsured people",
displaySubtitle = null,
displayValue = "Only you",
),
),
previousPremium = UiMoney(29.0, SEK),
premium = UiMoney(30.0, SEK),
addonVariant = AddonVariant(
termsVersion = "terms",
displayName = "addonVariantDisplayName",
product = "product",
perils = emptyList(),
insurableLimits = emptyList(),
documents = emptyList(),
),
),
ChangeTierDeductibleAddonQuote(
addonId = "addonId2",
displayName = "Travel Plus",
displayItems = listOf(
ChangeTierDeductibleDisplayItem(
displayTitle = "Coinsured people",
displaySubtitle = null,
displayValue = "Only you",
),
),
previousPremium = UiMoney(70.0, SEK),
premium = UiMoney(80.0, SEK),
addonVariant = AddonVariant(
termsVersion = "terms",
displayName = "addonVariantDisplayName",
product = "product",
perils = emptyList(),
insurableLimits = emptyList(),
documents = emptyList(),
),
),
),
)

internal val currentQuote = TierDeductibleQuote(
id = CURRENT_ID,
deductible = Deductible(
Expand Down
Loading
Loading