Skip to content

Commit 1195db9

Browse files
authored
Merge pull request #816 from Backbase/feat/remove-api-suffix-swift-template
Improve generated client Class Name
2 parents d737c59 + d074c70 commit 1195db9

6 files changed

Lines changed: 79 additions & 15 deletions

File tree

boat-scaffold/src/main/java/org/openapitools/codegen/languages/BoatSwift5Codegen.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@
1212
import org.openapitools.codegen.utils.ModelUtils;
1313

1414
import java.util.*;
15+
import java.util.regex.Pattern;
1516

1617
public class BoatSwift5Codegen extends Swift5ClientCodegen implements CodegenConfig {
1718
public static final String LIBRARY_DBS = "dbsDataProvider";
1819
public static final String DEPENDENCY_MANAGEMENT = "dependenciesAs";
1920
public static final String DEPENDENCY_MANAGEMENT_PODFILE = "Podfile";
2021
protected static final String DEPENDENCY_MANAGEMENT_CARTFILE = "Cartfile";
2122
protected static final String[] DEPENDENCY_MANAGEMENT_OPTIONS = {DEPENDENCY_MANAGEMENT_CARTFILE, DEPENDENCY_MANAGEMENT_PODFILE};
23+
protected static final String MODULE_NAME = "moduleName";
2224
protected String[] dependenciesAs = new String[0];
2325

2426
/**
@@ -78,6 +80,9 @@ public void processOpts() {
7880
"",
7981
DEPENDENCY_MANAGEMENT_PODFILE));
8082
}
83+
if (!additionalProperties.containsKey(MODULE_NAME)) {
84+
additionalProperties.put(MODULE_NAME, sanitize((String) additionalProperties.get(PROJECT_NAME)));
85+
}
8186
}
8287

8388
// Fix issues with generating arrays with Set.
@@ -190,10 +195,27 @@ private void fixInheritance(CodegenModel codegenModel, CodegenModel parentModel)
190195
codegenModel.removeAllDuplicatedProperty();
191196
}
192197

198+
/*
199+
Get the projectName,
200+
Check if it's ending with API, if yes, strip the API / Api and set moduleName to the stripped string
201+
Check if it's ending with Client, if yes, stop, fail the whole generation.
202+
*/
203+
private String sanitize(String projectName) {
204+
String projName = "";
205+
if (Pattern.matches("\\w.*(API|Api)$", projectName)) {
206+
projName = Pattern.compile("(API|Api)$").matcher(projectName).replaceAll("");
207+
} else if (Pattern.matches("\\w.*(CLIENT|client|Client)$", projectName)) {
208+
throw new IllegalArgumentException(projectName + " is not valid. projectName should end with `API or `Api`");
209+
} else {
210+
projName = projectName;
211+
}
212+
return projName;
213+
}
214+
193215
@Override
194216
public void postProcess() {
195217
System.out.println("################################################################################");
196-
System.out.println("# Thanks for using BOAT Swift 5 OpenAPI Generator. #");
218+
System.out.println("# Thanks for using BOAT Swift 5 OpenAPI Generator. #");
197219
System.out.println("################################################################################");
198220
}
199221

boat-scaffold/src/main/templates/boat-swift5/APIs.mustache

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import Foundation
88
import Backbase
99
import ClientCommonGen2
1010

11-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class {{projectName}}API: NSObject, DBSClient {
11+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class {{moduleName}}Client: NSObject, DBSClient {
1212
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var dataProvider: DBSDataProvider?
1313
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var baseURL: URL{{#useAlamofire}}
1414
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var requestBuilderFactory: RequestBuilderFactory = AlamofireRequestBuilderFactory(){{/useAlamofire}}{{#useURLSession}}
@@ -41,7 +41,7 @@ import ClientCommonGen2
4141
self.isBody = isBody
4242
self.headers = headers
4343
44-
addHeaders({{projectName}}API.customHeaders)
44+
addHeaders({{moduleName}}Client.customHeaders)
4545
addHeaders(Backbase.authClient().tokens())
4646
}
4747

@@ -51,7 +51,7 @@ import ClientCommonGen2
5151
}
5252
}
5353

54-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue, _ completion: @escaping (_ result: Result<Response<T>, Error>) -> Void) { }
54+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ apiResponseQueue: DispatchQueue = {{moduleName}}Client.apiResponseQueue, _ completion: @escaping (_ result: Result<Response<T>, Error>) -> Void) { }
5555

5656
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} func addHeader(name: String, value: String) -> Self {
5757
if !value.isEmpty {

boat-scaffold/src/main/templates/boat-swift5/Podspec.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Pod::Spec.new do |s|
1414
{{/podDocumentationURL}}
1515

1616
# ――― Source Location ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
17-
s.source = { :git => 'https://github.com/backbase-rnd/backbase-generated-clients-ios/ios-clients/{{projectName}}'}
17+
s.source = { :git => 'https://github.com/backbase-rnd/backbase-generated-clients-ios/tree/main/ios-clients/{{projectName}}'}
1818
s.source_files = '{{projectName}}/Classes/**/*.swift'
1919

2020
# ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #

boat-scaffold/src/main/templates/boat-swift5/api.mustache

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import PromiseKit{{/usePromiseKit}}{{#useRxSwift}}
1212
import RxSwift{{/useRxSwift}}{{#useCombine}}
1313
import Combine{{/useCombine}}
1414
{{#swiftUseApiNamespace}}
15-
extension {{projectName}}API {
15+
extension {{moduleName}}Client {
1616
{{/swiftUseApiNamespace}}
1717

1818
/// {{classname}} protocol defines a blueprint of methods, properties, and other requirements for {{classname}} functionality.
@@ -114,7 +114,7 @@ extension {{projectName}}API {
114114
- parameter apiResponseQueue: The queue on which api response is dispatched.
115115
- returns: Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}>
116116
*/
117-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func {{operationId}}({{#allParams}} {{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue) -> Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {
117+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func {{operationId}}({{#allParams}} {{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{moduleName}}Client.apiResponseQueue) -> Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {
118118
let deferred = Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}>.pending()
119119
{{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}).execute(apiResponseQueue) { result -> Void in
120120
switch result {
@@ -142,7 +142,7 @@ extension {{projectName}}API {
142142
- parameter apiResponseQueue: The queue on which api response is dispatched.
143143
- returns: Observable<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}>
144144
*/
145-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue) -> Observable<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {
145+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{moduleName}}Client.apiResponseQueue) -> Observable<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {
146146
return Observable.create { observer -> Disposable in
147147
{{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}).execute(apiResponseQueue) { result -> Void in
148148
switch result {
@@ -173,7 +173,7 @@ extension {{projectName}}API {
173173
- returns: AnyPublisher<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}, Error>
174174
*/
175175
@available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
176-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue) -> AnyPublisher<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}, Error> {
176+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{moduleName}}Client.apiResponseQueue) -> AnyPublisher<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}, Error> {
177177
return Future<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}, Error>.init { promisse in
178178
{{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}).execute(apiResponseQueue) { result -> Void in
179179
switch result {
@@ -201,7 +201,7 @@ extension {{projectName}}API {
201201
- parameter apiResponseQueue: The queue on which api response is dispatched.
202202
- parameter completion: completion handler to receive the result
203203
*/
204-
open func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue, completion: @escaping ((_ result: Result<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}, Error>) -> Void)) {
204+
open func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{moduleName}}Client.apiResponseQueue, completion: @escaping ((_ result: Result<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}, Error>) -> Void)) {
205205
{{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}).execute(apiResponseQueue) { result -> Void in
206206
switch result {
207207
{{#returnType}}

boat-scaffold/src/main/templates/boat-swift5/libraries/urlsession/URLSessionImplementations.mustache

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class URLSessionRequestBuilderFactory: RequestBuilderFactory {
2525
}
2626
}
2727

28-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} typealias {{projectName}}APIChallengeHandler = ((URLSession, URLSessionTask, URLAuthenticationChallenge) -> (URLSession.AuthChallengeDisposition, URLCredential?))
28+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} typealias {{moduleName}}ClientChallengeHandler = ((URLSession, URLSessionTask, URLAuthenticationChallenge) -> (URLSession.AuthChallengeDisposition, URLCredential?))
2929

3030
// Store the URLSession's delegate to retain its reference
3131
private let sessionDelegate = SessionDelegate()
@@ -34,7 +34,7 @@ private let sessionDelegate = SessionDelegate()
3434
private let defaultURLSession = URLSession(configuration: .default, delegate: sessionDelegate, delegateQueue: nil)
3535

3636
// Store current taskDidReceiveChallenge for every URLSessionTask
37-
private var challengeHandlerStore = SynchronizedDictionary<Int, {{projectName}}APIChallengeHandler>()
37+
private var challengeHandlerStore = SynchronizedDictionary<Int, {{moduleName}}ClientChallengeHandler>()
3838

3939
// Store current URLCredential for every URLSessionTask
4040
private var credentialStore = SynchronizedDictionary<Int, URLCredential>()
@@ -44,7 +44,7 @@ private var credentialStore = SynchronizedDictionary<Int, URLCredential>()
4444
/**
4545
May be assigned if you want to control the authentication challenges.
4646
*/
47-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var taskDidReceiveChallenge: {{projectName}}APIChallengeHandler?
47+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var taskDidReceiveChallenge: {{moduleName}}ClientChallengeHandler?
4848

4949
/**
5050
May be assigned if you want to do any of those things:
@@ -102,7 +102,7 @@ private var credentialStore = SynchronizedDictionary<Int, URLCredential>()
102102
}
103103

104104
@discardableResult
105-
override {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, ErrorResponse>) -> Void) -> RequestTask {
105+
override {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ apiResponseQueue: DispatchQueue = {{moduleName}}Client.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, ErrorResponse>) -> Void) -> RequestTask {
106106
let urlSession = createURLSession()
107107
108108
guard let xMethod = HTTPMethod(rawValue: method) else {
@@ -197,7 +197,7 @@ private var credentialStore = SynchronizedDictionary<Int, URLCredential>()
197197

198198
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func buildHeaders() -> [String: String] {
199199
var httpHeaders: [String: String] = [:]
200-
for (key, value) in {{projectName}}API.customHeaders {
200+
for (key, value) in {{moduleName}}Client.customHeaders
201201
httpHeaders[key] = value
202202
}
203203
for (key, value) in headers {

boat-scaffold/src/test/java/org/openapitools/codegen/languages/BoatSwift5CodegenTests.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
public class BoatSwift5CodegenTests {
2727
BoatSwift5Codegen boatSwift5CodeGen = new BoatSwift5Codegen();
2828

29+
2930
@Test
3031
void testGeneratorName() {
3132
assertEquals(boatSwift5CodeGen.getName(), "boat-swift5");
@@ -37,6 +38,7 @@ void testGetHelpMessage() {
3738

3839
@Test
3940
void testProcessOptsSetDBSDataProvider() {
41+
boatSwift5CodeGen.additionalProperties().put("projectName","SomethingAPI");
4042
boatSwift5CodeGen.setLibrary(BoatSwift5Codegen.LIBRARY_DBS);
4143
boatSwift5CodeGen.processOpts();
4244
boatSwift5CodeGen.postProcess();
@@ -46,6 +48,7 @@ void testProcessOptsSetDBSDataProvider() {
4648
@ParameterizedTest
4749
@ValueSource(strings = {BoatSwift5Codegen.DEPENDENCY_MANAGEMENT_PODFILE, "PODFILE", "podFile", "podfile", "podfilE"})
4850
void testSetDependenciesDoesNotConsiderCase(String arg) {
51+
boatSwift5CodeGen.additionalProperties().put("projectName","SomethingAPI");
4952
boatSwift5CodeGen.additionalProperties().put(BoatSwift5Codegen.DEPENDENCY_MANAGEMENT, arg);
5053
boatSwift5CodeGen.processOpts();
5154

@@ -55,6 +58,7 @@ void testSetDependenciesDoesNotConsiderCase(String arg) {
5558

5659
@Test
5760
void testWhenDependenciesAsIsNotSetShouldBeEmpty() {
61+
boatSwift5CodeGen.additionalProperties().put("projectName","SomethingAPI");
5862
boatSwift5CodeGen.processOpts();
5963
final String[] dependenciesAs = (String[]) boatSwift5CodeGen.additionalProperties().get(BoatSwift5Codegen.DEPENDENCY_MANAGEMENT);
6064
assertEquals(0,dependenciesAs.length);
@@ -168,6 +172,7 @@ void suffixTest() {
168172

169173
@Test
170174
void testDefaultPodAuthors() throws Exception {
175+
boatSwift5CodeGen.additionalProperties().put("projectName","SomethingAPI");
171176
// Given
172177
// When
173178
boatSwift5CodeGen.processOpts();
@@ -178,6 +183,7 @@ void testDefaultPodAuthors() throws Exception {
178183

179184
@Test
180185
void testPodAuthors() throws Exception {
186+
boatSwift5CodeGen.additionalProperties().put("projectName","SomethingAPI");
181187
// Given
182188
final String openAPIDevs = "OpenAPI Devs";
183189
boatSwift5CodeGen.additionalProperties().put(Swift5ClientCodegen.POD_AUTHORS, openAPIDevs);
@@ -324,6 +330,42 @@ void testPostProcessAllModels() {
324330
assertEquals(boatSwift5CodeGen.postProcessAllModels(models), models);
325331
}
326332

333+
@Test
334+
void test_processOptsThrowsWhenProjectNameIsInvalid() {
335+
boatSwift5CodeGen.additionalProperties().put("projectName","SomethingClient");
336+
IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> boatSwift5CodeGen.processOpts());
337+
assertEquals("SomethingClient is not valid. projectName should end with `API or `Api`", exception.getMessage());
338+
}
339+
340+
@Test
341+
void test_processOptsSetsStrippedModuleNameIsAProjectNameEndingWithAPIIsProvided() {
342+
boatSwift5CodeGen.additionalProperties().put("projectName","SomethingAPI");
343+
String expectedModuleName = "Something";
344+
boatSwift5CodeGen.processOpts();
345+
assertEquals(boatSwift5CodeGen.additionalProperties().get("moduleName"), expectedModuleName);
346+
}
347+
348+
@Test
349+
void test_processOptsSetsOriginalProjectNameAsModuleNameIfNameDoesNotEndWithAPIOrClient() {
350+
String expectedModuleName = "Something";
351+
boatSwift5CodeGen.additionalProperties().put("projectName",expectedModuleName);
352+
boatSwift5CodeGen.processOpts();
353+
assertEquals(boatSwift5CodeGen.additionalProperties().get("moduleName"), expectedModuleName);
354+
}
355+
356+
/*
357+
Test that when a moduleName is provided sanitize is not called
358+
*/
359+
@Test
360+
void test_processOptsDoesNotSetModuleNameIfAlreadySet() {
361+
String projectName = "CustomerAPI";
362+
String moduleName = "CustomerAPIModified";
363+
boatSwift5CodeGen.additionalProperties().put("projectName",projectName);
364+
boatSwift5CodeGen.additionalProperties().put("moduleName",moduleName);
365+
boatSwift5CodeGen.processOpts();
366+
assertEquals(boatSwift5CodeGen.additionalProperties().get("moduleName"), moduleName);
367+
}
368+
327369
private CodegenModel prepareForModelTests() {
328370

329371
final ObjectSchema objectSchema = new ObjectSchema();

0 commit comments

Comments
 (0)