Fix response list for shared schemas (fixes #177)

This commit is contained in:
Roman Hotsiy 2017-01-04 14:49:49 +02:00
parent 77877381a8
commit 73bfb18282
No known key found for this signature in database
GPG Key ID: 5CB7B3ACABA57CB0
3 changed files with 99 additions and 1 deletions

View File

@ -0,0 +1,57 @@
'use strict';
import { Component } from '@angular/core';
import {
inject,
async,
TestBed,
ComponentFixture
} from '@angular/core/testing';
import { getChildDebugElement } from '../../../tests/helpers';
import { ResponsesList } from './responses-list';
import { SpecManager } from '../../utils/spec-manager';
describe('Redoc components', () => {
describe('MethodsList Component', () => {
let builder;
let component: ResponsesList;
let fixture: ComponentFixture<ResponsesList>
let specMgr;
beforeEach(async(inject([SpecManager], (_specMgr) => {
specMgr = _specMgr;
})));
beforeEach(done => {
specMgr.load('/tests/schemas/responses-list-component.json').then(done, done.fail);
});
beforeEach(() => {
fixture = TestBed.createComponent(ResponsesList);
component = fixture.componentInstance;
});
it('should instantiate without errors', () => {
should.exist(component);
});
it('should init repsonses list', () => {
component.pointer = '#/paths/~1test1/get/responses';
fixture.detectChanges();
should.exist(component.responses);
component.responses.should.be.lengthOf(2);
});
it('should not overwrite codes for shared schemas', () => {
component.pointer = '#/paths/~1test1/get/responses';
fixture.detectChanges();
let resp1 = component.responses[0];
let resp2 = component.responses[1];
resp1.code.should.not.be.equal(resp2.code);
});
});
});

View File

@ -42,7 +42,7 @@ export class ResponsesList extends BaseComponent implements OnInit {
resp.pointer = JsonPointer.join(this.pointer, respCode);
if (resp.$ref) {
let ref = resp.$ref;
resp = this.specMgr.byPointer(resp.$ref);
resp = Object.assign({}, this.specMgr.byPointer(resp.$ref));
resp.pointer = ref;
}

View File

@ -0,0 +1,41 @@
{
"swagger": "2.0",
"info": {
},
"host": "petstore.swagger.io",
"basePath": "/v2/",
"tags": [{
"name": "traitTag",
"x-traitTag": true,
"description": "description1"
},{
"name": "tag1",
"description": "tag1",
}],
"schemes": ["http"],
"paths": {
"/test1": {
"get": {
"responses": {
"200": {
"description": "successful operation",
"schema": {
"$ref": "#/definitions/def1"
}
},
"201": {
"description": "successful operation",
"schema": {
"$ref": "#/definitions/def1"
}
}
}
}
}
},
"definitions": {
"def1": {
"type": "string"
}
}
}