Skip to content

Commit

Permalink
fix lint and add tests for new example responses
Browse files Browse the repository at this point in the history
  • Loading branch information
jozsefsallai committed Jun 30, 2020
1 parent 855318d commit 19cb28b
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 18 deletions.
3 changes: 2 additions & 1 deletion src/lib/buildRequest.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@ export default function (requestData) {
return requestData;
}

let exampleResponses = [];
const exampleResponses = [];

let match;
// eslint-disable-next-line no-cond-assign
while (match = reExampleResponse.exec(requestData.description)) {
exampleResponses.push(makeExampleResponse(match));
}
Expand Down
68 changes: 51 additions & 17 deletions src/lib/buildRequest.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,27 +21,61 @@ describe('buildRequest', function () {
return expect(buildRequest(this.dummy)).to.deep.eql(this.dummy);
});

it('should not return example if tags not present', function () {
const dummy = { ...this.dummy, description: 'Hello world' };
const request = buildRequest(dummy);
describe('example responses', function () {
beforeEach(function () {
const description = `This is an example:
<!-- RESPONSE -->
no status code
<!-- ENDRESPONSE -->
expect(request.exampleResponse).to.be.null;
return expect(request.description).to.eql(dummy.description);
});
more text goes here
it('should separate example from description if tags present', function () {
const description = `This is an example:
<!-- RESPONSE -->
plaintext
<!-- RESPONSE 200 -->
response 200
<!-- ENDRESPONSE -->
more text`;
const dummy = { ...this.dummy, description };
const request = buildRequest(dummy);
even more text
<!--RESPONSE 404 -->
response 404
<!-- ENDRESPONSE -->`;

this.exampleResponseDummy = { ...this.dummy, description };
});

it('should not return example if tags not present', function () {
const dummy = { ...this.dummy, description: 'Hello world' };
const request = buildRequest(dummy);

expect(request.exampleResponses).to.have.length(0);
return expect(request.description).to.eql(dummy.description);
});

it('should extract example responses, regardless of tag spacing', function () {
const request = buildRequest(this.exampleResponseDummy);
return expect(request.exampleResponses).to.have.length(3);
});

it('should remove example responses from the description', function () {
const request = buildRequest(this.exampleResponseDummy);
return expect(request.description).to.eql('This is an example:\n\n\nmore text goes here\n\n\n\neven more text\n\n');
});

it('should return null for example response code if it was not provided', function () {
const request = buildRequest(this.exampleResponseDummy);
return expect(request.exampleResponses[0].code).to.be.null;
});

it('should return correct status codes when provided', function() {
const request = buildRequest(this.exampleResponseDummy);
expect(request.exampleResponses[1].code).to.eql('200');
return expect(request.exampleResponses[2].code).to.eql('404');
});

expect(request.description).to.not.include(`<!-- RESPONSE -->
plaintext
<!-- ENDRESPONSE -->`);
return expect(request.exampleResponse).to.eql('plaintext');
it('should return correct example', function () {
const request = buildRequest(this.exampleResponseDummy);
const values = request.exampleResponses.map(ex => ex.value);
return expect(values).to.deep.eql([ 'no status code', 'response 200', 'response 404' ]);
});
});
});

0 comments on commit 19cb28b

Please sign in to comment.