Skip to content
This repository was archived by the owner on Nov 8, 2024. It is now read-only.

Commit fa75519

Browse files
committed
feat(oas3): support parameter object enums
1 parent f678da1 commit fa75519

File tree

3 files changed

+32
-1
lines changed

3 files changed

+32
-1
lines changed

packages/openapi3-parser/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# API Elements: OpenAPI 3 Parser Changelog
22

3+
## TBD
4+
5+
### Enhancements
6+
7+
- Support for the 'enum' property in 'Schema Object's found within 'Parameter
8+
Object'.
9+
310
## 0.15.2 (2021-02-15)
411

512
### Enhancements

packages/openapi3-parser/lib/parser/oas/parseParameterObjectSchemaObject.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const {
1010
const pipeParseResult = require('../../pipeParseResult');
1111
const parseObject = require('../parseObject');
1212
const parseString = require('../parseString');
13+
const parseEnum = require('../parseEnum');
1314

1415
const name = 'Schema Object';
1516
const unsupportedKeys = [
@@ -88,6 +89,7 @@ function parseSchemaObject(context) {
8889
const parseMember = R.cond([
8990
[hasKey('type'), parseType],
9091
[hasKey('example'), e => e.clone()],
92+
[hasKey('enum'), R.compose(parseEnum(context, name), getValue)],
9193

9294
[isUnsupportedKey, createUnsupportedMemberWarning(namespace, name)],
9395
[isExtension, () => new namespace.elements.ParseResult()],
@@ -101,7 +103,11 @@ function parseSchemaObject(context) {
101103
const type = schema.getValue('type');
102104
let element;
103105

104-
if (type === 'object') {
106+
const enumerations = schema.get('enum');
107+
108+
if (enumerations) {
109+
element = enumerations;
110+
} else if (type === 'object') {
105111
element = new namespace.elements.Object();
106112
} else if (type === 'array') {
107113
element = new namespace.elements.Array();

packages/openapi3-parser/test/unit/parser/oas/parseParameterObject-test.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -630,6 +630,24 @@ describe('Parameter Object', () => {
630630
expect(member.value.attributes.get('samples').toValue()).to.deep.equal([2048]);
631631
});
632632

633+
it('uses enum', () => {
634+
const parameter = new namespace.elements.Object({
635+
name: 'example',
636+
in: 'query',
637+
schema: {
638+
enum: ['0', '1'],
639+
},
640+
});
641+
642+
const parseResult = parse(context, parameter);
643+
644+
expect(parseResult.length).to.equal(1);
645+
const member = parseResult.get(0);
646+
expect(member).to.be.instanceof(namespace.elements.Member);
647+
expect(member.value).to.be.instanceof(namespace.elements.Enum);
648+
expect(member.value.enumerations.toValue()).to.deep.equal(['0', '1']);
649+
});
650+
633651
it('provides a warning when schema is not an object', () => {
634652
const parameter = new namespace.elements.Object({
635653
name: 'example',

0 commit comments

Comments
 (0)