Skip to content

Commit 6b98c89

Browse files
committed
Fixed issue where generated collection contained request and folder in incorrect order
1 parent d6c2afe commit 6b98c89

File tree

3 files changed

+44
-40
lines changed

3 files changed

+44
-40
lines changed

libV2/helpers/collection/generateSkeletionTreeFromOpenAPI.js

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,7 @@ let _ = require('lodash'),
3030
/**
3131
* Get all the paths sorted in desc order.
3232
*/
33-
const paths = Object.keys(openapi.paths).sort((a, b) => {
34-
return (a > b ? -1 : 1);
35-
});
33+
const paths = Object.keys(openapi.paths);
3634

3735
if (_.isEmpty(paths)) {
3836
return tree;
@@ -152,18 +150,24 @@ let _ = require('lodash'),
152150
}
153151

154152
else {
155-
tree.setNode(`path:folder:${pathIdentifier}`, {
156-
type: 'folder',
157-
meta: {
158-
name: path,
159-
path: path,
160-
pathIdentifier: pathIdentifier
161-
},
162-
data: {}
163-
});
153+
let fromNode = index === 0 ? 'root:collection' : `path:folder:${previousPathIdentified}`,
154+
toNode = `path:folder:${pathIdentifier}`;
164155

165-
tree.setEdge(index === 0 ? 'root:collection' : `path:folder:${previousPathIdentified}`,
166-
`path:folder:${pathIdentifier}`);
156+
if (!tree.hasNode(toNode)) {
157+
tree.setNode(toNode, {
158+
type: 'folder',
159+
meta: {
160+
name: path,
161+
path: path,
162+
pathIdentifier: pathIdentifier
163+
},
164+
data: {}
165+
});
166+
}
167+
168+
if (!tree.hasEdge(fromNode, toNode)) {
169+
tree.setEdge(fromNode, toNode);
170+
}
167171
}
168172
});
169173
}

