2121import java .io .InputStream ;
2222import java .util .List ;
2323import java .util .Scanner ;
24- import org .junit .jupiter .api .AfterEach ;
25- import org .junit .jupiter .api .Test ;
24+ import java .util .stream .Stream ;
25+ import org .junit .jupiter .api .AfterAll ;
26+ import org .junit .jupiter .params .ParameterizedTest ;
27+ import org .junit .jupiter .params .provider .Arguments ;
28+ import org .junit .jupiter .params .provider .MethodSource ;
2629import software .amazon .awssdk .codegen .emitters .GeneratorTaskParams ;
2730import software .amazon .awssdk .codegen .internal .ExampleMetadataProvider ;
2831import software .amazon .awssdk .codegen .model .intermediate .IntermediateModel ;
@@ -32,92 +35,70 @@ public class PackageInfoGeneratorTasksTest {
3235
3336 private static final String TEST_EXAMPLE_META_PATH = "software/amazon/awssdk/codegen/test-example-meta.json" ;
3437
35- @ AfterEach
36- void cleanupCache () {
38+ @ AfterAll
39+ static void cleanupCache () {
3740 ExampleMetadataProvider .clearCache ();
3841 }
3942
40- @ Test
41- public void exampleMetadataService_withExamples_returnsCorrectExamples () {
42- ExampleMetadataProvider provider = ExampleMetadataProvider .getInstance (TEST_EXAMPLE_META_PATH );
43-
44- List <ExampleMetadataProvider .ExampleData > result = provider .getServiceCodeExamples (createTestMetadata ("s3" ));
45-
46- assertThat (result ).hasSize (5 );
47- assertThat (result .get (0 ).getTitle ()).isEqualTo ("Get an object from a bucket" );
48- assertThat (result .get (0 ).getCategory ()).isEqualTo ("Api" );
49- assertThat (result .get (0 ).getUrl ()).contains ("s3_example_s3_GetObject_section.html" );
50- }
51-
52- @ Test
53- public void exampleMetadataService_withoutExamples_returnsEmptyList () {
54- ExampleMetadataProvider provider = ExampleMetadataProvider .getInstance (TEST_EXAMPLE_META_PATH );
55-
56- List <ExampleMetadataProvider .ExampleData > result = provider .getServiceCodeExamples (createTestMetadata ("empty-service" ));
57-
58- assertThat (result ).isEmpty ();
59- }
60-
61- @ Test
62- public void exampleMetadataService_withNonExistentService_returnsEmptyList () {
63- ExampleMetadataProvider provider = ExampleMetadataProvider .getInstance (TEST_EXAMPLE_META_PATH );
64-
65- List <ExampleMetadataProvider .ExampleData > result = provider .getServiceCodeExamples (createTestMetadata ("nonexistent" ));
66-
67- assertThat (result ).isEmpty ();
68- }
69-
70- @ Test
71- public void exampleMetadataService_withMissingExampleFile_returnsEmptyList () {
72- ExampleMetadataProvider provider = ExampleMetadataProvider .getInstance ("nonexistent/path.json" );
73-
74- List <ExampleMetadataProvider .ExampleData > result = provider .getServiceCodeExamples (createTestMetadata ("s3" ));
75-
76- assertThat (result ).isEmpty ();
77- }
78-
79- @ Test
80- public void exampleMetadataService_withMedicalImagingService_returnsCorrectExamples () {
81- ExampleMetadataProvider provider = ExampleMetadataProvider .getInstance (TEST_EXAMPLE_META_PATH );
82-
83- List <ExampleMetadataProvider .ExampleData > result = provider .getServiceCodeExamples (createTestMetadata ("medicalimaging" ));
84-
85- assertThat (result ).hasSize (1 );
86- assertThat (result .get (0 ).getTitle ()).isEqualTo ("Get image set properties" );
87- assertThat (result .get (0 ).getCategory ()).isEqualTo ("Api" );
88- assertThat (result .get (0 ).getUrl ()).contains ("medical-imaging_example_medical-imaging_GetImageSet_section.html" );
89- }
90-
91- @ Test
92- public void buildPackageInfoContent_withS3Examples_generatesExpectedContent () {
93- String actualContent = generatePackageInfoContent ("s3" );
94- String expectedContent = loadFixtureFile ("s3-package-info.java" );
95-
96- assertThat (actualContent ).isEqualToIgnoringWhitespace (expectedContent );
43+ @ ParameterizedTest
44+ @ MethodSource ("getServiceCodeExamplesTestCases" )
45+ public void exampleMetadataService_getServiceCodeExamples_returnsExpectedResult (
46+ String metadataPath , String serviceName ,
47+ Integer expectedSize , String expectedFirstTitle , String expectedFirstCategory , String expectedFirstUrl ) {
48+ ExampleMetadataProvider provider = ExampleMetadataProvider .getInstance (metadataPath );
49+
50+ List <ExampleMetadataProvider .ExampleData > result = provider .getServiceCodeExamples (createTestMetadata (serviceName ));
51+
52+ if (expectedSize == null || expectedSize == 0 ) {
53+ assertThat (result ).isEmpty ();
54+ } else {
55+ assertThat (result ).hasSize (expectedSize );
56+ if (expectedFirstTitle != null ) {
57+ assertThat (result .get (0 ).getTitle ()).isEqualTo (expectedFirstTitle );
58+ }
59+ if (expectedFirstCategory != null ) {
60+ assertThat (result .get (0 ).getCategory ()).isEqualTo (expectedFirstCategory );
61+ }
62+ if (expectedFirstUrl != null ) {
63+ assertThat (result .get (0 ).getUrl ()).isEqualTo (expectedFirstUrl );
64+ }
65+ }
9766 }
9867
99- @ Test
100- public void buildPackageInfoContent_withMedicalImagingExamples_generatesExpectedContent () {
101- String actualContent = generatePackageInfoContent ("medicalimaging" );
102- String expectedContent = loadFixtureFile ("medical-imaging-package-info.java" );
103-
104- assertThat (actualContent ).isEqualToIgnoringWhitespace (expectedContent );
68+ private static Stream <Arguments > getServiceCodeExamplesTestCases () {
69+ return Stream .of (
70+ Arguments .of (TEST_EXAMPLE_META_PATH , "s3" ,
71+ 5 , "Get an object from a bucket" , "Api" ,
72+ "https://docs.aws.amazon.com/code-library/latest/ug/s3_example_s3_GetObject_section.html" ),
73+ Arguments .of (TEST_EXAMPLE_META_PATH , "medicalimaging" ,
74+ 1 , "Get image set properties" , "Api" ,
75+ "https://docs.aws.amazon.com/code-library/latest/ug/medical-imaging_example_medical-imaging_GetImageSet_section.html" ),
76+ Arguments .of (TEST_EXAMPLE_META_PATH , "empty-service" ,
77+ 0 , null , null , null ),
78+ Arguments .of (TEST_EXAMPLE_META_PATH , "nonexistent" ,
79+ 0 , null , null , null ),
80+ Arguments .of ("nonexistent/path.json" , "s3" ,
81+ 0 , null , null , null )
82+ );
10583 }
10684
107- @ Test
108- public void buildPackageInfoContent_withNoExamples_generatesContentWithoutCodeExamples () {
109- String actualContent = generatePackageInfoContent ("empty-service" );
110- String expectedContent = loadFixtureFile ("empty-service-package-info.java" );
85+ @ ParameterizedTest
86+ @ MethodSource ("buildPackageInfoContentTestCases" )
87+ public void buildPackageInfoContent_generatesExpectedContent (
88+ String serviceName , String expectedFixtureFile ) {
89+ String actualContent = generatePackageInfoContent (serviceName );
90+ String expectedContent = loadFixtureFile (expectedFixtureFile );
11191
11292 assertThat (actualContent ).isEqualToIgnoringWhitespace (expectedContent );
11393 }
11494
115- @ Test
116- public void buildPackageInfoContent_withNonExistentService_generatesContentWithoutCodeExamples () {
117- String actualContent = generatePackageInfoContent ("nonexistent" );
118- String expectedContent = loadFixtureFile ("empty-service-package-info.java" );
119-
120- assertThat (actualContent ).isEqualToIgnoringWhitespace (expectedContent );
95+ private static Stream <Arguments > buildPackageInfoContentTestCases () {
96+ return Stream .of (
97+ Arguments .of ("s3" , "s3-package-info.java" ),
98+ Arguments .of ("medicalimaging" , "medical-imaging-package-info.java" ),
99+ Arguments .of ("empty-service" , "empty-service-package-info.java" ),
100+ Arguments .of ("nonexistent" , "empty-service-package-info.java" )
101+ );
121102 }
122103
123104 private PackageInfoGeneratorTasks createTestGenerator () {
0 commit comments