1616
1717package io .spring .initializr .metadata ;
1818
19+ import java .net .MalformedURLException ;
20+ import java .net .URL ;
1921import java .util .Arrays ;
2022import java .util .List ;
2123
2224import io .spring .initializr .metadata .BillOfMaterials .Mapping ;
2325import io .spring .initializr .metadata .InitializrConfiguration .Env .Kotlin ;
24- import io .spring .initializr .test . metadata .InitializrMetadataTestBuilder ;
26+ import io .spring .initializr .metadata .InitializrConfiguration . Env . Maven . ParentPom ;
2527import io .spring .initializr .util .Version ;
2628import org .junit .jupiter .api .Test ;
2729
2830import static org .assertj .core .api .Assertions .assertThat ;
2931import static org .assertj .core .api .Assertions .assertThatExceptionOfType ;
3032
3133/**
34+ * Tests for {@link InitializrMetadata}.
35+ *
3236 * @author Stephane Nicoll
3337 */
3438class InitializrMetadataTests {
3539
3640 @ Test
3741 void invalidBom () {
42+ InitializrMetadata metadata = initializeMetadata ();
3843 Dependency foo = Dependency .withId ("foo" , "org.acme" , "foo" );
3944 foo .setBom ("foo-bom" );
40- InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder
41- . withDefaults ().addBom ( "my-bom" , "org.acme" , "foo" , "1.2.3" )
42- . addDependencyGroup ( "test " , foo );
45+ addTestDependencyGroup ( metadata , foo );
46+ metadata . getConfiguration ().getEnv (). getBoms (). put ( "my-bom" ,
47+ BillOfMaterials . create ( "org.acme " , " foo" , "1.2.3" ) );
4348 assertThatExceptionOfType (InvalidInitializrMetadataException .class )
44- .isThrownBy (builder :: build ).withMessageContaining ("foo-bom" )
49+ .isThrownBy (metadata :: validate ).withMessageContaining ("foo-bom" )
4550 .withMessageContaining ("my-bom" );
4651 }
4752
4853 @ Test
49- void invalidRepository () {
54+ void invalidRepository () throws MalformedURLException {
55+ InitializrMetadata metadata = initializeMetadata ();
5056 Dependency foo = Dependency .withId ("foo" , "org.acme" , "foo" );
5157 foo .setRepository ("foo-repo" );
52- InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder
53- .withDefaults ()
54- .addRepository ("my-repo" , "repo" , "http://example.com/repo" , true )
55- .addDependencyGroup ("test" , foo );
58+ addTestDependencyGroup (metadata , foo );
59+ metadata .getConfiguration ().getEnv ().getRepositories ().put ("my-repo" ,
60+ new Repository ("repo" , new URL ("http://example.com/repo" ), true ));
5661 assertThatExceptionOfType (InvalidInitializrMetadataException .class )
57- .isThrownBy (builder :: build ).withMessageContaining ("foo-repo" )
62+ .isThrownBy (metadata :: validate ).withMessageContaining ("foo-repo" )
5863 .withMessageContaining ("my-repo" );
5964 }
6065
6166 @ Test
6267 void invalidBomNoVersion () {
63- BillOfMaterials bom = BillOfMaterials .create ("org.acme" , "foo-bom" );
64-
65- InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder
66- .withDefaults ().addBom ("foo-bom" , bom );
68+ InitializrMetadata metadata = initializeMetadata ();
69+ metadata .getConfiguration ().getEnv ().getBoms ().put ("foo-bom" ,
70+ BillOfMaterials .create ("org.acme" , "foo-bom" ));
6771 assertThatExceptionOfType (InvalidInitializrMetadataException .class )
68- .isThrownBy (builder :: build ).withMessageContaining ("No version" )
72+ .isThrownBy (metadata :: validate ).withMessageContaining ("No version" )
6973 .withMessageContaining ("foo-bom" );
7074 }
7175
7276 @ Test
7377 void invalidBomUnknownRepository () {
78+ InitializrMetadata metadata = initializeMetadata ();
7479 BillOfMaterials bom = BillOfMaterials .create ("org.acme" , "foo-bom" ,
7580 "1.0.0.RELEASE" );
7681 bom .getRepositories ().add ("foo-repo" );
77-
78- InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder
79- .withDefaults ().addBom ("foo-bom" , bom );
82+ metadata .getConfiguration ().getEnv ().getBoms ().put ("foo-bom" , bom );
8083 assertThatExceptionOfType (InvalidInitializrMetadataException .class )
81- .isThrownBy (builder :: build )
84+ .isThrownBy (metadata :: validate )
8285 .withMessageContaining ("invalid repository id foo-repo" )
8386 .withMessageContaining ("foo-bom" );
8487 }
8588
8689 @ Test
8790 void invalidBomUnknownAdditionalBom () {
91+ InitializrMetadata metadata = initializeMetadata ();
8892 BillOfMaterials bom = BillOfMaterials .create ("org.acme" , "foo-bom" ,
8993 "1.0.0.RELEASE" );
9094 bom .getAdditionalBoms ().addAll (Arrays .asList ("bar-bom" , "biz-bom" ));
9195 BillOfMaterials barBom = BillOfMaterials .create ("org.acme" , "bar-bom" ,
9296 "1.0.0.RELEASE" );
93-
94- InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder
95- .withDefaults ().addBom ("foo-bom" , bom ).addBom ("bar-bom" , barBom );
97+ metadata .getConfiguration ().getEnv ().getBoms ().put ("foo-bom" , bom );
98+ metadata .getConfiguration ().getEnv ().getBoms ().put ("bar-bom" , barBom );
9699 assertThatExceptionOfType (InvalidInitializrMetadataException .class )
97- .isThrownBy (builder :: build )
100+ .isThrownBy (metadata :: validate )
98101 .withMessageContaining ("invalid additional bom" )
99102 .withMessageContaining ("biz-bom" );
100103 }
101104
102105 @ Test
103106 void invalidBomVersionRangeMapping () {
107+ InitializrMetadata metadata = initializeMetadata ();
104108 BillOfMaterials bom = BillOfMaterials .create ("org.acme" , "foo-bom" );
105109 bom .getMappings ().add (Mapping .create ("[1.2.0.RELEASE,1.3.0.M1)" , "1.0.0" ));
106110 bom .getMappings ().add (Mapping .create ("FOO_BAR" , "1.2.0" ));
107-
108- InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder
109- .withDefaults ().addBom ("foo-bom" , bom );
111+ metadata .getConfiguration ().getEnv ().getBoms ().put ("foo-bom" , bom );
110112 assertThatExceptionOfType (InvalidInitializrMetadataException .class )
111- .isThrownBy (builder :: build ).withMessageContaining ("FOO_BAR" )
113+ .isThrownBy (metadata :: validate ).withMessageContaining ("FOO_BAR" )
112114 .withMessageContaining ("foo-bom" );
113115 }
114116
115117 @ Test
116118 void invalidBomVersionRangeMappingUnknownRepo () {
119+ InitializrMetadata metadata = initializeMetadata ();
117120 BillOfMaterials bom = BillOfMaterials .create ("org.acme" , "foo-bom" );
118121 bom .getMappings ().add (Mapping .create ("[1.0.0.RELEASE,1.3.0.M1)" , "1.0.0" ));
119122 Mapping mapping = Mapping .create ("1.3.0.M2" , "1.2.0" );
120123 mapping .getRepositories ().add ("foo-repo" );
121124 bom .getMappings ().add (mapping );
122-
123- InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder
124- .withDefaults ().addBom ("foo-bom" , bom );
125+ metadata .getConfiguration ().getEnv ().getBoms ().put ("foo-bom" , bom );
125126 assertThatExceptionOfType (InvalidInitializrMetadataException .class )
126- .isThrownBy (builder :: build )
127+ .isThrownBy (metadata :: validate )
127128 .withMessageContaining ("invalid repository id foo-repo" )
128129 .withMessageContaining ("1.3.0.M2" ).withMessageContaining ("foo-bom" );
129130 }
130131
131132 @ Test
132133 void invalidBomVersionRangeMappingUnknownAdditionalBom () {
134+ InitializrMetadata metadata = initializeMetadata ();
133135 BillOfMaterials bom = BillOfMaterials .create ("org.acme" , "foo-bom" );
134136 bom .getMappings ().add (Mapping .create ("[1.0.0.RELEASE,1.3.0.M1)" , "1.0.0" ));
135137 Mapping mapping = Mapping .create ("1.3.0.M2" , "1.2.0" );
136138 mapping .getAdditionalBoms ().add ("bar-bom" );
137139 bom .getMappings ().add (mapping );
138-
139- InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder
140- .withDefaults ().addBom ("foo-bom" , bom );
140+ metadata .getConfiguration ().getEnv ().getBoms ().put ("foo-bom" , bom );
141141 assertThatExceptionOfType (InvalidInitializrMetadataException .class )
142- .isThrownBy (builder :: build )
142+ .isThrownBy (metadata :: validate )
143143 .withMessageContaining ("invalid additional bom" )
144144 .withMessageContaining ("1.3.0.M2" ).withMessageContaining ("bar-bom" );
145145 }
146146
147147 @ Test
148148 void updateSpringBootVersions () {
149+ InitializrMetadata metadata = initializeMetadata ();
149150 BillOfMaterials bom = BillOfMaterials .create ("org.acme" , "foo-bom" );
150151 bom .getMappings ().add (Mapping .create ("[1.2.0.RELEASE,1.3.x.RELEASE]" , "1.0.0" ));
151152 bom .getMappings ()
@@ -155,13 +156,16 @@ void updateSpringBootVersions() {
155156 .create ("[1.3.0.RELEASE, 1.3.x.RELEASE]" , null , null , "0.1.0.RELEASE" ));
156157 dependency .getMappings ().add (Dependency .Mapping .create ("1.3.x.BUILD-SNAPSHOT" ,
157158 null , null , "0.2.0.RELEASE" ));
158- InitializrMetadata metadata = InitializrMetadataTestBuilder .withDefaults ()
159- .addDependencyGroup ("test" , dependency ).addBom ("foo-bom" , bom )
160- .setKotlinEnv ("1.3" ,
161- createKotlinVersionMapping ("[1.2.0.RELEASE,1.3.x.RELEASE]" ,
162- "1.1" ),
163- createKotlinVersionMapping ("1.3.x.BUILD-SNAPSHOT" , "1.2" ))
164- .build ();
159+
160+ addTestDependencyGroup (metadata , dependency );
161+ metadata .getConfiguration ().getEnv ().getBoms ().put ("foo-bom" , bom );
162+ Kotlin kotlin = metadata .getConfiguration ().getEnv ().getKotlin ();
163+ kotlin .setDefaultVersion ("1.3" );
164+ kotlin .getMappings ()
165+ .add (createKotlinVersionMapping ("[1.2.0.RELEASE,1.3.x.RELEASE]" , "1.1" ));
166+ kotlin .getMappings ()
167+ .add (createKotlinVersionMapping ("1.3.x.BUILD-SNAPSHOT" , "1.2" ));
168+ metadata .validate ();
165169
166170 List <DefaultMetadataElement > bootVersions = Arrays .asList (
167171 DefaultMetadataElement .create ("1.3.6.RELEASE" , "1.3.6" , false ),
@@ -185,27 +189,41 @@ void updateSpringBootVersions() {
185189
186190 @ Test
187191 void invalidParentMissingVersion () {
188- InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder
189- .withDefaults ().setMavenParent ("org.foo" , "foo-parent" , null , false );
192+ InitializrMetadata metadata = initializeMetadata ();
193+ ParentPom parent = metadata .getConfiguration ().getEnv ().getMaven ().getParent ();
194+ parent .setGroupId ("org.foo" );
195+ parent .setArtifactId ("foo-parent" );
190196 assertThatExceptionOfType (InvalidInitializrMetadataException .class )
191- .isThrownBy (builder :: build ).withMessageContaining (
197+ .isThrownBy (metadata :: validate ).withMessageContaining (
192198 "Custom maven pom requires groupId, artifactId and version" );
193199 }
194200
195201 @ Test
196202 void stripInvalidCharsFromPackage () {
197- InitializrMetadata metadata = InitializrMetadataTestBuilder .withDefaults ()
198- .build ();
203+ InitializrMetadata metadata = initializeMetadata ();
199204 metadata .getGroupId ().setContent ("org.acme" );
200205 metadata .getArtifactId ().setContent ("2foo.bar" );
201206 assertThat (metadata .getPackageName ().getContent ()).isEqualTo ("org.acme.foo.bar" );
202207
203- metadata = InitializrMetadataTestBuilder . withDefaults (). build ();
208+ metadata = initializeMetadata ();
204209 metadata .getGroupId ().setContent ("org.ac-me" );
205210 metadata .getArtifactId ().setContent ("foo-bar" );
206211 assertThat (metadata .getPackageName ().getContent ()).isEqualTo ("org.acme.foobar" );
207212 }
208213
214+ private InitializrMetadata initializeMetadata () {
215+ return new InitializrMetadata ();
216+ }
217+
218+ private void addTestDependencyGroup (InitializrMetadata metadata ,
219+ Dependency ... dependencies ) {
220+ DependencyGroup group = DependencyGroup .create ("test" );
221+ for (Dependency dependency : dependencies ) {
222+ group .getContent ().add (dependency );
223+ }
224+ metadata .getDependencies ().getContent ().add (group );
225+ }
226+
209227 private Kotlin .Mapping createKotlinVersionMapping (String versionRange ,
210228 String kotlinVersion ) {
211229 Kotlin .Mapping mapping = new Kotlin .Mapping ();
0 commit comments