1+ /*
2+ * Copyright (c) 2022 Microsoft Corporation
3+ *
4+ * This program and the accompanying materials are made available under the
5+ * terms of the Apache License, Version 2.0 which is available at
6+ * https://www.apache.org/licenses/LICENSE-2.0
7+ *
8+ * SPDX-License-Identifier: Apache-2.0
9+ *
10+ * Contributors:
11+ * Microsoft Corporation - initial API and implementation
12+ *
13+ */
14+
15+ package org .eclipse .edc .plugins .edcbuild .conventions ;
16+
17+ import io .swagger .v3 .plugins .gradle .tasks .ResolveTask ;
18+ import org .eclipse .edc .plugins .edcbuild .extensions .BuildExtension ;
19+ import org .gradle .api .Project ;
20+ import org .gradle .api .plugins .JavaPlugin ;
21+ import org .gradle .testfixtures .ProjectBuilder ;
22+ import org .hidetake .gradle .swagger .generator .SwaggerGeneratorPlugin ;
23+ import org .junit .jupiter .api .BeforeEach ;
24+ import org .junit .jupiter .api .Test ;
25+
26+ import java .io .File ;
27+
28+ import static org .assertj .core .api .Assertions .assertThat ;
29+
30+ class SwaggerGeneratorConventionTest {
31+
32+
33+ private static final String PROJECT_NAME = "testproject" ;
34+ private Project project ;
35+
36+ @ BeforeEach
37+ void setUp () {
38+ project = ProjectBuilder .builder ().withName (PROJECT_NAME ).build ();
39+ project .getPluginManager ().apply ("io.swagger.core.v3.swagger-gradle-plugin" );
40+ project .getPluginManager ().apply (JavaPlugin .class );
41+ project .getExtensions ().create ("edcBuild" , BuildExtension .class , project .getObjects ());
42+ }
43+
44+ @ Test
45+ void apply_whenApiGroupNotSpecified_shouldUseDefault () {
46+ var convention = new SwaggerGeneratorConvention ();
47+ convention .apply (project );
48+
49+ assertThat (project .getPlugins ().findPlugin (SwaggerGeneratorPlugin .class )).isNotNull ();
50+
51+ var resolveTask = (ResolveTask ) project .getTasks ().getByName ("resolve" );
52+
53+ assertThat (resolveTask .getOutputDir ().getPath ()).endsWith ("/resources/openapi/yaml" );
54+ assertThat (resolveTask .getOutputFileName ()).isEqualTo (PROJECT_NAME );
55+ assertThat (resolveTask .getOutputFormat ()).isEqualTo (ResolveTask .Format .YAML );
56+ }
57+
58+ @ Test
59+ void apply_whenApiGroupSpecified_shouldAppend () {
60+ var swagger = ConventionFunctions .requireExtension (project , BuildExtension .class ).getSwagger ();
61+ swagger .getApiGroup ().set ("test-api" );
62+ var convention = new SwaggerGeneratorConvention ();
63+ convention .apply (project );
64+
65+ assertThat (project .getPlugins ().findPlugin (SwaggerGeneratorPlugin .class )).isNotNull ();
66+
67+ var resolveTask = (ResolveTask ) project .getTasks ().getByName ("resolve" );
68+
69+ assertThat (resolveTask .getOutputDir ().getPath ()).endsWith ("/resources/openapi/yaml/test-api" );
70+ assertThat (resolveTask .getOutputFileName ()).isEqualTo (PROJECT_NAME );
71+ assertThat (resolveTask .getOutputFormat ()).isEqualTo (ResolveTask .Format .YAML );
72+ }
73+
74+ @ Test
75+ void apply_whenOutputDirSet_shouldAppend () {
76+ var swagger = ConventionFunctions .requireExtension (project , BuildExtension .class ).getSwagger ();
77+ swagger .getApiGroup ().set ("test-api" );
78+ swagger .getOutputDirectory ().set (new File ("some/funny/path" ));
79+ var convention = new SwaggerGeneratorConvention ();
80+ convention .apply (project );
81+
82+ assertThat (project .getPlugins ().findPlugin (SwaggerGeneratorPlugin .class )).isNotNull ();
83+
84+ var resolveTask = (ResolveTask ) project .getTasks ().getByName ("resolve" );
85+
86+ assertThat (resolveTask .getOutputDir ().getPath ()).endsWith ("/some/funny/path/test-api" );
87+ assertThat (resolveTask .getOutputFileName ()).isEqualTo (PROJECT_NAME );
88+ assertThat (resolveTask .getOutputFormat ()).isEqualTo (ResolveTask .Format .YAML );
89+ }
90+ }
0 commit comments