Coverage Summary for Class: SnackBarDtoDataFiller (cloud.mindbox.mobile_sdk.inapp.data.managers.data_filler)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| SnackBarDtoDataFiller |
100%
(1/1)
|
100%
(2/2)
|
43.3%
(39/90)
|
88.4%
(38/43)
|
73.2%
(240/328)
|
package cloud.mindbox.mobile_sdk.inapp.data.managers.data_filler
import cloud.mindbox.mobile_sdk.inapp.data.dto.PayloadDto
import cloud.mindbox.mobile_sdk.inapp.data.dto.PayloadDto.SnackbarDto.ContentDto.PositionDto
import cloud.mindbox.mobile_sdk.inapp.data.dto.PayloadDto.SnackbarDto.ContentDto.PositionDto.GravityDto
import cloud.mindbox.mobile_sdk.inapp.data.dto.PayloadDto.SnackbarDto.ContentDto.PositionDto.MarginDto
import cloud.mindbox.mobile_sdk.logger.mindboxLogI
internal class SnackBarDtoDataFiller(private val elementDtoDataFiller: SnackbarElementDtoDataFiller) : DataFiller<PayloadDto.SnackbarDto?> {
private val horizontalPositionNames = setOf("center", "left", "right")
private val verticalPositionNames = setOf("center", "top", "bottom")
private val marginNames = setOf("dp")
private val defaultMarginKind = "dp"
private val defaultHorizontalGravity = "center"
private val defaultVerticalGravity = "bottom"
private val defaultBottomMargin = 0.0
private val defaultTopMargin = 0.0
private val defaultLeftMargin = 0.0
private val defaultRightMargin = 0.0
override fun fillData(item: PayloadDto.SnackbarDto?): PayloadDto.SnackbarDto? {
val newGravityDto = if (item
?.content
?.position
?.gravity
?.horizontal != null &&
item.content.position.gravity.vertical != null &&
horizontalPositionNames.contains(item.content.position.gravity.horizontal) &&
verticalPositionNames.contains(
item.content.position.gravity.vertical
)
) {
item.content.position.gravity
} else {
val gravityDto = GravityDto(
horizontal = if (horizontalPositionNames.contains(item?.content?.position?.gravity?.horizontal)) item?.content?.position?.gravity?.horizontal else defaultHorizontalGravity,
vertical = if (verticalPositionNames.contains(item?.content?.position?.gravity?.vertical)) item?.content?.position?.gravity?.vertical else defaultVerticalGravity
)
mindboxLogI(
"Unknown gravity: horizontal = ${item?.content?.position?.gravity?.horizontal} " +
"and vertical = ${item?.content?.position?.gravity?.vertical}. Applying default $gravityDto"
)
gravityDto
}
val newMarginDto =
if (item?.content?.position?.margin != null && marginNames.contains(item.content.position.margin.kind)) {
item.content.position.margin
} else {
val marginDto = MarginDto(
bottom = defaultBottomMargin,
kind = defaultMarginKind,
left = defaultLeftMargin,
right = defaultRightMargin,
top = defaultTopMargin
)
mindboxLogI("Unknown margin ${item?.content?.position?.margin?.kind}. Applying default $marginDto")
marginDto
}
return item?.copy(
content = item.content?.copy(
elements = elementDtoDataFiller.fillData(
item.content.elements
),
position = PositionDto(
gravity = newGravityDto,
margin = newMarginDto
),
), type = PayloadDto.SnackbarDto.SNACKBAR_JSON_NAME
)
}
}