Skip to content

Commit 1cf7d8a

Browse files
sergeysozinovsozinov
authored andcommitted
WMSDK-410: change slidingExpiration contract
1 parent a9d18fa commit 1cf7d8a

File tree

14 files changed

+174
-13
lines changed

14 files changed

+174
-13
lines changed

sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/mapper/InAppMapper.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ internal class InAppMapper {
467467
)
468468

469469
fun mapToSlidingExpiration(slidingExpirationDtoBlank: SettingsDtoBlank.SlidingExpirationDtoBlank) = SlidingExpirationDto(
470-
inappSession = slidingExpirationDtoBlank.inappSession
470+
config = slidingExpirationDtoBlank.config
471471
)
472472

473473
private fun getTargetingProductSegmentationsList(targeting: TreeTargeting): List<String> {

sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/repositories/MobileConfigRepositoryImpl.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,8 @@ internal class MobileConfigRepositoryImpl(
160160
null
161161
}
162162

163-
val slidingExpiration = runCatching { getInAppSession(configBlank) }.getOrNull {
164-
mindboxLogW("Unable to get InAppSession settings $it")
163+
val slidingExpiration = runCatching { getConfigSession(configBlank) }.getOrNull {
164+
mindboxLogW("Unable to get slidingExpiration settings $it")
165165
}
166166

167167
return SettingsDto(operations, ttl, slidingExpiration)
@@ -179,15 +179,15 @@ internal class MobileConfigRepositoryImpl(
179179
null
180180
}
181181

182-
private fun getInAppSession(configBlank: InAppConfigResponseBlank?): SlidingExpirationDto? =
182+
private fun getConfigSession(configBlank: InAppConfigResponseBlank?): SlidingExpirationDto? =
183183
try {
184184
configBlank?.settings?.slidingExpiration?.takeIf { slidingExpirationDtoBlank ->
185185
slidingExpirationValidator.isValid(slidingExpirationDtoBlank)
186186
}?.let { slidingExpirationDtoBlank ->
187187
inAppMapper.mapToSlidingExpiration(slidingExpirationDtoBlank)
188188
}
189189
} catch (e: Exception) {
190-
mindboxLogE("Error parse inappsSession time", e)
190+
mindboxLogE("Error parse config session time", e)
191191
null
192192
}
193193

sdk/src/main/java/cloud/mindbox/mobile_sdk/inapp/data/validators/SlidingExpirationParametersValidator.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ import cloud.mindbox.mobile_sdk.utils.loggingRunCatching
77
internal class SlidingExpirationParametersValidator : Validator<SettingsDtoBlank.SlidingExpirationDtoBlank> {
88
override fun isValid(item: SettingsDtoBlank.SlidingExpirationDtoBlank): Boolean =
99
loggingRunCatching(false) {
10-
item.inappSession.parseTimeSpanToMillis() > 0
10+
item.config.parseTimeSpanToMillis() > 0
1111
}
1212
}

sdk/src/main/java/cloud/mindbox/mobile_sdk/managers/MobileConfigSettingsManagerImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import kotlin.time.Duration.Companion.milliseconds
88

99
internal class MobileConfigSettingsManagerImpl(private val sessionStorageManager: SessionStorageManager) : MobileConfigSettingsManager {
1010
override fun saveSessionTime(config: InAppConfigResponse) {
11-
config.settings?.slidingExpiration?.inappSession?.parseTimeSpanToMillis()?.let { sessionTime ->
11+
config.settings?.slidingExpiration?.config?.parseTimeSpanToMillis()?.let { sessionTime ->
1212
if (sessionTime > 0) {
1313
sessionStorageManager.sessionTime = sessionTime.milliseconds
1414
mindboxLogI("Session time set to ${sessionStorageManager.sessionTime.inWholeMilliseconds} ms")

sdk/src/main/java/cloud/mindbox/mobile_sdk/models/operation/response/InAppConfigResponse.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ internal data class SettingsDtoBlank(
3535
)
3636

3737
internal data class SlidingExpirationDtoBlank(
38-
@SerializedName("inappSession")
39-
val inappSession: String
38+
@SerializedName("config")
39+
val config: String
4040
)
4141
}
4242

@@ -60,8 +60,8 @@ internal data class TtlDto(
6060
)
6161

6262
internal data class SlidingExpirationDto(
63-
@SerializedName("inappSession")
64-
val inappSession: String
63+
@SerializedName("config")
64+
val config: String
6565
)
6666

6767
internal data class LogRequestDto(

sdk/src/test/java/cloud/mindbox/mobile_sdk/inapp/data/managers/serialization/SettingsMobileConfigSerializationManagerTest.kt

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ class SettingsMobileConfigSerializationManagerTest {
9797

9898
assertNotNull(config.settings)
9999
assertEquals(3, config.settings!!.operations!!.size)
100+
assertNotNull(config.settings.ttl?.inApps)
101+
assertNotNull(config.settings.slidingExpiration?.config)
100102

101103
assertNotNull(config.abtests)
102104
assertEquals(2, config.abtests!!.size)
@@ -114,6 +116,9 @@ class SettingsMobileConfigSerializationManagerTest {
114116

115117
assertNotNull(config.ttl)
116118
assertNotNull(config.ttl?.inApps)
119+
120+
assertNotNull(config.slidingExpiration)
121+
assertNotNull(config.slidingExpiration?.config)
117122
}
118123

119124
// MARK: - Operations
@@ -441,4 +446,80 @@ class SettingsMobileConfigSerializationManagerTest {
441446
config.ttl?.inApps,
442447
)
443448
}
449+
450+
// MARK: - SlidingExpiration
451+
452+
@Test
453+
fun settings_config_withSlidingExpirationError_shouldSetTtlToNull() {
454+
val json = getJson("ConfigParsing/Settings/SlidingExpirationErrors/SettingsSlidingExpirationError.json")
455+
val config = manager.deserializeSettings(json)!!
456+
457+
assertNotNull("Operations must be successfully parsed", config.operations)
458+
assertNotNull(config.operations?.get("viewProduct"))
459+
assertNotNull(config.operations?.get("viewCategory"))
460+
assertNotNull(config.operations?.get("setCart"))
461+
462+
assertNotNull("TTL must be successfully parsed", config.ttl)
463+
assertNotNull("TTL must be successfully parsed", config.ttl?.inApps)
464+
465+
assertNull("SlidingExpiration must be `null` if the key `slidingExpiration` is not found", config.slidingExpiration)
466+
assertNull("Config session time must be `null`", config.slidingExpiration?.config)
467+
}
468+
469+
@Test
470+
fun settings_config_withSlidingExpirationTypeError_shouldSetTtlToNull() {
471+
val json = getJson("ConfigParsing/Settings/SlidingExpirationErrors/SettingsSlidingExpirationTypeError.json")
472+
val config = manager.deserializeSettings(json)!!
473+
474+
assertNotNull("Operations must be successfully parsed", config.operations)
475+
assertNotNull(config.operations?.get("viewProduct"))
476+
assertNotNull(config.operations?.get("viewCategory"))
477+
assertNotNull(config.operations?.get("setCart"))
478+
479+
assertNotNull("TTL must be successfully parsed", config.ttl)
480+
assertNotNull("TTL must be successfully parsed", config.ttl?.inApps)
481+
482+
assertNull(
483+
"SlidingExpiration must be `null` if the type of `config` is not a `slidingExpiration`",
484+
config.slidingExpiration,
485+
)
486+
assertNull("Config session time must be `null`", config.slidingExpiration?.config)
487+
}
488+
489+
@Test
490+
fun settings_config_withSlidingExpirationConfigError_shouldSetTtlToNull() {
491+
val json = getJson("ConfigParsing/Settings/SlidingExpirationErrors/SettingsSlidingExpirationConfigsError.json")
492+
val config = manager.deserializeSettings(json)!!
493+
494+
assertNotNull("Operations must be successfully parsed", config.operations)
495+
assertNotNull(config.operations?.get("viewProduct"))
496+
assertNotNull(config.operations?.get("viewCategory"))
497+
assertNotNull(config.operations?.get("setCart"))
498+
499+
assertNotNull("TTL must be successfully parsed", config.ttl)
500+
assertNotNull("TTL must be successfully parsed", config.ttl?.inApps)
501+
502+
assertNull("SlidingExpiration must be `null` if the key `config` is not found", config.slidingExpiration)
503+
assertNull("Config session time must be `null`", config.slidingExpiration?.config)
504+
}
505+
506+
@Test
507+
fun settings_config_withSlidingExpirationConfigTypeError_shouldSetTtlToNull() {
508+
val json = getJson("ConfigParsing/Settings/SlidingExpirationErrors/SettingsSlidingExpirationConfigTypeError.json")
509+
val config = manager.deserializeSettings(json)!!
510+
511+
assertNotNull("Operations must be successfully parsed", config.operations)
512+
assertNotNull(config.operations?.get("viewProduct"))
513+
assertNotNull(config.operations?.get("viewCategory"))
514+
assertNotNull(config.operations?.get("setCart"))
515+
516+
assertNotNull("TTL must be successfully parsed", config.ttl)
517+
assertNotNull("TTL must be successfully parsed", config.ttl?.inApps)
518+
519+
assertNull("SlidingExpiration must be `null` if the key `config` is not a `String`", config.slidingExpiration)
520+
assertNull(
521+
"Config session time must be `null` if the key `config` is not a `String`",
522+
config.slidingExpiration?.config,
523+
)
524+
}
444525
}

sdk/src/test/java/cloud/mindbox/mobile_sdk/models/SettingsStub.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ internal class SettingsStub {
1414
operations = emptyMap(),
1515
ttl = null,
1616
slidingExpiration = SlidingExpirationDto(
17-
inappSession = timeSpan
17+
config = timeSpan
1818
)
1919
),
2020
abtests = null

sdk/src/test/resources/ConfigParsing/Config/ConfigWithSettingsABTestsMonitoringInapps.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@
324324
"inapps": "1.00:00:00"
325325
},
326326
"slidingExpiration": {
327-
"inappSession": "1.00:00:00"
327+
"config": "1.00:00:00"
328328
}
329329
},
330330
"abtests": [

sdk/src/test/resources/ConfigParsing/ConfigWithSettingsABTestsMonitoringInapps.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,9 @@
322322
},
323323
"ttl": {
324324
"inapps": "1.00:00:00"
325+
},
326+
"slidingExpiration": {
327+
"config": "0.00:30:00"
325328
}
326329
},
327330
"abtests": [

sdk/src/test/resources/ConfigParsing/Settings/SettingsConfig.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,8 @@
1212
},
1313
"ttl": {
1414
"inapps": "1.00:00:00"
15+
},
16+
"slidingExpiration": {
17+
"config": "0.00:30:00"
1518
}
1619
}

0 commit comments

Comments
 (0)