Home / Class/ ListenerTests Class — spring-boot Architecture

ListenerTests Class — spring-boot Architecture

Architecture documentation for the ListenerTests class in EnvironmentPostProcessorApplicationListenerTests.java from the spring-boot codebase.

Entity Profile

Relationship Graph

Source Code

core/spring-boot/src/test/java/org/springframework/boot/support/EnvironmentPostProcessorApplicationListenerTests.java lines 90–186

	@Nested
	class ListenerTests {

		private final DeferredLogs deferredLogs = spy(new DeferredLogs());

		private final DefaultBootstrapContext bootstrapContext = spy(new DefaultBootstrapContext());

		private final EnvironmentPostProcessorApplicationListener listener = new EnvironmentPostProcessorApplicationListener();

		@BeforeEach
		void setup() {
			ReflectionTestUtils.setField(this.listener, "deferredLogs", this.deferredLogs);
			ReflectionTestUtils.setField(this.listener, "postProcessorsFactory",
					(Function<ClassLoader, EnvironmentPostProcessorsFactory>) (
							classLoader) -> EnvironmentPostProcessorsFactory.of(TestEnvironmentPostProcessor.class));
		}

		@Test
		void createUsesSpringFactories() {
			EnvironmentPostProcessorApplicationListener listener = new EnvironmentPostProcessorApplicationListener();
			assertThat(listener.getEnvironmentPostProcessors(null, this.bootstrapContext)).hasSizeGreaterThan(1);
		}

		@Test
		void createWhenHasFactoryUsesFactory() {
			EnvironmentPostProcessorApplicationListener listener = EnvironmentPostProcessorApplicationListener
				.with(EnvironmentPostProcessorsFactory.of(TestEnvironmentPostProcessor.class));
			List<EnvironmentPostProcessor> postProcessors = listener.getEnvironmentPostProcessors(null,
					this.bootstrapContext);
			assertThat(postProcessors).hasSize(1);
			assertThat(postProcessors.get(0)).isInstanceOf(TestEnvironmentPostProcessor.class);
		}

		@Test
		void supportsEventTypeWhenApplicationEnvironmentPreparedEventReturnsTrue() {
			assertThat(this.listener.supportsEventType(ApplicationEnvironmentPreparedEvent.class)).isTrue();
		}

		@Test
		void supportsEventTypeWhenApplicationPreparedEventReturnsTrue() {
			assertThat(this.listener.supportsEventType(ApplicationPreparedEvent.class)).isTrue();
		}

		@Test
		void supportsEventTypeWhenApplicationFailedEventReturnsTrue() {
			assertThat(this.listener.supportsEventType(ApplicationFailedEvent.class)).isTrue();
		}

		@Test
		void supportsEventTypeWhenOtherEventReturnsFalse() {
			assertThat(this.listener.supportsEventType(ApplicationStartingEvent.class)).isFalse();
		}

		@Test
		void onApplicationEventWhenApplicationEnvironmentPreparedEventCallsPostProcessors() {
			SpringApplication application = mock(SpringApplication.class);
			MockEnvironment environment = new MockEnvironment();
			ApplicationEnvironmentPreparedEvent event = new ApplicationEnvironmentPreparedEvent(this.bootstrapContext,
					application, new String[0], environment);
			this.listener.onApplicationEvent(event);
			assertThat(environment.getProperty("processed")).isEqualTo("true");
		}

		@Test
		void onApplicationEventWhenApplicationPreparedEventSwitchesLogs() {
			SpringApplication application = mock(SpringApplication.class);
			ConfigurableApplicationContext context = mock(ConfigurableApplicationContext.class);
			ApplicationPreparedEvent event = new ApplicationPreparedEvent(application, new String[0], context);
			this.listener.onApplicationEvent(event);
			then(this.deferredLogs).should().switchOverAll();
		}

		@Test
		void onApplicationEventWhenApplicationFailedEventSwitchesLogs() {
			SpringApplication application = mock(SpringApplication.class);
			ConfigurableApplicationContext context = mock(ConfigurableApplicationContext.class);
			ApplicationFailedEvent event = new ApplicationFailedEvent(application, new String[0], context,
					new RuntimeException());
			this.listener.onApplicationEvent(event);
			then(this.deferredLogs).should().switchOverAll();
		}

		static class TestEnvironmentPostProcessor implements EnvironmentPostProcessor {

			TestEnvironmentPostProcessor(DeferredLogFactory logFactory, BootstrapRegistry bootstrapRegistry) {
				assertThat(logFactory).isNotNull();
				assertThat(bootstrapRegistry).isNotNull();
			}

			@Override
			public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
				((MockEnvironment) environment).setProperty("processed", "true");
			}

		}

	}

Domain

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free