All Downloads are FREE. Search and download functionalities are using the official Maven repository.

in.specmatic.core.pattern.ValueDetails.kt Maven / Gradle / Ivy

Go to download

Turn your contracts into executable specifications. Contract Driven Development - Collaboratively Design & Independently Deploy MicroServices & MicroFrontends. Deprecation Notice for group ID "in.specmatic" ****************************************************************************************************** Updates for "specmatic-core" will no longer be available under the deprecated group ID "in.specmatic". Please update your dependencies to use the new group ID "io.specmatic". ******************************************************************************************************

There is a newer version: 1.3.39
Show newest version
package `in`.specmatic.core.pattern

data class ValueDetails(val messages: List = emptyList(), private val breadCrumbData: List = emptyList()) {
    fun addDetails(message: String, breadCrumb: String): ValueDetails {
        return ValueDetails(
            messages.addNonBlank(message),
            breadCrumbData.addNonBlank(breadCrumb)
        )
    }

    val breadCrumbs: String
        get() {
            return breadCrumbData.reversed().joinToString(".")
        }

    fun comments(): String? {
        if(messages.isEmpty())
            return null

        val body = messages.joinToString(System.lineSeparator())

        return """
>> $breadCrumbs

   $body
        """.trimIndent()
    }

    private fun List.addNonBlank(
        errorMessage: String
    ) = if (errorMessage.isNotBlank())
        this.plus(errorMessage)
    else
        this
}

fun List.singleLineDescription(): String {
    return this.joinToString(", ") {
        "${it.breadCrumbs} ${it.messages.joinToString(" ").trim()}"
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy