@Test public void testEnum() throws Exception { final ConfigurationOption<TestEnum> option = ConfigurationOption.enumOption(TestEnum.class) .key("test.enum") .dynamic(true) .buildWithDefault(TestEnum.FOO); final ConfigurationRegistry configuration = createConfiguration(Collections.singletonList(option), new SimpleSource()); assertThat(option.getValidOptions()).containsExactlyInAnyOrder("FOO", "BAR"); assertThat(option.getValidOptionsLabelMap()).containsEntry("FOO", "foo").containsEntry("BAR", "bar"); assertThat(option.getValue()).isEqualTo(TestEnum.FOO); configuration.save("test.enum", "BAR", SimpleSource.NAME); assertThat(option.getValue()).isEqualTo(TestEnum.BAR); assertThatThrownBy(() -> configuration.save("test.enum", "BAZ", SimpleSource.NAME)) .isInstanceOf(IllegalArgumentException.class); }