Coverage Summary for Class: FrequencyValidator (cloud.mindbox.mobile_sdk.inapp.data.validators)

Class Method, % Branch, % Line, % Instruction, %
FrequencyValidator 100% (2/2) 80% (8/10) 100% (11/11) 100% (105/105)
FrequencyValidator$Companion
Total 100% (2/2) 80% (8/10) 100% (11/11) 100% (105/105)


 package cloud.mindbox.mobile_sdk.inapp.data.validators
 
 import cloud.mindbox.mobile_sdk.equalsAny
 import cloud.mindbox.mobile_sdk.logger.mindboxLogI
 import cloud.mindbox.mobile_sdk.models.operation.response.FrequencyDto
 import cloud.mindbox.mobile_sdk.models.operation.response.FrequencyDto.FrequencyOnceDto.Companion.FREQUENCY_KIND_LIFETIME
 import cloud.mindbox.mobile_sdk.models.operation.response.FrequencyDto.FrequencyOnceDto.Companion.FREQUENCY_KIND_SESSION
 import cloud.mindbox.mobile_sdk.models.operation.response.FrequencyDto.FrequencyPeriodicDto.Companion.FREQUENCY_UNIT_DAYS
 import cloud.mindbox.mobile_sdk.models.operation.response.FrequencyDto.FrequencyPeriodicDto.Companion.FREQUENCY_UNIT_HOURS
 import cloud.mindbox.mobile_sdk.models.operation.response.FrequencyDto.FrequencyPeriodicDto.Companion.FREQUENCY_UNIT_MINUTES
 import cloud.mindbox.mobile_sdk.models.operation.response.FrequencyDto.FrequencyPeriodicDto.Companion.FREQUENCY_UNIT_SECONDS
 
 internal class FrequencyValidator : Validator<FrequencyDto> {
     override fun isValid(item: FrequencyDto): Boolean =
         when (item) {
             is FrequencyDto.FrequencyOnceDto -> {
                 val isValid = (item.type == FREQUENCY_TYPE_ONCE && item.kind.equalsAny(ignoreCase = true, values = arrayOf(FREQUENCY_KIND_LIFETIME, FREQUENCY_KIND_SESSION)))
                 mindboxLogI("Current frequency is once and it's kind is ${item.kind}. It is valid = $isValid")
                 isValid
             }
 
             is FrequencyDto.FrequencyPeriodicDto -> {
                 val isValid = item.type == FREQUENCY_TYPE_PERIODIC && item.value > 0 && item.unit.equalsAny(ignoreCase = true,
                     values = arrayOf(FREQUENCY_UNIT_HOURS, FREQUENCY_UNIT_DAYS, FREQUENCY_UNIT_MINUTES, FREQUENCY_UNIT_SECONDS))
                 mindboxLogI("Current frequency is periodic, it's unit is ${item.unit} and delay is ${item.value}. It is valid = $isValid")
                 isValid
             }
         }
 
     internal companion object {
         private const val FREQUENCY_TYPE_ONCE = "once"
         private const val FREQUENCY_TYPE_PERIODIC = "periodic"
     }
 }