test/unit/base.test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1910,7 +1910,7 @@ describe('CONVERT FUNCTION TESTS ', function() {
19101910

19111911
it('Should add corresponding Accept header in collection example\'s request correctly', function(done) {
19121912
var openapi = fs.readFileSync(acceptHeaderExample, 'utf8');
1913-
Converter.convertV2({ type: 'string', data: openapi }, {},
1913+
Converter.convert({ type: 'string', data: openapi }, {},
19141914
(err, conversionResult) => {
19151915
expect(err).to.be.null;
19161916
expect(conversionResult.result).to.equal(true);
@@ -1920,8 +1920,8 @@ describe('CONVERT FUNCTION TESTS ', function() {
19201920
expect(conversionResult.output[0].data).to.have.property('item');
19211921
expect(conversionResult.output[0].data.item.length).to.equal(1);
19221922

1923-
const item1 = conversionResult.output[0].data.item[0].item[0].item[0].item[0],
1924-
item2 = conversionResult.output[0].data.item[0].item[1].item[0],
1923+
const item1 = conversionResult.output[0].data.item[0].item[1],
1924+
item2 = conversionResult.output[0].data.item[0].item[0],
19251925
acceptHeader = {
19261926
key: 'Accept',
19271927
value: 'application/json'

test/unit/convertV2.test.js

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ describe('The convert v2 Function', function() {
104104

105105
expect(err).to.be.null;
106106
expect(conversionResult.output[0].data.auth.type).to.equal('apikey');
107-
expect(conversionResult.output[0].data.item[0].item[0].request.auth.type).to.equal('apikey');
108-
expect(conversionResult.output[0].data.item[1].item[0].request.auth.type).to.equal('bearer');
107+
expect(conversionResult.output[0].data.item[0].item[0].request.auth.type).to.equal('bearer');
108+
expect(conversionResult.output[0].data.item[1].item[0].request.auth.type).to.equal('apikey');
109109
done();
110110
});
111111
});
@@ -234,15 +234,15 @@ describe('The convert v2 Function', function() {
234234
expect(conversionResult.output[0].data).to.have.property('item');
235235
expect(conversionResult.output[0].data).to.have.property('variable');
236236
expect(conversionResult.output[0].data.variable).to.be.an('array');
237-
expect(conversionResult.output[0].data.variable[4].key).to.equal('format');
238-
expect(conversionResult.output[0].data.variable[4].value).to.equal('json');
239-
expect(conversionResult.output[0].data.variable[5].key).to.equal('path');
240-
expect(conversionResult.output[0].data.variable[5].value).to.equal('send-email');
241-
expect(conversionResult.output[0].data.variable[6].key).to.equal('new-path-variable-1');
237+
expect(conversionResult.output[0].data.variable[1].key).to.equal('format');
238+
expect(conversionResult.output[0].data.variable[1].value).to.equal('json');
239+
expect(conversionResult.output[0].data.variable[2].key).to.equal('path');
240+
expect(conversionResult.output[0].data.variable[2].value).to.equal('send-email');
241+
expect(conversionResult.output[0].data.variable[3].key).to.equal('new-path-variable-1');
242242
// serialised value for object { R: 100, G: 200, B: 150 }
243-
expect(conversionResult.output[0].data.variable[6].value).to.equal('R,100,G,200,B,150');
244-
expect(conversionResult.output[0].data.variable[7].key).to.equal('new-path-variable-2');
245-
expect(conversionResult.output[0].data.variable[7].value).to.contain('exampleString');
243+
expect(conversionResult.output[0].data.variable[3].value).to.equal('R,100,G,200,B,150');
244+
expect(conversionResult.output[0].data.variable[4].key).to.equal('new-path-variable-2');
245+
expect(conversionResult.output[0].data.variable[4].value).to.contain('exampleString');
246246
done();
247247
});
248248
});
@@ -359,14 +359,14 @@ describe('The convert v2 Function', function() {
359359
(err, conversionResult) => {
360360
// Combining protocol, host, path to create a request
361361
// Ex https:// + example.com + /example = https://example.com/example
362-
let request = conversionResult.output[0].data.item[0].item[0].item[0].request,
362+
let request = conversionResult.output[0].data.item[1].item[0].item[0].request,
363363
protocol = request.url.protocol,
364364
host = request.url.host.join('.'),
365365
port = request.url.port,
366366
path = request.url.path.join('/'),
367367
endPoint = protocol + '://' + host + ':' + port + '/' + path,
368368
host1 = conversionResult.output[0].data.variable[0].value,
369-
path1 = conversionResult.output[0].data.item[1].item[0].item[0].request.url.path.join('/'),
369+
path1 = conversionResult.output[0].data.item[0].item[0].item[0].request.url.path.join('/'),
370370
endPoint1 = host1 + '/' + path1;
371371
expect(endPoint).to.equal('http://petstore.swagger.io:{{port}}/:basePath/secondary-domain/fails');
372372
expect(endPoint1).to.equal('https://api.example.com/primary-domain/works');
@@ -785,8 +785,8 @@ describe('The convert v2 Function', function() {
785785
// query1 required, query2 optional
786786
// header1 required, header2 optional
787787
// response: header1 required, header2 optional
788-
request = requests[1].request;
789-
response = requests[1].response[0];
788+
request = requests[0].request;
789+
response = requests[0].response[0];
790790
expect(request.url.query[0].description.content).to.equal('(Required) Description of query1');
791791
expect(request.url.query[1].description.content).to.equal('Description of query2');
792792
expect(request.header[0].description.content).to.equal('(Required) Description of header1');
@@ -797,7 +797,7 @@ describe('The convert v2 Function', function() {
797797
// PUT /pets
798798
// RequestBody: multipart/form-data
799799
// formParam1 required, formParam2 optional
800-
request = requests[2].request;
800+
request = requests[1].request;
801801
expect(request.body.formdata[0].description.content).to.equal('(Required) Description of formParam1');
802802
expect(request.body.formdata[1].description.content).to.equal('Description of formParam2');
803803
expect(request.body.formdata[0].contentType).to.equal('application/xml');
@@ -806,7 +806,7 @@ describe('The convert v2 Function', function() {
806806
// POST /pets
807807
// RequestBody: application/x-www-form-urlencoded
808808
// urlencodedParam1 required, urlencodedParam2 optional
809-
request = requests[3].request;
809+
request = requests[2].request;
810810
expect(request.body.urlencoded[0].description.content).to.equal('(Required) Description of urlencodedParam1');
811811
expect(request.body.urlencoded[1].description.content).to.equal('Description of urlencodedParam2');
812812

@@ -927,7 +927,7 @@ describe('The convert v2 Function', function() {
927927

928928
Converter.convertV2(input, {}, (err, result) => {
929929
expect(err).to.be.null;
930-
let body = JSON.parse(result.output[0].data.item[0].item[1].response[0].body);
930+
let body = JSON.parse(result.output[0].data.item[0].item[0].response[0].body);
931931
expect(result.result).to.be.true;
932932
expect(body)
933933
.to.be.an('array').with.length(2);
@@ -995,15 +995,15 @@ describe('The convert v2 Function', function() {
995995
// GET /pets
996996
// query1 required, query2 optional
997997
// header1 required, header2 optional
998-
request = requests[1].request;
998+
request = requests[0].request;
999999
expect(request.url.query[0].disabled).to.be.false;
10001000
expect(request.url.query[1].disabled).to.be.true;
10011001
expect(request.header[0].disabled).to.be.false;
10021002
expect(request.header[1].disabled).to.be.true;
10031003

10041004
// POST /pets
10051005
// urlencoded body
1006-
urlencodedBody = requests[3].request.body.urlencoded;
1006+
urlencodedBody = requests[2].request.body.urlencoded;
10071007
expect(urlencodedBody[0].key).to.eql('urlencodedParam1');
10081008
expect(urlencodedBody[0].disabled).to.be.false;
10091009
expect(urlencodedBody[1].key).to.eql('urlencodedParam2');
@@ -1994,11 +1994,11 @@ describe('The convert v2 Function', function() {
19941994
optimizeConversion: false, stackLimit: 50
19951995
}, (err, result) => {
19961996
const expectedResponseBody1 = JSON.parse(
1997-
result.output[0].data.item[0].item[0].item[0]
1997+
result.output[0].data.item[0].item[0].item[1]
19981998
.item[0].response[0].body
19991999
),
20002000
expectedResponseBody2 = JSON.parse(
2001-
result.output[0].data.item[0].item[0].item[1].item[0].item[0].response[0].body
2001+
result.output[0].data.item[0].item[0].item[0].item[0].item[0].response[0].body
20022002
);
20032003
expect(err).to.be.null;
20042004
expect(result.result).to.be.true;
@@ -2278,8 +2278,8 @@ describe('The convert v2 Function', function() {
22782278
expect(conversionResult.output[0].data).to.have.property('item');
22792279
expect(conversionResult.output[0].data.item.length).to.equal(1);
22802280

2281-
const item1 = conversionResult.output[0].data.item[0].item[0].item[0].item[0],
2282-
item2 = conversionResult.output[0].data.item[0].item[1].item[0],
2281+
const item1 = conversionResult.output[0].data.item[0].item[1].item[0].item[0],
2282+
item2 = conversionResult.output[0].data.item[0].item[0].item[0],
22832283
acceptHeader = {
22842284
key: 'Accept',
22852285
value: 'application/json'

0 commit comments

Comments
 (0)