AvailabilityChangeEventTests Class — spring-boot Architecture
Architecture documentation for the AvailabilityChangeEventTests class in AvailabilityChangeEventTests.java from the spring-boot codebase.
Entity Profile
Source Code
core/spring-boot/src/test/java/org/springframework/boot/availability/AvailabilityChangeEventTests.java lines 38–128
class AvailabilityChangeEventTests {
private final Object source = new Object();
@Test
@SuppressWarnings("NullAway") // Test null check
void createWhenStateIsNullThrowsException() {
assertThatIllegalArgumentException().isThrownBy(() -> new AvailabilityChangeEvent<>(this.source, null))
.withMessage("Payload must not be null");
}
@Test
void getStateReturnsState() {
LivenessState state = LivenessState.CORRECT;
AvailabilityChangeEvent<LivenessState> event = new AvailabilityChangeEvent<>(this.source, state);
assertThat(event.getState()).isEqualTo(state);
}
@Test
void getResolvableType() {
LivenessState state = LivenessState.CORRECT;
AvailabilityChangeEvent<LivenessState> event = new AvailabilityChangeEvent<>(this.source, state);
ResolvableType type = event.getResolvableType();
assertThat(type.resolve()).isEqualTo(AvailabilityChangeEvent.class);
assertThat(type.resolveGeneric()).isEqualTo(LivenessState.class);
}
@Test
void getResolvableTypeWhenSubclassedEnum() {
SubClassedEnum state = SubClassedEnum.TWO;
AvailabilityChangeEvent<SubClassedEnum> event = new AvailabilityChangeEvent<>(this.source, state);
ResolvableType type = event.getResolvableType();
assertThat(type.resolve()).isEqualTo(AvailabilityChangeEvent.class);
assertThat(type.resolveGeneric()).isEqualTo(SubClassedEnum.class);
}
@Test
void publishPublishesEvent() {
ApplicationContext context = mock(ApplicationContext.class);
AvailabilityState state = LivenessState.CORRECT;
AvailabilityChangeEvent.publish(context, state);
then(context).should()
.publishEvent(assertArg((event) -> assertThat(event).isInstanceOfSatisfying(AvailabilityChangeEvent.class,
(castedEvent) -> {
assertThat(castedEvent.getSource()).isEqualTo(context);
assertThat(castedEvent.getState()).isEqualTo(state);
})));
}
@Test
void publishEvenToContextConsidersGenericType() {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
AvailabilityChangeEvent.publish(context, LivenessState.CORRECT);
AvailabilityChangeEvent.publish(context, ReadinessState.ACCEPTING_TRAFFIC);
}
enum SubClassedEnum implements AvailabilityState {
ONE {
@Override
String getDescription() {
return "I have been overridden";
}
},
TWO {
@Override
String getDescription() {
return "I have also been overridden";
}
};
abstract String getDescription();
}
@Configuration
static class Config {
@EventListener
void onLivenessAvailabilityChange(AvailabilityChangeEvent<LivenessState> event) {
assertThat(event.getState()).isInstanceOf(LivenessState.class).isEqualTo(LivenessState.CORRECT);
}
}
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free