From 47cd65f2a36c50f487e32a3caee0b9a85b31c9b4 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Mon, 14 Dec 2015 15:54:11 +0200 Subject: [PATCH] Improved SchemaManager test suite --- tests/schemas/schema-mgr-methodparams.json | 15 ++++++----- tests/unit/SchemaManager.spec.js | 31 +++++++++++++++++++--- 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/tests/schemas/schema-mgr-methodparams.json b/tests/schemas/schema-mgr-methodparams.json index 527b66c1..9350e38c 100644 --- a/tests/schemas/schema-mgr-methodparams.json +++ b/tests/schemas/schema-mgr-methodparams.json @@ -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" + } } } } diff --git a/tests/unit/SchemaManager.spec.js b/tests/unit/SchemaManager.spec.js index e3c56721..a060a61c 100644 --- a/tests/unit/SchemaManager.spec.js +++ b/tests/unit/SchemaManager.spec.js @@ -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(); }); });