add simple LogbackTestExtensionAssert (#6076)

This commit is contained in:
VK-SMILECDR 2024-07-04 13:34:05 -04:00 committed by GitHub
parent 371aad2b08
commit 2aa11b2605
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 65 additions and 0 deletions

View File

@ -0,0 +1,65 @@
/*-
* #%L
* Prior Auth pas
* %%
* Copyright (C) 2014 - 2024 Smile CDR, Inc.
* %%
* All rights reserved.
* #L%
*/
package ca.uhn.test.util;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.spi.ILoggingEvent;
import jakarta.annotation.Nonnull;
import org.assertj.core.api.AbstractAssert;
import org.assertj.core.api.Assertions;
import org.assertj.core.api.Condition;
import java.util.List;
import java.util.function.Predicate;
public class LogbackTestExtensionAssert extends AbstractAssert<LogbackTestExtensionAssert, LogbackTestExtension> {
@Nonnull
public static LogbackTestExtensionAssert assertThat(@Nonnull LogbackTestExtension theLogbackTestExtension) {
return new LogbackTestExtensionAssert(theLogbackTestExtension, LogbackTestExtensionAssert.class);
}
private LogbackTestExtensionAssert(LogbackTestExtension theLogbackTestExtension, Class<?> selfType) {
super(theLogbackTestExtension, selfType);
}
@Nonnull
public LogbackTestExtensionAssert hasError(@Nonnull String theMessage) {
Assertions.assertThat(actual.getLogEvents()).has(eventWithLevelAndMessageContains(Level.ERROR, theMessage));
return this;
}
@Nonnull
public LogbackTestExtensionAssert hasInfo(@Nonnull String theMessage) {
Assertions.assertThat(actual.getLogEvents()).has(eventWithLevelAndMessageContains(Level.INFO, theMessage));
return this;
}
@Nonnull
public LogbackTestExtensionAssert hasDebug(@Nonnull String theMessage) {
Assertions.assertThat(actual.getLogEvents()).has(eventWithLevelAndMessageContains(Level.DEBUG, theMessage));
return this;
}
@Nonnull
public LogbackTestExtensionAssert isEmpty() {
Assertions.assertThat(actual.getLogEvents()).isEmpty();
return this;
}
@Nonnull
private Condition<? super List<? extends ILoggingEvent>> eventWithLevelAndMessageContains(@Nonnull Level theLevel, @Nonnull String theExpected) {
final Predicate<ILoggingEvent> loggingEvent = theLoggingEvent ->
theLoggingEvent.getLevel().equals(theLevel) && theLoggingEvent.getFormattedMessage().contains(theExpected);
final Predicate<List<? extends ILoggingEvent>> loggingEvents = theLoggingEvents ->
theLoggingEvents.stream().anyMatch(loggingEvent);
return new Condition<>(loggingEvents, "has error logging message with level %s and message containing %s", theLevel, theExpected);
}
}