Skip to content

Commit 66e978b

Browse files
authored
Merge pull request #97 from sphinx-contrib/oas-fragments-in-tests
Use OAS YAML fragments in renderers tests
2 parents 6cd85b9 + 9e4f021 commit 66e978b

9 files changed

+1722
-1217
lines changed

tests/renderers/httpdomain/conftest.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
"""Some shared goodies."""
22

3+
import textwrap
4+
35
import pytest
6+
import yaml
47

58
from sphinxcontrib.openapi import renderers
69

@@ -13,3 +16,11 @@ def fakestate():
1316
@pytest.fixture(scope="function")
1417
def testrenderer(fakestate):
1518
return renderers.HttpdomainRenderer(fakestate, {})
19+
20+
21+
@pytest.fixture(scope="function")
22+
def oas_fragment():
23+
def oas_fragment(fragment):
24+
return yaml.safe_load(textwrap.dedent(fragment))
25+
26+
return oas_fragment

tests/renderers/httpdomain/test_render_operation.py

Lines changed: 127 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -11,36 +11,36 @@ def textify(generator):
1111
return "\n".join(generator)
1212

1313

14-
def test_render_operation(testrenderer):
14+
def test_render_operation(testrenderer, oas_fragment):
1515
"""Usual operation definition is rendered."""
1616

1717
markup = textify(
1818
testrenderer.render_operation(
1919
"/evidences/{evidenceId}",
2020
"get",
21-
{
22-
"summary": "Retrieve an evidence by ID.",
23-
"description": "More verbose description...",
24-
"parameters": [
25-
{
26-
"name": "evidenceId",
27-
"in": "path",
28-
"required": True,
29-
"description": "A unique evidence identifier to query.",
30-
"schema": {"type": "string"},
31-
},
32-
{
33-
"name": "details",
34-
"in": "query",
35-
"description": "If true, information w/ details is returned.",
36-
"schema": {"type": "boolean"},
37-
},
38-
],
39-
"responses": {
40-
"200": {"description": "An evidence."},
41-
"404": {"description": "An evidence not found."},
42-
},
43-
},
21+
oas_fragment(
22+
"""
23+
summary: Retrieve an evidence by ID.
24+
description: More verbose description...
25+
parameters:
26+
- name: evidenceId
27+
in: path
28+
required: true
29+
description: A unique evidence identifier to query.
30+
schema:
31+
type: string
32+
- name: details
33+
in: query
34+
description: If true, information w/ details is returned.
35+
schema:
36+
type: boolean
37+
responses:
38+
'200':
39+
description: An evidence.
40+
'404':
41+
description: An evidence not found.
42+
"""
43+
),
4444
)
4545
)
4646
assert markup == textwrap.dedent(
@@ -65,14 +65,20 @@ def test_render_operation(testrenderer):
6565
)
6666

6767

68-
def test_render_operation_minimal(testrenderer):
68+
def test_render_operation_minimal(testrenderer, oas_fragment):
6969
"""Operation minimal definition is rendered."""
7070

7171
markup = textify(
7272
testrenderer.render_operation(
7373
"/evidences",
7474
"post",
75-
{"responses": {"201": {"description": "An evidence created."}}},
75+
oas_fragment(
76+
"""
77+
responses:
78+
'201':
79+
description: An evidence created.
80+
"""
81+
),
7682
)
7783
)
7884
assert markup == textwrap.dedent(
@@ -85,17 +91,21 @@ def test_render_operation_minimal(testrenderer):
8591
)
8692

8793

88-
def test_render_operation_summary(testrenderer):
94+
def test_render_operation_summary(testrenderer, oas_fragment):
8995
"""Operation's 'summary' is rendered in bold."""
9096

9197
markup = textify(
9298
testrenderer.render_operation(
9399
"/evidences",
94100
"post",
95-
{
96-
"summary": "Create an evidence.",
97-
"responses": {"201": {"description": "An evidence created."}},
98-
},
101+
oas_fragment(
102+
"""
103+
summary: Create an evidence.
104+
responses:
105+
'201':
106+
description: An evidence created.
107+
"""
108+
),
99109
)
100110
)
101111
assert markup == textwrap.dedent(
@@ -110,17 +120,21 @@ def test_render_operation_summary(testrenderer):
110120
)
111121

112122

113-
def test_render_operation_description(testrenderer):
123+
def test_render_operation_description(testrenderer, oas_fragment):
114124
"""Operation's 'description' is rendered."""
115125

116126
markup = textify(
117127
testrenderer.render_operation(
118128
"/evidences",
119129
"post",
120-
{
121-
"description": "Create an evidence.",
122-
"responses": {"201": {"description": "An evidence created."}},
123-
},
130+
oas_fragment(
131+
"""
132+
description: Create an evidence.
133+
responses:
134+
'201':
135+
description: An evidence created.
136+
"""
137+
),
124138
)
125139
)
126140
assert markup == textwrap.dedent(
@@ -135,17 +149,23 @@ def test_render_operation_description(testrenderer):
135149
)
136150

137151

138-
def test_render_operation_description_multiline(testrenderer):
152+
def test_render_operation_description_multiline(testrenderer, oas_fragment):
139153
"""Operation's multiline 'description' is rendered."""
140154

141155
markup = textify(
142156
testrenderer.render_operation(
143157
"/evidences",
144158
"post",
145-
{
146-
"description": "Create\nan evidence.",
147-
"responses": {"201": {"description": "An evidence created."}},
148-
},
159+
oas_fragment(
160+
"""
161+
description: |
162+
Create
163+
an evidence.
164+
responses:
165+
'201':
166+
description: An evidence created.
167+
"""
168+
),
149169
)
150170
)
151171
assert markup == textwrap.dedent(
@@ -161,17 +181,21 @@ def test_render_operation_description_multiline(testrenderer):
161181
)
162182

