Skip to content

Commit c9622dd

Browse files
committed
fix(replace-empty-element): map additional Schema keywords
Closes #969
1 parent 6d4669a commit c9622dd

File tree

6 files changed

+94
-0
lines changed

6 files changed

+94
-0
lines changed

packages/apidom-ns-asyncapi-2/src/refractor/plugins/replace-empty-element.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,9 @@ const schema = {
493493
[ServerVariablesElement.primaryClass]: {
494494
'[key: *]': (...args: any[]) => new ServerVariableElement(...args),
495495
},
496+
'json-schema-properties': {
497+
'[key: *]': (...args: any[]) => new SchemaElement(...args),
498+
},
496499
[ServerSecurityElement.primaryClass]: {
497500
'<*>': (...args: any[]) => new SecurityRequirementElement(...args),
498501
},

packages/apidom-ns-asyncapi-2/test/refractor/plugins/replace-empty-element/__snapshots__/mappings.ts.snap

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,28 @@ exports[`given empty value instead for AsyncAPI.components.schemas.* should repl
3939
(SchemaElement)))))))
4040
`;
4141

42+
exports[`given empty value instead for Schema.properties.* should replace empty value with semantic element 1`] = `
43+
(AsyncApi2Element
44+
(MemberElement
45+
(StringElement)
46+
(AsyncApiVersionElement))
47+
(MemberElement
48+
(StringElement)
49+
(ComponentsElement
50+
(MemberElement
51+
(StringElement)
52+
(ObjectElement
53+
(MemberElement
54+
(StringElement)
55+
(SchemaElement
56+
(MemberElement
57+
(StringElement)
58+
(ObjectElement
59+
(MemberElement
60+
(StringElement)
61+
(SchemaElement)))))))))))
62+
`;
63+
4264
exports[`given empty value instead of ContactElement should replace empty value with semantic element 1`] = `
4365
(AsyncApi2Element
4466
(MemberElement

packages/apidom-ns-asyncapi-2/test/refractor/plugins/replace-empty-element/mappings.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,25 @@ describe('given empty value instead for AsyncAPI.components.schemas.*', function
7474
});
7575
});
7676

77+
describe('given empty value instead for Schema.properties.*', function () {
78+
it('should replace empty value with semantic element', async function () {
79+
const yamlDefinition = dedent`
80+
asyncapi: 2.2.0
81+
components:
82+
schemas:
83+
User:
84+
properties:
85+
firstName:
86+
`;
87+
const apiDOM = await parse(yamlDefinition);
88+
const asyncApiElement = AsyncApi2Element.refract(apiDOM.result, {
89+
plugins: [refractorPluginReplaceEmptyElement()],
90+
}) as AsyncApi2Element;
91+
92+
expect(sexprs(asyncApiElement)).toMatchSnapshot();
93+
});
94+
});
95+
7796
describe('given AsyncAPI definition with no empty values', function () {
7897
it('should do nothing', async function () {
7998
const yamlDefinition = dedent`

packages/apidom-ns-openapi-3-1/src/refractor/plugins/replace-empty-element.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,15 @@ const schema = {
380380
[ResponseLinksElement.primaryClass]: {
381381
'[key: *]': (...args: any[]) => new LinkElement(...args),
382382
},
383+
'json-schema-$defs': {
384+
'[key: *]': (...args: any[]) => new SchemaElement(...args),
385+
},
386+
'json-schema-dependentSchemas': {
387+
'[key: *]': (...args: any[]) => new SchemaElement(...args),
388+
},
389+
'json-schema-properties': {
390+
'[key: *]': (...args: any[]) => new SchemaElement(...args),
391+
},
383392
[ServersElement.primaryClass]: {
384393
'<*>': (...args: any[]) => new ServerElement(...args),
385394
},

packages/apidom-ns-openapi-3-1/test/refractor/plugins/replace-empty-element/__snapshots__/mappings.ts.snap

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,28 @@ exports[`given empty value instead for OpenAPI.components.schemas.* should repla
3939
(SchemaElement)))))))
4040
`;
4141

42+
exports[`given empty value instead for Schema.properties.* should replace empty value with semantic element 1`] = `
43+
(OpenApi3_1Element
44+
(MemberElement
45+
(StringElement)
46+
(OpenapiElement))
47+
(MemberElement
48+
(StringElement)
49+
(ComponentsElement
50+
(MemberElement
51+
(StringElement)
52+
(ObjectElement
53+
(MemberElement
54+
(StringElement)
55+
(SchemaElement
56+
(MemberElement
57+
(StringElement)
58+
(ObjectElement
59+
(MemberElement
60+
(StringElement)
61+
(SchemaElement)))))))))))
62+
`;
63+
4264
exports[`given empty value instead of ContactElement should replace empty value with semantic element 1`] = `
4365
(OpenApi3_1Element
4466
(MemberElement

packages/apidom-ns-openapi-3-1/test/refractor/plugins/replace-empty-element/mappings.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,25 @@ describe('given empty value instead for OpenAPI.components.schemas.*', function
7474
});
7575
});
7676

77+
describe('given empty value instead for Schema.properties.*', function () {
78+
it('should replace empty value with semantic element', async function () {
79+
const yamlDefinition = dedent`
80+
openapi: 3.1.0
81+
components:
82+
schemas:
83+
User:
84+
properties:
85+
firstName:
86+
`;
87+
const apiDOM = await parse(yamlDefinition);
88+
const openApiElement = OpenApi3_1Element.refract(apiDOM.result, {
89+
plugins: [refractorPluginReplaceEmptyElement()],
90+
}) as OpenApi3_1Element;
91+
92+
expect(sexprs(openApiElement)).toMatchSnapshot();
93+
});
94+
});
95+
7796
describe('given OpenAPI definition with no empty values', function () {
7897
it('should do nothing', async function () {
7998
const yamlDefinition = dedent`

0 commit comments

Comments
 (0)