Home / Class/ MutuallyExclusiveConfigurationPropertiesExceptionTests Class — spring-boot Architecture

MutuallyExclusiveConfigurationPropertiesExceptionTests Class — spring-boot Architecture

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

Entity Profile

Source Code

core/spring-boot/src/test/java/org/springframework/boot/context/properties/source/MutuallyExclusiveConfigurationPropertiesExceptionTests.java lines 35–129

class MutuallyExclusiveConfigurationPropertiesExceptionTests {

	@Test
	@SuppressWarnings("NullAway") // Test null check
	void createWhenConfiguredNamesIsNullThrowsException() {
		assertThatIllegalArgumentException()
			.isThrownBy(() -> new MutuallyExclusiveConfigurationPropertiesException(null, Arrays.asList("a", "b")))
			.withMessage("'configuredNames' must contain 2 or more names");
	}

	@Test
	void createWhenConfiguredNamesContainsOneElementThrowsException() {
		assertThatIllegalArgumentException()
			.isThrownBy(() -> new MutuallyExclusiveConfigurationPropertiesException(Collections.singleton("a"),
					Arrays.asList("a", "b")))
			.withMessage("'configuredNames' must contain 2 or more names");
	}

	@Test
	@SuppressWarnings("NullAway") // Test null check
	void createWhenMutuallyExclusiveNamesIsNullThrowsException() {
		assertThatIllegalArgumentException()
			.isThrownBy(() -> new MutuallyExclusiveConfigurationPropertiesException(Arrays.asList("a", "b"), null))
			.withMessage("'mutuallyExclusiveNames' must contain 2 or more names");
	}

	@Test
	void createWhenMutuallyExclusiveNamesContainsOneElementThrowsException() {
		assertThatIllegalArgumentException()
			.isThrownBy(() -> new MutuallyExclusiveConfigurationPropertiesException(Arrays.asList("a", "b"),
					Collections.singleton("a")))
			.withMessage("'mutuallyExclusiveNames' must contain 2 or more names");
	}

	@Test
	void createBuildsSensibleMessage() {
		List<String> names = Arrays.asList("a", "b");
		assertThat(new MutuallyExclusiveConfigurationPropertiesException(names, names))
			.hasMessage("The configuration properties 'a, b' are mutually exclusive "
					+ "and 'a, b' have been configured together");
	}

	@Test
	void getConfiguredNamesReturnsConfiguredNames() {
		List<String> configuredNames = Arrays.asList("a", "b");
		List<String> mutuallyExclusiveNames = Arrays.asList("a", "b", "c");
		MutuallyExclusiveConfigurationPropertiesException exception = new MutuallyExclusiveConfigurationPropertiesException(
				configuredNames, mutuallyExclusiveNames);
		assertThat(exception.getConfiguredNames()).hasSameElementsAs(configuredNames);
	}

	@Test
	void getMutuallyExclusiveNamesReturnsMutuallyExclusiveNames() {
		List<String> configuredNames = Arrays.asList("a", "b");
		List<String> mutuallyExclusiveNames = Arrays.asList("a", "b", "c");
		MutuallyExclusiveConfigurationPropertiesException exception = new MutuallyExclusiveConfigurationPropertiesException(
				configuredNames, mutuallyExclusiveNames);
		assertThat(exception.getMutuallyExclusiveNames()).hasSameElementsAs(mutuallyExclusiveNames);
	}

	@Test
	void throwIfMultipleNonNullValuesInWhenEntriesHasAllNullsDoesNotThrowException() {
		assertThatNoException().isThrownBy(
				() -> MutuallyExclusiveConfigurationPropertiesException.throwIfMultipleNonNullValuesIn((entries) -> {
					entries.put("a", null);
					entries.put("b", null);
					entries.put("c", null);
				}));
	}

	@Test
	void throwIfMultipleNonNullValuesInWhenEntriesHasSingleNonNullDoesNotThrowException() {
		assertThatNoException().isThrownBy(
				() -> MutuallyExclusiveConfigurationPropertiesException.throwIfMultipleNonNullValuesIn((entries) -> {
					entries.put("a", null);
					entries.put("b", "B");
					entries.put("c", null);
				}));
	}

	@Test
	void throwIfMultipleNonNullValuesInWhenEntriesHasTwoNonNullsThrowsException() {
		assertThatExceptionOfType(MutuallyExclusiveConfigurationPropertiesException.class).isThrownBy(
				() -> MutuallyExclusiveConfigurationPropertiesException.throwIfMultipleNonNullValuesIn((entries) -> {
					entries.put("a", "a");
					entries.put("b", "B");
					entries.put("c", null);
				}))
			.satisfies((ex) -> {
				assertThat(ex.getConfiguredNames()).containsExactly("a", "b");
				assertThat(ex.getMutuallyExclusiveNames()).containsExactly("a", "b", "c");
			});
	}

}

Analyze Your Own Codebase

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

Try Supermodel Free