Skip to content

Commit 783144b

Browse files
committed
fix: imports
1 parent 5341746 commit 783144b

File tree

3 files changed

+20
-12
lines changed

3 files changed

+20
-12
lines changed

src/Spec/Swagger2.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -544,11 +544,23 @@ public function getResponseEnums(): array
544544
foreach ($model['properties'] as $propertyName => $property) {
545545
if (isset($property['enum'])) {
546546
$enumName = $property['x-enum-name'] ?? ucfirst($modelName) . ucfirst($propertyName);
547-
548-
if (!\in_array($enumName, array_column($list, 'name'))) {
547+
if (!isset($list[$enumName])) {
549548
$list[$enumName] = [
550549
'name' => $enumName,
551550
'enum' => $property['enum'],
551+
'keys' => $property['x-enum-keys'] ?? [],
552+
];
553+
}
554+
}
555+
556+
// array of enums
557+
if ((($property['type'] ?? null) === 'array') && isset($property['items']['enum'])) {
558+
$enumName = $property['x-enum-name'] ?? ucfirst($modelName) . ucfirst($propertyName);
559+
if (!isset($list[$enumName])) {
560+
$list[$enumName] = [
561+
'name' => $enumName,
562+
'enum' => $property['items']['enum'],
563+
'keys' => $property['items']['x-enum-keys'] ?? [],
552564
];
553565
}
554566
}

templates/dart/test/src/models/model_test.dart.twig

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
{{ property.name | escapeKeyword }}: {% if property.type == 'array' %}[]{% elseif property.type == 'object' and (property.sub_schema == 'prefs' or property.sub_schema == 'preferences') %}Preferences(data: {}){% elseif property.type == 'object' and property.sub_schema %}{{_self.sub_schema(definitions, property)}}{% elseif property.type == 'string' %}'{{property['x-example'] | escapeDollarSign}}'{% elseif property.type == 'boolean' %}true{% else %}{{property['x-example']}}{% endif %},
44
{% endfor %}{% endif %}){% endif %}{% else %}{% if property.type == 'object' and property.additionalProperties %}Map<String, dynamic>{% else %}{{property | typeName}}{% endif %}{% endif %}{% endmacro %}
55
import 'package:{{ language.params.packageName }}/models.dart';
6+
{% if definition.properties | filter(p => p.enum) | length > 0 %}
67
import 'package:{{ language.params.packageName }}/enums.dart';
8+
{% endif %}
79
{% if 'dart' in language.params.packageName %}
810
import 'package:test/test.dart';
911
{% else %}
@@ -15,7 +17,7 @@ void main() {
1517
test('model', () {
1618
final model = {{ definition.name | caseUcfirst | overrideIdentifier }}(
1719
{% for property in definition.properties | filter(p => p.required) %}
18-
{{ property.name | escapeKeyword }}: {% if property.type == 'array' %}[]{% elseif property.type == 'object' and (property.sub_schema == 'prefs' or property.sub_schema == 'preferences') %}Preferences(data: {}){% elseif property.type == 'object' and property.sub_schema %}{{_self.sub_schema(spec.definitions, property)}}{% elseif property.type == 'object' %}{}{% elseif property.enum %}{%- set enumName = property['enumName'] ?? property.name -%}{{ enumName | caseUcfirst }}.{{ (property.enumKeys[0] ?? property.enum[0]) | caseEnumKey }}{% elseif property.type == 'string' %}'{{property['x-example'] | escapeDollarSign}}'{% elseif property.type == 'boolean' %}true{% else %}{{property['x-example']}}{% endif %},
20+
{{ property.name | escapeKeyword }}: {% if property.type == 'array' %}[]{% elseif property.type == 'object' and (property.sub_schema == 'prefs' or property.sub_schema == 'preferences') %}Preferences(data: {}){% elseif property.type == 'object' and property.sub_schema %}{{_self.sub_schema(spec.definitions, property)}}{% elseif property.type == 'object' %}{}{% elseif property.enum %}{{ property.enumName | caseUcfirst }}.{{ (property.enumKeys[0] ?? property.enum[0]) | caseEnumKey }}{% elseif property.type == 'string' %}'{{property['x-example'] | escapeDollarSign}}'{% elseif property.type == 'boolean' %}true{% else %}{{property['x-example']}}{% endif %},
1921
{% endfor %}
2022
{% if definition.additionalProperties %}
2123
data: {},
@@ -27,7 +29,7 @@ void main() {
2729

2830
{% for property in definition.properties | filter(p => p.required) %}
2931
{% if property.type != 'object' or not property.sub_schema or (property.sub_schema == 'prefs' and property.sub_schema == 'preferences') %}
30-
expect(result.{{ property.name | escapeKeyword }}{% if property.type == 'object' and (property.sub_schema == 'prefs' or property.sub_schema == 'preferences') %}.data{% endif %}, {% if property.type == 'array' %}[]{% elseif property.type == 'object' and (property.sub_schema == 'prefs' or property.sub_schema == 'preferences') %}{"data": {}}{% elseif property.type == 'object' %}{}{% elseif property.enum %}{%- set enumName = property['enumName'] ?? property.name -%}{{ enumName | caseUcfirst }}.{{ (property.enumKeys[0] ?? property.enum[0]) | caseEnumKey }}{% elseif property.type == 'string' %}'{{property['x-example'] | escapeDollarSign}}'{% elseif property.type == 'boolean' %}true{% else %}{{property['x-example']}}{% endif %});
32+
expect(result.{{ property.name | escapeKeyword }}{% if property.type == 'object' and (property.sub_schema == 'prefs' or property.sub_schema == 'preferences') %}.data{% endif %}, {% if property.type == 'array' %}[]{% elseif property.type == 'object' and (property.sub_schema == 'prefs' or property.sub_schema == 'preferences') %}{"data": {}}{% elseif property.type == 'object' %}{}{% elseif property.enum %}{{ property.enumName | caseUcfirst }}.{{ (property.enumKeys[0] ?? property.enum[0]) | caseEnumKey }}{% elseif property.type == 'string' %}'{{property['x-example'] | escapeDollarSign}}'{% elseif property.type == 'boolean' %}true{% else %}{{property['x-example']}}{% endif %});
3133
{% endif %}
3234
{% endfor %}
3335
});

templates/swift/Sources/Models/Model.swift.twig

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,8 @@
11
import Foundation
22
import JSONCodable
3-
{%~ set hasEnums = false %}
4-
{%~ for property in definition.properties %}
5-
{%~ if property.enum %}
6-
{%~ set hasEnums = true %}
7-
{%~ endif %}
8-
{%~ endfor %}
9-
{%~ if hasEnums %}
3+
{% if definition.properties | filter(p => p.enum) | length > 0 %}
104
import {{spec.title | caseUcfirst}}Enums
11-
{%~ endif %}
5+
{% endif %}
126

137
/// {{ definition.description }}
148
{% if definition.properties | length == 0 and not definition.additionalProperties %}

0 commit comments

Comments
 (0)