163183

164-
def test_render_operation_description_commonmark_default(testrenderer):
184+
def test_render_operation_description_commonmark_default(testrenderer, oas_fragment):
165185
"""Operation's 'description' must be in commonmark by default."""
166186

167187
markup = textify(
168188
testrenderer.render_operation(
169189
"/evidences",
170190
"post",
171-
{
172-
"description": "__Create__ an `evidence`.",
173-
"responses": {"201": {"description": "An evidence created."}},
174-
},
191+
oas_fragment(
192+
"""
193+
description: __Create__ an `evidence`.
194+
responses:
195+
'201':
196+
description: An evidence created.
197+
"""
198+
),
175199
)
176200
)
177201
assert markup == textwrap.dedent(
@@ -186,18 +210,22 @@ def test_render_operation_description_commonmark_default(testrenderer):
186210
)
187211

188212

189-
def test_render_operation_description_commonmark(fakestate):
213+
def test_render_operation_description_commonmark(fakestate, oas_fragment):
190214
"""Operation's 'description' can be in commonmark."""
191215

192216
testrenderer = renderers.HttpdomainRenderer(fakestate, {"markup": "commonmark"})
193217
markup = textify(
194218
testrenderer.render_operation(
195219
"/evidences",
196220
"post",
197-
{
198-
"description": "__Create__ an `evidence`.",
199-
"responses": {"201": {"description": "An evidence created."}},
200-
},
221+
oas_fragment(
222+
"""
223+
description: __Create__ an `evidence`.
224+
responses:
225+
'201':
226+
description: An evidence created.
227+
"""
228+
),
201229
)
202230
)
203231
assert markup == textwrap.dedent(
@@ -212,7 +240,9 @@ def test_render_operation_description_commonmark(fakestate):
212240
)
213241

214242

215-
def test_render_operation_description_commonmark_restructuredtext(fakestate):
243+
def test_render_operation_description_commonmark_restructuredtext(
244+
fakestate, oas_fragment
245+
):
216246
"""Operation's 'description' can be in restructuredtext."""
217247

218248
testrenderer = renderers.HttpdomainRenderer(
@@ -222,10 +252,14 @@ def test_render_operation_description_commonmark_restructuredtext(fakestate):
222252
testrenderer.render_operation(
223253
"/evidences",
224254
"post",
225-
{
226-
"description": "__Create__ an `evidence`.",
227-
"responses": {"201": {"description": "An evidence created."}},
228-
},
255+
oas_fragment(
256+
"""
257+
description: __Create__ an `evidence`.
258+
responses:
259+
'201':
260+
description: An evidence created.
261+
"""
262+
),
229263
)
230264
)
231265
assert markup == textwrap.dedent(
@@ -240,17 +274,21 @@ def test_render_operation_description_commonmark_restructuredtext(fakestate):
240274
)
241275

242276

243-
def test_render_operation_deprecated(testrenderer):
277+
def test_render_operation_deprecated(testrenderer, oas_fragment):
244278
"""Operation's 'deprecated' mark is rendered."""
245279

246280
markup = textify(
247281
testrenderer.render_operation(
248282
"/evidences",
249283
"post",
250-
{
251-
"deprecated": True,
252-
"responses": {"201": {"description": "An evidence created."}},
253-
},
284+
oas_fragment(
285+
"""
286+
responses:
287+
'201':
288+
description: An evidence created.
289+
deprecated: true
290+
"""
291+
),
254292
)
255293
)
256294
assert markup == textwrap.dedent(
@@ -264,21 +302,26 @@ def test_render_operation_deprecated(testrenderer):
264302
)
265303

266304

267-
def test_render_operation_w_requestbody(testrenderer):
305+
def test_render_operation_w_requestbody(testrenderer, oas_fragment):
268306
"""Operation's 'requestBody' is rendered."""
269307

270308
markup = textify(
271309
testrenderer.render_operation(
272310
"/evidences",
273311
"post",
274-
{
275-
"requestBody": {
276-
"content": {
277-
"application/json": {"example": {"foo": "bar", "baz": 42}}
278-
},
279-
},
280-
"responses": {"201": {"description": "An evidence created."}},
281-
},
312+
oas_fragment(
313+
"""
314+
requestBody:
315+
content:
316+
application/json:
317+
example:
318+
foo: bar
319+
baz: 42
320+
responses:
321+
'201':
322+
description: An evidence created.
323+
"""
324+
),
282325
)
283326
)
284327
assert markup == textwrap.dedent(
@@ -304,21 +347,26 @@ def test_render_operation_w_requestbody(testrenderer):
304347
@pytest.mark.parametrize(
305348
["method"], [pytest.param("POST"), pytest.param("pOst"), pytest.param("post")]
306349
)
307-
def test_render_operation_caseinsensitive_method(testrenderer, method):
350+
def test_render_operation_caseinsensitive_method(testrenderer, method, oas_fragment):
308351
"""Operation's 'method' is case insensitive."""
309352

310353
markup = textify(
311354
testrenderer.render_operation(
312355
"/evidences",
313356
method,
314-
{
315-
"requestBody": {
316-
"content": {
317-
"application/json": {"example": {"foo": "bar", "baz": 42}}
318-
},
319-
},
320-
"responses": {"201": {"description": "An evidence created."}},
321-
},
357+
oas_fragment(
358+
"""
359+
requestBody:
360+
content:
361+
application/json:
362+
example:
363+
foo: bar
364+
baz: 42
365+
responses:
366+
'201':
367+
description: An evidence created.
368+
"""
369+
),
322370
)
323371
)
324372
assert markup == textwrap.dedent(

0 commit comments

Comments
 (0)