Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/feature/feature-home/src/main/graphql/QueryHome.graphql
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
query Home($claimsHistoryFlag: Boolean!, $resumeClaimEnabled: Boolean!) {
query Home($claimsHistoryFlag: Boolean!, $resumeClaimEnabled: Boolean!, $disableShopSessions: Boolean!) {
currentMember {
firstName
resumableClaimIntent @include(if: $resumeClaimEnabled) {
Expand Down Expand Up @@ -80,7 +80,7 @@ query Home($claimsHistoryFlag: Boolean!, $resumeClaimEnabled: Boolean!) {
}
}
}
ongoingShopSessions {
ongoingShopSessions @skip(if: $disableShopSessions) {
id
display {
title
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ internal class GetHomeDataUseCaseImpl(
)
.flatMapLatest { (resumeClaimEnabled, disableShopSessions) ->
combine(
apolloClient.query(HomeQuery(true, resumeClaimEnabled))
apolloClient.query(HomeQuery(true, resumeClaimEnabled, disableShopSessions))
.fetchPolicy(if (forceNetworkFetch) FetchPolicy.NetworkOnly else FetchPolicy.CacheAndNetwork)
.safeFlow(),
flow {
Expand Down Expand Up @@ -156,21 +156,17 @@ internal class GetHomeDataUseCaseImpl(
val otherCrossSellsData = crossSellsData.otherCrossSells.map {
it.toCrossSell()
}
val ongoingShopSessions = if (disableShopSessions) {
emptyList()
} else {
homeQueryData.currentMember.ongoingShopSessions.map { session ->
OngoingShopSession(
id = session.id,
title = session.display.title,
subtitle = session.display.subtitle,
monthlyNet = session.display.monthlyNet?.let {
UiMoney(it.amount, UiCurrencyCode.fromCurrencyCode(it.currencyCode))
},
resumeUrl = session.display.resumeUrl,
pillowImageUrl = session.display.pillowImage?.src,
)
}
val ongoingShopSessions = homeQueryData.currentMember.ongoingShopSessions.orEmpty().map { session ->
OngoingShopSession(
id = session.id,
title = session.display.title,
subtitle = session.display.subtitle,
monthlyNet = session.display.monthlyNet?.let {
UiMoney(it.amount, UiCurrencyCode.fromCurrencyCode(it.currencyCode))
},
resumeUrl = session.display.resumeUrl,
pillowImageUrl = session.display.pillowImage?.src,
)
}
val recommendedAddon = crossSellsData.recommendedAddon?.let {
RecommendedAddon(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ internal class GetHomeUseCaseTest {
val getHomeDataUseCase = GetHomeDataUseCaseImpl(
apolloClient.apply {
registerTestResponse(
HomeQuery(true, true),
HomeQuery(true, true, true),
HomeQuery.Data(OctopusFakeResolver),
)
apolloClient.registerTestResponse(
Expand Down Expand Up @@ -153,7 +153,7 @@ internal class GetHomeUseCaseTest {
val getHomeDataUseCase = GetHomeDataUseCaseImpl(
apolloClient.apply {
registerTestResponse(
HomeQuery(true, true),
HomeQuery(true, true, true),
HomeQuery.Data(OctopusFakeResolver),
)
apolloClient.registerTestResponse(
Expand Down Expand Up @@ -188,7 +188,7 @@ internal class GetHomeUseCaseTest {
val getHomeDataUseCase = testUseCaseWithoutReminders()

apolloClient.registerTestResponse(
HomeQuery(true, true),
HomeQuery(true, true, true),
HomeQuery.Data(OctopusFakeResolver) {
currentMember = buildMember {
importantMessages = List(3) { index ->
Expand Down Expand Up @@ -230,7 +230,7 @@ internal class GetHomeUseCaseTest {
val getHomeDataUseCase = testUseCaseWithoutReminders()

apolloClient.registerTestResponse(
HomeQuery(true, true),
HomeQuery(true, true, true),
HomeQuery.Data(OctopusFakeResolver) {
currentMember = buildMember {
importantMessages = emptyList()
Expand Down Expand Up @@ -259,7 +259,7 @@ internal class GetHomeUseCaseTest {
val getHomeDataUseCase = testUseCaseWithoutReminders()

apolloClient.registerTestResponse(
HomeQuery(true, true),
HomeQuery(true, true, true),
HomeQuery.Data(OctopusFakeResolver) {
currentMember = buildMember {
claimsActive = listOf(
Expand Down Expand Up @@ -301,7 +301,7 @@ internal class GetHomeUseCaseTest {
val getHomeDataUseCase = testUseCaseWithoutReminders()

apolloClient.registerTestResponse(
HomeQuery(true, true),
HomeQuery(true, true, true),
HomeQuery.Data(OctopusFakeResolver) {
currentMember = buildMember {
claimsActive = emptyList()
Expand Down Expand Up @@ -330,7 +330,7 @@ internal class GetHomeUseCaseTest {
val getHomeDataUseCase = testUseCaseWithoutReminders()

apolloClient.registerTestResponse(
HomeQuery(true, true),
HomeQuery(true, true, true),
HomeQuery.Data(OctopusFakeResolver) {
currentMember = buildMember {
activeContracts = emptyList()
Expand Down Expand Up @@ -377,7 +377,7 @@ internal class GetHomeUseCaseTest {
testClock.now().toLocalDateTime(timeZone).date
}
apolloClient.registerTestResponse(
HomeQuery(true, true),
HomeQuery(true, true, true),
HomeQuery.Data(OctopusFakeResolverWithFilledLists) {
currentMember = buildMember {
activeContracts = listOf(
Expand Down Expand Up @@ -419,7 +419,7 @@ internal class GetHomeUseCaseTest {
val getHomeDataUseCase = testUseCaseWithoutReminders(featureManager)

apolloClient.registerTestResponse(
HomeQuery(true, true),
HomeQuery(true, true, true),
HomeQuery.Data(OctopusFakeResolver) {
currentMember = buildMember {
activeContracts = emptyList()
Expand Down Expand Up @@ -472,7 +472,7 @@ internal class GetHomeUseCaseTest {
val getHomeDataUseCase = testUseCaseWithoutReminders(featureManager)

apolloClient.registerTestResponse(
HomeQuery(true, false),
HomeQuery(true, false, false),
HomeQuery.Data(OctopusFakeResolver) {
currentMember = buildMember {
resumableClaimIntent = null
Expand Down Expand Up @@ -545,7 +545,7 @@ internal class GetHomeUseCaseTest {
val getHomeDataUseCase = testUseCaseWithoutReminders(featureManager)

apolloClient.registerTestResponse(
HomeQuery(true, false),
HomeQuery(true, false, false),
HomeQuery.Data(OctopusFakeResolver),
)
apolloClient.registerTestResponse(
Expand Down Expand Up @@ -607,7 +607,7 @@ internal class GetHomeUseCaseTest {
val getHomeDataUseCase = testUseCaseWithoutReminders(featureManager)

apolloClient.registerTestResponse(
HomeQuery(true, false),
HomeQuery(true, false, false),
HomeQuery.Data(OctopusFakeResolver),
)
apolloClient.registerTestResponse(
Expand Down Expand Up @@ -659,7 +659,7 @@ internal class GetHomeUseCaseTest {
val getHomeDataUseCase = testUseCaseWithoutReminders(featureManager)

apolloClient.registerTestResponse(
HomeQuery(true, true),
HomeQuery(true, true, true),
HomeQuery.Data(OctopusFakeResolver),
)
apolloClient.registerTestResponse(
Expand Down Expand Up @@ -702,7 +702,7 @@ internal class GetHomeUseCaseTest {
val getHomeDataUseCase = testUseCaseWithoutReminders()

apolloClient.registerTestResponse(
HomeQuery(true, true),
HomeQuery(true, true, true),
HomeQuery.Data(OctopusFakeResolver) {
currentMember = buildMember {
crossSellV2 = buildCrossSellV2 {
Expand Down Expand Up @@ -768,7 +768,7 @@ internal class GetHomeUseCaseTest {
// The primary HomeQuery gate succeeds; the two auxiliary chat signals fail at the network level.
// The screen must still load (Right) with those signals folded to safe defaults rather than blanking.
apolloClient.registerTestResponse(
HomeQuery(true, false),
HomeQuery(true, false, false),
HomeQuery.Data(OctopusFakeResolver),
)
apolloClient.registerTestNetworkError(UnreadMessageCountQuery())
Expand All @@ -793,7 +793,7 @@ internal class GetHomeUseCaseTest {
val getHomeDataUseCase = testUseCaseWithoutReminders(featureManager)

apolloClient.registerTestResponse(
HomeQuery(true, false),
HomeQuery(true, false, false),
HomeQuery.Data(OctopusFakeResolver) {
currentMember = buildMember {
ongoingShopSessions = listOf(
Expand Down Expand Up @@ -839,7 +839,7 @@ internal class GetHomeUseCaseTest {
}

@Test
fun `ongoing shop sessions are dropped when the kill switch is on`() = runTest {
fun `ongoing shop sessions are not requested when the kill switch is on`() = runTest {
val featureManager = FakeFeatureManager(
mapOf(
Feature.ENABLE_NEW_CONVERSATION_FROM_INBOX to false,
Expand All @@ -849,19 +849,13 @@ internal class GetHomeUseCaseTest {
)
val getHomeDataUseCase = testUseCaseWithoutReminders(featureManager)

// The response is registered for disableShopSessions = true only. If the field were still asked for, no
// registered response would match the sent variables and the query would fail instead of returning data.
apolloClient.registerTestResponse(
HomeQuery(true, false),
HomeQuery(true, false, true),
HomeQuery.Data(OctopusFakeResolver) {
currentMember = buildMember {
ongoingShopSessions = listOf(
buildShopSession {
id = "session-1"
display = buildShopSessionDisplay {
title = "Home + Accident"
resumeUrl = "https://hedvig.com/resume/session-1"
}
},
)
ongoingShopSessions = emptyList()
}
},
)
Expand Down
Loading