mirror of
https://github.com/jlengrand/atrium.git
synced 2026-03-10 08:01:19 +00:00
Make collectAssertions fail with empty assertionsCreator lambda
This commit is contained in:
@@ -3,9 +3,13 @@ package ch.tutteli.atrium.logic.creating.collectors
|
||||
import ch.tutteli.atrium.assertions.AssertionGroup
|
||||
import ch.tutteli.atrium.assertions.ExplanatoryAssertionGroupType
|
||||
import ch.tutteli.atrium.assertions.builders.AssertionsOption
|
||||
import ch.tutteli.atrium.assertions.builders.ExplanatoryAssertionGroupFinalStep
|
||||
import ch.tutteli.atrium.core.None
|
||||
import ch.tutteli.atrium.core.Option
|
||||
import ch.tutteli.atrium.creating.AssertionContainer
|
||||
import ch.tutteli.atrium.creating.CollectingExpect
|
||||
import ch.tutteli.atrium.creating.Expect
|
||||
import ch.tutteli.atrium.creating.ExperimentalComponentFactoryContainer
|
||||
import ch.tutteli.atrium.logic.collectForCompositionBasedOnSubject
|
||||
|
||||
/**
|
||||
@@ -13,8 +17,19 @@ import ch.tutteli.atrium.logic.collectForCompositionBasedOnSubject
|
||||
*
|
||||
* //TODO 0.18.0 in case we somehow incorporate the current container in AssertionsOptions, then remove container as parameter
|
||||
*/
|
||||
fun <T, G : ExplanatoryAssertionGroupType, R> AssertionsOption<G, R>.collectAssertions(
|
||||
@Suppress("DEPRECATION" /* OptIn is only available since 1.3.70 which we cannot use if we want to support 1.2 */)
|
||||
@UseExperimental(ExperimentalComponentFactoryContainer::class)
|
||||
fun <T, G : ExplanatoryAssertionGroupType, R: ExplanatoryAssertionGroupFinalStep> AssertionsOption<G, R>.collectAssertions(
|
||||
container: AssertionContainer<*>,
|
||||
maybeSubject: Option<T>,
|
||||
assertionCreator: Expect<T>.() -> Unit
|
||||
): R = withAssertions(container.collectForCompositionBasedOnSubject(maybeSubject, assertionCreator))
|
||||
): ExplanatoryAssertionGroupFinalStep {
|
||||
val collectingExpect = CollectingExpect<T>(None, container.components)
|
||||
// not using addAssertionsCreatedBy on purpose so that we don't append a failing assertion
|
||||
collectingExpect.assertionCreator()
|
||||
return withAssertions(container.collectForCompositionBasedOnSubject(maybeSubject, assertionCreator))
|
||||
.let {
|
||||
if(collectingExpect.getAssertions().isEmpty()) it.failing
|
||||
else it
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,9 +8,7 @@ import ch.tutteli.atrium.core.Some
|
||||
import ch.tutteli.atrium.core.falseProvider
|
||||
import ch.tutteli.atrium.core.trueProvider
|
||||
import ch.tutteli.atrium.creating.AssertionContainer
|
||||
import ch.tutteli.atrium.creating.CollectingExpect
|
||||
import ch.tutteli.atrium.creating.Expect
|
||||
import ch.tutteli.atrium.creating.ExperimentalComponentFactoryContainer
|
||||
import ch.tutteli.atrium.logic.collectBasedOnSubject
|
||||
import ch.tutteli.atrium.logic.creating.collectors.collectAssertions
|
||||
import ch.tutteli.atrium.reporting.Text
|
||||
@@ -38,8 +36,6 @@ internal fun <E : Any> allCreatedAssertionsHold(
|
||||
else -> assertionCreator != null && container.collectBasedOnSubject(Some(subject), assertionCreator).holds()
|
||||
}
|
||||
|
||||
@Suppress("DEPRECATION" /* OptIn is only available since 1.3.70 which we cannot use if we want to support 1.2 */)
|
||||
@UseExperimental(ExperimentalComponentFactoryContainer::class)
|
||||
internal fun <E : Any> createExplanatoryAssertionGroup(
|
||||
container: AssertionContainer<*>,
|
||||
assertionCreatorOrNull: (Expect<E>.() -> Unit)?
|
||||
@@ -50,14 +46,7 @@ internal fun <E : Any> createExplanatoryAssertionGroup(
|
||||
//TODO 0.18.0 looks a lot like toBeNullIfNullGiven
|
||||
if (assertionCreatorOrNull != null) {
|
||||
// we don't use a subject, we will not show it anyway
|
||||
val collectingExpect = CollectingExpect<E>(None, container.components)
|
||||
// not using addAssertionsCreatedBy on purpose so that we don't append a failing assertion
|
||||
collectingExpect.assertionCreatorOrNull()
|
||||
if(collectingExpect.getAssertions().isEmpty()) {
|
||||
it.collectAssertions(container, None, assertionCreatorOrNull).failing
|
||||
} else {
|
||||
it.collectAssertions(container, None, assertionCreatorOrNull)
|
||||
}
|
||||
it.collectAssertions(container, None, assertionCreatorOrNull)
|
||||
} else {
|
||||
it.withAssertion(
|
||||
// it is for an explanatoryGroup where it does not matter if the assertion holds or not
|
||||
|
||||
Reference in New Issue
Block a user