@ -18,6 +18,7 @@ package org.springframework.boot.configurationmetadata;
@@ -18,6 +18,7 @@ package org.springframework.boot.configurationmetadata;
import java.io.IOException ;
import java.io.InputStream ;
import java.util.Arrays ;
import java.util.Map ;
import org.junit.jupiter.api.Test ;
@ -99,16 +100,56 @@ class ConfigurationMetadataRepositoryJsonBuilderTests extends AbstractConfigurat
@@ -99,16 +100,56 @@ class ConfigurationMetadataRepositoryJsonBuilderTests extends AbstractConfigurat
try ( InputStream foo2 = getInputStreamFor ( "foo2" ) ) {
ConfigurationMetadataRepository repo = ConfigurationMetadataRepositoryJsonBuilder . create ( foo , foo2 )
. build ( ) ;
assertThat ( repo . getAllGroups ( ) ) . hasSize ( 1 ) ;
Iterable < String > allKeys = Arrays . asList ( "spring.foo.name" , "spring.foo.description" ,
"spring.foo.counter" , "spring.foo.enabled" , "spring.foo.type" ) ;
assertThat ( repo . getAllProperties ( ) ) . containsOnlyKeys ( allKeys ) ;
assertThat ( repo . getAllGroups ( ) ) . containsOnlyKeys ( "spring.foo" ) ;
ConfigurationMetadataGroup group = repo . getAllGroups ( ) . get ( "spring.foo" ) ;
contains ( group . getSources ( ) , "org.acme.Foo" , "org.acme.Foo2" , "org.springframework.boot.FooProperties" ) ;
assertThat ( group . getSources ( ) ) . hasSize ( 3 ) ;
contains ( group . getProperties ( ) , "spring.foo.name" , "spring.foo.description" , "spring.foo.counter" ,
"spring.foo.enabled" , "spring.foo.type" ) ;
assertThat ( group . getProperties ( ) ) . hasSize ( 5 ) ;
contains ( repo . getAllProperties ( ) , "spring.foo.name" , "spring.foo.description" , "spring.foo.counter" ,
"spring.foo.enabled" , "spring.foo.type" ) ;
assertThat ( repo . getAllProperties ( ) ) . hasSize ( 5 ) ;
assertThat ( group . getProperties ( ) ) . containsOnlyKeys ( allKeys ) ;
assertThat ( group . getSources ( ) ) . containsOnlyKeys ( "org.acme.Foo" , "org.acme.Foo2" ,
"org.springframework.boot.FooProperties" ) ;
assertThat ( group . getSources ( ) . get ( "org.acme.Foo" ) . getProperties ( ) ) . containsOnlyKeys ( "spring.foo.name" ,
"spring.foo.description" ) ;
assertThat ( group . getSources ( ) . get ( "org.acme.Foo2" ) . getProperties ( ) )
. containsOnlyKeys ( "spring.foo.enabled" , "spring.foo.type" ) ;
assertThat ( group . getSources ( ) . get ( "org.springframework.boot.FooProperties" ) . getProperties ( ) )
. containsOnlyKeys ( "spring.foo.name" , "spring.foo.counter" ) ;
}
}
}
@Test
void severalRepositoriesIdenticalGroupsWithSameType ( ) throws IOException {
try ( InputStream foo = getInputStreamFor ( "foo" ) ) {
try ( InputStream foo3 = getInputStreamFor ( "foo3" ) ) {
ConfigurationMetadataRepository repo = ConfigurationMetadataRepositoryJsonBuilder . create ( foo , foo3 )
. build ( ) ;
Iterable < String > allKeys = Arrays . asList ( "spring.foo.name" , "spring.foo.description" ,
"spring.foo.counter" , "spring.foo.enabled" , "spring.foo.type" ) ;
assertThat ( repo . getAllProperties ( ) ) . containsOnlyKeys ( allKeys ) ;
assertThat ( repo . getAllGroups ( ) ) . containsOnlyKeys ( "spring.foo" ) ;
ConfigurationMetadataGroup group = repo . getAllGroups ( ) . get ( "spring.foo" ) ;
assertThat ( group . getProperties ( ) ) . containsOnlyKeys ( allKeys ) ;
assertThat ( group . getSources ( ) ) . containsOnlyKeys ( "org.acme.Foo" ,
"org.springframework.boot.FooProperties" ) ;
assertThat ( group . getSources ( ) . get ( "org.acme.Foo" ) . getProperties ( ) ) . containsOnlyKeys ( "spring.foo.name" ,
"spring.foo.description" , "spring.foo.enabled" , "spring.foo.type" ) ;
assertThat ( group . getSources ( ) . get ( "org.springframework.boot.FooProperties" ) . getProperties ( ) )
. containsOnlyKeys ( "spring.foo.name" , "spring.foo.counter" ) ;
}
}
}
@Test
void severalRepositoriesIdenticalGroupsWithSameTypeDoesNotOverrideSource ( ) throws IOException {
try ( InputStream foo = getInputStreamFor ( "foo" ) ) {
try ( InputStream foo3 = getInputStreamFor ( "foo3" ) ) {
ConfigurationMetadataRepository repo = ConfigurationMetadataRepositoryJsonBuilder . create ( foo , foo3 )
. build ( ) ;
ConfigurationMetadataGroup group = repo . getAllGroups ( ) . get ( "spring.foo" ) ;
ConfigurationMetadataSource fooSource = group . getSources ( ) . get ( "org.acme.Foo" ) ;
assertThat ( fooSource . getSourceMethod ( ) ) . isEqualTo ( "foo()" ) ;
assertThat ( fooSource . getDescription ( ) ) . isEqualTo ( "This is Foo." ) ;
}
}
}