Skip to content

Commit 15cae4c

Browse files
committed
Merge pull request #76 from spotify/issue-47
Fix for issue 47
2 parents 87a6300 + f492a57 commit 15cae4c

File tree

4 files changed

+51
-5
lines changed

4 files changed

+51
-5
lines changed

ramlfications/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from __future__ import absolute_import, division, print_function
55

66
__author__ = "Lynn Root"
7-
__version__ = "0.1.9.dev1"
7+
__version__ = "0.1.9.dev2"
88
__license__ = "Apache 2.0"
99

1010
__email__ = "[email protected]"

ramlfications/parser.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -615,17 +615,19 @@ def wrap(key, data, meth, _v):
615615
for meth in list(iterkeys(res_data)):
616616
if meth in accepted_methods:
617617
method_data = _get(res_data, meth, {})
618+
comb_data = dict(list(iteritems(method_data)) +
619+
list(iteritems(res_data)))
618620
resource = ResourceTypeNode(
619621
name=name,
620622
raw=res_data,
621623
root=root,
622624
headers=headers(method_data),
623625
body=body(method_data),
624626
responses=responses(method_data),
625-
uri_params=uri_params(res_data),
626-
base_uri_params=base_uri_params(res_data),
627-
query_params=query_params(res_data),
628-
form_params=form_params(res_data),
627+
uri_params=uri_params(comb_data),
628+
base_uri_params=base_uri_params(comb_data),
629+
query_params=query_params(method_data),
630+
form_params=form_params(method_data),
629631
media_type=_get(v, "mediaType"),
630632
desc=description(),
631633
type=_get(res_data, "type"),

tests/data/examples/resource-type-inherited.raml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,18 @@ resourceTypes:
1010
headers:
1111
X-BaseType-Header:
1212
description: Inherited header from basetype
13+
queryParameters:
14+
inheritedParam:
15+
description: query parameter that should be inherited
16+
formParameters:
17+
inheritedFormParam:
18+
description: form parameter that should be inherited
19+
uriParameters:
20+
inheritedUriParam:
21+
description: uri parameter that should be inherited
22+
baseUriParameters:
23+
inheritedBaseUriParam:
24+
description: base uri parameter that should be inherited
1325
responses:
1426
200:
1527
description: Inherited OK response
@@ -28,6 +40,22 @@ resourceTypes:
2840
headers:
2941
X-InheritBaseType-Header:
3042
description: A header for inheritbase resource type
43+
queryParameters:
44+
aNewParam:
45+
description: another parameter added from base type
46+
example: a new param
47+
formParameters:
48+
aNewFormParam:
49+
description: another form parameter added from base type
50+
example: a new param
51+
uriParameters:
52+
aNewUriParam:
53+
description: another uri parameter added from base type
54+
example: a new param
55+
baseUriParameters:
56+
aNewBaseUriParam:
57+
description: another base uri parameter added from base type
58+
example: a new param
3159
body:
3260
application/json:
3361
schema: !include includes/inherited.schema.json

tests/test_parser.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -918,6 +918,22 @@ def test_resource_inherits_type(inherited_resources):
918918
assert q.required is True
919919

920920

921+
def test_res_type_inheritance(inherited_resources):
922+
res = inherited_resources.resource_types[0]
923+
assert res.name == "basetype"
924+
assert len(res.query_params) == 1
925+
assert len(res.form_params) == 1
926+
assert len(res.uri_params) == 1
927+
assert len(res.base_uri_params) == 1
928+
929+
res = inherited_resources.resource_types[-1]
930+
assert res.name == "inheritbase"
931+
assert len(res.query_params) == 2
932+
assert len(res.form_params) == 2
933+
assert len(res.uri_params) == 2
934+
assert len(res.base_uri_params) == 2
935+
936+
921937
def test_resource_inherits_type_optional_post(inherited_resources):
922938
assert len(inherited_resources.resources) == 7
923939
res = inherited_resources.resources[1]

0 commit comments

Comments
 (0)