mirror of
https://github.com/Redocly/redoc.git
synced 2025-01-27 16:14:08 +03:00
Add BaseComponent joinAllOf test suite
This commit is contained in:
parent
54461e3582
commit
5b32d31d13
|
@ -109,4 +109,87 @@ describe('BaseComponent', () => {
|
|||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('mergeAllOf', () => {
|
||||
before(() => {
|
||||
return schemaMgr.load('tests/schemas/base-component-joinallof.json');
|
||||
});
|
||||
|
||||
describe('Simple allOf merge', () => {
|
||||
let joined;
|
||||
before(() => {
|
||||
component.pointer = '/definitions/SimpleAllOf';
|
||||
component.onInit();
|
||||
component.dereference();
|
||||
component.joinAllOf();
|
||||
joined = component.componentSchema;
|
||||
});
|
||||
|
||||
it('should remove $allOf field', () => {
|
||||
expect(joined.allOf).to.not.exist;
|
||||
});
|
||||
|
||||
it('should set type object', () => {
|
||||
joined.type.should.be.equal('object');
|
||||
});
|
||||
|
||||
it('should merge properties', () => {
|
||||
Object.keys(joined.properties).length.should.be.equal(3);
|
||||
Object.keys(joined.properties).should.be.deep.equal(['prop1', 'prop2', 'prop3']);
|
||||
});
|
||||
|
||||
it('should merge required', () => {
|
||||
joined.required.length.should.be.equal(2);
|
||||
joined.required.should.be.deep.equal(['prop1', 'prop3']);
|
||||
});
|
||||
});
|
||||
|
||||
describe('AllOf with refrence', () => {
|
||||
let joined;
|
||||
before(() => {
|
||||
component.pointer = '/definitions/AllOfWithRef';
|
||||
component.onInit();
|
||||
component.dereference();
|
||||
component.joinAllOf();
|
||||
joined = component.componentSchema;
|
||||
});
|
||||
|
||||
it('should remove $allOf field', () => {
|
||||
expect(joined.allOf).to.not.exist;
|
||||
});
|
||||
|
||||
it('should set type object', () => {
|
||||
joined.type.should.be.equal('object');
|
||||
});
|
||||
|
||||
it('should merge properties', () => {
|
||||
Object.keys(joined.properties).length.should.be.equal(2);
|
||||
Object.keys(joined.properties).should.be.deep.equal(['id', 'prop3']);
|
||||
});
|
||||
|
||||
it('should merge required', () => {
|
||||
joined.required.length.should.be.equal(2);
|
||||
joined.required.should.be.deep.equal(['id', 'prop3']);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Incorrect or not supported allOf', () => {
|
||||
it('should throw when properties or required is set on the same level as allOf', () => {
|
||||
component.pointer = '/definitions/BadAllOf2';
|
||||
component.onInit();
|
||||
component.dereference();
|
||||
component.joinAllOf.bind(component).should.throw();
|
||||
});
|
||||
|
||||
it('should throw when merging non-object schemas', () => {
|
||||
component.pointer = '/definitions/BadAllOf1';
|
||||
component.onInit();
|
||||
component.dereference();
|
||||
component.joinAllOf.bind(component).should.throw();
|
||||
});
|
||||
});
|
||||
|
||||
describe.skip('Merge array allOf', () => {
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
90
tests/schemas/base-component-joinallof.json
Normal file
90
tests/schemas/base-component-joinallof.json
Normal file
|
@ -0,0 +1,90 @@
|
|||
{
|
||||
"swagger": "2.0",
|
||||
"info": {
|
||||
"version": "1.0.0",
|
||||
"title": "Test schema"
|
||||
},
|
||||
"host": "petstore.swagger.io",
|
||||
"basePath": "/v2/",
|
||||
"definitions": {
|
||||
"Simple": {
|
||||
"type": "object",
|
||||
"required": ["id"],
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"SimpleAllOf": {
|
||||
"allOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"required": ["prop1"],
|
||||
"properties": {
|
||||
"prop1": {
|
||||
"type": "string"
|
||||
},
|
||||
"prop2": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"required": ["prop3"],
|
||||
"properties": {
|
||||
"prop3": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"AllOfWithRef": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/definitions/Simple"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"required": ["prop3"],
|
||||
"properties": {
|
||||
"prop3": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"BadAllOf1": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/definitions/Simple"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
}
|
||||
]
|
||||
},
|
||||
"BadAllOf2": {
|
||||
"properties": {},
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/definitions/Simple"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"required": ["prop3"],
|
||||
"properties": {
|
||||
"prop3": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"paths": {
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user