Skip to content
This repository was archived by the owner on Jul 22, 2025. It is now read-only.

Commit 77b98a4

Browse files
authored
Merge pull request #88 from elbart/master
PoC: Support swagger ``example`` field for colander
2 parents 2ddff4d + 3f23441 commit 77b98a4

File tree

5 files changed

+23
-3
lines changed

5 files changed

+23
-3
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ nosetests.xml
4444
coverage.xml
4545
*,cover
4646
.hypothesis/
47+
.pytest_cache/
4748

4849
# Translations
4950
*.mo

CHANGES.rst

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@ CHANGES
44
0.6.1 (unreleased)
55
------------------
66

7-
- Nothing changed yet.
7+
- Support swagger ``example`` field on colander ``SchemaNode`` custom kwarg::
8+
9+
def SomeSchema(colander.MappingSchema):
10+
name = colander.SchemaNode(colander.String(), example='Mr. IceCream')
11+
12+
The ``example`` field is returned in the swagger spec accordingly.
813

914

1015
0.6.0 (2018-03-28)

cornice_swagger/converters/schema.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,8 @@ def convert_type(self, schema_node):
126126
converted['description'] = schema_node.description
127127
if schema_node.default is not colander.null:
128128
converted['default'] = schema_node.default
129+
if 'example' in schema_node.__dict__:
130+
converted['example'] = schema_node.example
129131

130132
return converted
131133

tests/support.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ class BodySchema(colander.MappingSchema):
1111
id = colander.SchemaNode(colander.String())
1212
timestamp = colander.SchemaNode(colander.Int())
1313
obj = MyNestedSchema()
14+
ex = colander.SchemaNode(colander.String(), missing=colander.drop, example='example string')
1415

1516

1617
class QuerySchema(colander.MappingSchema):

tests/test_response_handler.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,23 @@ def test_response_schema(self):
2929
self.assertDictEqual(responses['200']['headers'],
3030
{'bar': {'type': 'string'}})
3131

32+
def test_response_schema_with_example(self):
33+
class ResponseSchema(colander.MappingSchema):
34+
body = BodySchema()
35+
36+
response_schemas = {'200': ResponseSchema(description='Return gelatto')}
37+
responses = self.handler.from_schema_mapping(response_schemas)
38+
self.assertTrue('ex' in responses['200']['schema']['properties'])
39+
self.assertTrue('example' in responses['200']['schema']['properties']['ex'])
40+
self.assertEquals(responses['200']['schema']['properties']['ex']['example'],
41+
'example string')
42+
3243
def test_cornice_location_synonyms(self):
3344

34-
class ReponseSchema(colander.MappingSchema):
45+
class ResponseSchema(colander.MappingSchema):
3546
header = HeaderSchema()
3647

37-
response_schemas = {'200': ReponseSchema(description='Return gelatto')}
48+
response_schemas = {'200': ResponseSchema(description='Return gelatto')}
3849
responses = self.handler.from_schema_mapping(response_schemas)
3950

4051
self.assertDictEqual(responses['200']['headers'],

0 commit comments

Comments
 (0)