Improved SchemaManager test suite

This commit is contained in:
Roman Hotsiy 2015-12-14 15:54:11 +02:00
parent 4af37bbd09
commit 47cd65f2a3
2 changed files with 36 additions and 10 deletions

View File

@ -49,19 +49,20 @@
}
},
"test3": {
"parameters": [
{
"name": "pathParam",
"in": "path",
"type": "string"
}
],
"get": {
"summary": "test get",
"parameters": [
{ "$ref": "#/parameters/extparam" }
]
}
},
"test4": {
"parameters": {
"$ref": "#/parameters/extparam"
},
"get": {
"summary": "test get"
}
}
}
}

View File

@ -14,12 +14,21 @@ describe('Schema manager', () => {
it('Should be a singleton', ()=> {
(new SchemaManager()).should.be.equal(schemaMgr);
SchemaManager.instance().should.be.equal(schemaMgr);
});
it('load should return a promise', ()=> {
schemaMgr.load('/tests/schemas/extended-petstore.json').should.be.instanceof(Promise);
});
it('load should reject promise for invalid url', (done)=> {
schemaMgr.load('/nonexisting/schema.json').then(() => {
throw new Error('Succees handler should not be called');
}, () => {
done();
});
});
it('load should resolve promise for valid url', (done)=> {
schemaMgr.load('/tests/schemas/extended-petstore.json').then(() => {
done();
@ -79,6 +88,12 @@ describe('Schema manager', () => {
};
tagsMap.should.be.deep.equal(expectedResult);
});
it('should return empty array for non-specified tags', () => {
delete schemaMgr._schema.tags;
let tagsMap = schemaMgr.getTagsMap();
tagsMap.should.be.empty;
});
});
describe('buildMenuTree method', () => {
@ -169,7 +184,7 @@ describe('Schema manager', () => {
});
});
it('should merge path and method parameters', () => {
it('should propagate path parameters', () => {
let params = schemaMgr.getMethodParams('/paths/test1/get');
params.length.should.be.equal(2);
params[0].name.should.be.equal('methodParam');
@ -182,6 +197,12 @@ describe('Schema manager', () => {
params[1]._pointer.should.be.equal('/paths/test1/parameters/0');
});
it('should accept pointer directly to parameters', () => {
let params = schemaMgr.getMethodParams('/paths/test1/get/parameters', true);
expect(params).to.exist;
params.length.should.be.equal(2);
});
it('should resolve path params from Parameters Definitions Object', () => {
let params = schemaMgr.getMethodParams('/paths/test2/get', true);
params.length.should.be.equal(2);
@ -192,10 +213,14 @@ describe('Schema manager', () => {
it('should resolve method params from Parameters Definitions Object', () => {
let params = schemaMgr.getMethodParams('/paths/test3/get', true);
params.length.should.be.equal(2);
params.length.should.be.equal(1);
params[0].name.should.be.equal('extParam');
params[0]._pointer.should.be.equal('#/parameters/extparam');
params[1].name.should.be.equal('pathParam');
});
it('should throw for parameters other than array', () => {
let func = () => schemaMgr.getMethodParams('/paths/test4/get', true);
func.should.throw();
});
});