@@ -30,7 +30,7 @@ final class Test_OperationDescription: Test_Core {
30
30
get: . init( parameters: [ operationLevelParameter] , requestBody: . b( . init( content: [ : ] ) ) , responses: [ : ] ) ,
31
31
vendorExtensions: [ : ]
32
32
)
33
- let allParameters = try _test ( pathItem)
33
+ let allParameters = try makeOperationDescription ( pathItem) ? . allParameters
34
34
35
35
XCTAssertEqual ( allParameters, [ operationLevelParameter] )
36
36
}
@@ -48,7 +48,7 @@ final class Test_OperationDescription: Test_Core {
48
48
get: . init( parameters: [ operationLevelParameter] , requestBody: . b( . init( content: [ : ] ) ) , responses: [ : ] ) ,
49
49
vendorExtensions: [ : ]
50
50
)
51
- let allParameters = try _test ( pathItem)
51
+ let allParameters = try makeOperationDescription ( pathItem) ? . allParameters
52
52
53
53
XCTAssertEqual ( allParameters, [ pathLevelParameter, operationLevelParameter] )
54
54
}
@@ -73,25 +73,78 @@ final class Test_OperationDescription: Test_Core {
73
73
) ,
74
74
vendorExtensions: [ : ]
75
75
)
76
- let allParameters = try _test ( pathItem)
76
+ let allParameters = try makeOperationDescription ( pathItem) ? . allParameters
77
77
78
78
XCTAssertEqual ( allParameters, [ pathLevelParameter, duplicatedParameter, operationLevelParameter] )
79
79
}
80
80
81
- private func _test( _ pathItem: OpenAPI . PathItem ) throws -> [ UnresolvedParameter ] {
81
+ func testResponseOutcomes_without_default_response( ) {
82
+ let responses : OpenAPI . Response . Map = [
83
+ . status( code: 200 ) : . b( . init( description: " 200 " ) ) , . status( code: 404 ) : . b( . init( description: " 404 " ) ) ,
84
+ ]
85
+
86
+ let pathItem = OpenAPI . PathItem ( get: . init( requestBody: . b( . init( content: [ : ] ) ) , responses: responses) )
87
+ let responseOutcomes = makeOperationDescription ( pathItem) ? . responseOutcomes
88
+
89
+ XCTAssertEqual (
90
+ responseOutcomes,
91
+ [
92
+ OpenAPI . Operation. ResponseOutcome ( status: responses [ 0 ] . key, response: responses [ 0 ] . value) ,
93
+ OpenAPI . Operation. ResponseOutcome ( status: responses [ 1 ] . key, response: responses [ 1 ] . value) ,
94
+ ]
95
+ )
96
+ }
97
+
98
+ func testResponseOutcomes_with_default_response_on_last( ) {
99
+ let responses : OpenAPI . Response . Map = [
100
+ . status( code: 200 ) : . b( . init( description: " 200 " ) ) , . status( code: 404 ) : . b( . init( description: " 404 " ) ) ,
101
+ . default: . b( . init( description: " default " ) ) ,
102
+ ]
103
+
104
+ let pathItem = OpenAPI . PathItem ( get: . init( requestBody: . b( . init( content: [ : ] ) ) , responses: responses) )
105
+ let responseOutcomes = makeOperationDescription ( pathItem) ? . responseOutcomes
106
+
107
+ XCTAssertEqual (
108
+ responseOutcomes,
109
+ [
110
+ OpenAPI . Operation. ResponseOutcome ( status: responses [ 0 ] . key, response: responses [ 0 ] . value) ,
111
+ OpenAPI . Operation. ResponseOutcome ( status: responses [ 1 ] . key, response: responses [ 1 ] . value) ,
112
+ OpenAPI . Operation. ResponseOutcome ( status: responses [ 2 ] . key, response: responses [ 2 ] . value) ,
113
+ ]
114
+ )
115
+ }
116
+
117
+ func testResponseOutcomes_with_default_response_on_first( ) {
118
+ let responses : OpenAPI . Response . Map = [
119
+ . default: . b( . init( description: " default " ) ) , . status( code: 200 ) : . b( . init( description: " 200 " ) ) ,
120
+ . status( code: 404 ) : . b( . init( description: " 404 " ) ) ,
121
+ ]
122
+
123
+ let pathItem = OpenAPI . PathItem ( get: . init( requestBody: . b( . init( content: [ : ] ) ) , responses: responses) )
124
+ let responseOutcomes = makeOperationDescription ( pathItem) ? . responseOutcomes
125
+
126
+ XCTAssertEqual (
127
+ responseOutcomes,
128
+ [
129
+ OpenAPI . Operation. ResponseOutcome ( status: responses [ 1 ] . key, response: responses [ 1 ] . value) ,
130
+ OpenAPI . Operation. ResponseOutcome ( status: responses [ 2 ] . key, response: responses [ 2 ] . value) ,
131
+ OpenAPI . Operation. ResponseOutcome ( status: responses [ 0 ] . key, response: responses [ 0 ] . value) ,
132
+ ]
133
+ )
134
+ }
135
+
136
+ private func makeOperationDescription( _ pathItem: OpenAPI . PathItem ) -> OperationDescription ? {
82
137
guard let endpoint = pathItem. endpoints. first else {
83
138
XCTFail ( " Unable to retrieve the path item first endpoint. " )
84
- return [ ]
139
+ return nil
85
140
}
86
141
87
- let operationDescription = OperationDescription (
142
+ return OperationDescription (
88
143
path: . init( [ " /test " ] ) ,
89
144
endpoint: endpoint,
90
145
pathParameters: pathItem. parameters,
91
146
components: . init( ) ,
92
147
asSwiftSafeName: { $0 }
93
148
)
94
-
95
- return try operationDescription. allParameters
96
149
}
97
150
}
0 commit comments