Skip to content

Commit

Permalink
Merge pull request #231 from apiaryio/honzajavorek/style-tests
Browse files Browse the repository at this point in the history
Reformat assertions inlined by eslint --fix
  • Loading branch information
honzajavorek committed Feb 22, 2019
2 parents fbf73bb + 3d7a163 commit e952c88
Show file tree
Hide file tree
Showing 7 changed files with 785 additions and 500 deletions.
237 changes: 142 additions & 95 deletions test/integration/compile-apib-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,19 @@ describe('compile() · API Blueprint', () => {
const { mediaType, apiElements } = fixtures('missing-title-annotation').apib;
const compilationResult = compile(mediaType, apiElements);

it('produces one annotation and no transactions', () => assert.jsonSchema(compilationResult, createCompilationResultSchema({
annotations: 1,
transactions: 0,
})));

it('produces warning about missing title', () => assert.jsonSchema(compilationResult.annotations[0], createAnnotationSchema({
type: 'warning',
component: 'apiDescriptionParser',
message: 'expected API name',
})));
it('produces one annotation and no transactions', () => {
assert.jsonSchema(compilationResult, createCompilationResultSchema({
annotations: 1,
transactions: 0,
}));
});
it('produces warning about missing title', () => {
assert.jsonSchema(compilationResult.annotations[0], createAnnotationSchema({
type: 'warning',
component: 'apiDescriptionParser',
message: 'expected API name',
}));
});
});

describe('causing a \'not found within URI Template\' warning', () => {
Expand All @@ -32,16 +35,19 @@ describe('compile() · API Blueprint', () => {
const { mediaType, apiElements } = fixtures('not-specified-in-uri-template-annotation').apib;
const compilationResult = compile(mediaType, apiElements);

it('produces one annotation and one transaction', () => assert.jsonSchema(compilationResult, createCompilationResultSchema({
annotations: 1,
transactions: 1,
})));

it('produces warning about parameter not being in the URI Template', () => assert.jsonSchema(compilationResult.annotations[0], createAnnotationSchema({
type: 'warning',
component: 'apiDescriptionParser',
message: /not found within.+uri template/i,
})));
it('produces one annotation and one transaction', () => {
assert.jsonSchema(compilationResult, createCompilationResultSchema({
annotations: 1,
transactions: 1,
}));
});
it('produces warning about parameter not being in the URI Template', () => {
assert.jsonSchema(compilationResult.annotations[0], createAnnotationSchema({
type: 'warning',
component: 'apiDescriptionParser',
message: /not found within.+uri template/i,
}));
});
});

describe('with multiple transaction examples', () => {
Expand All @@ -58,32 +64,36 @@ describe('compile() · API Blueprint', () => {
{ exampleName: 'Example 2', requestContentType: 'text/plain', responseStatusCode: 415 },
];

it('calls the detection of transaction examples', () => assert.isTrue(detectTransactionExampleNumbersStub.called));

it(`produces ${expected.length} transactions`, () => assert.jsonSchema(compilationResult, createCompilationResultSchema({
transactions: expected.length,
})));

it('calls the detection of transaction examples', () => {
assert.isTrue(detectTransactionExampleNumbersStub.called);
});
it(`produces ${expected.length} transactions`, () => {
assert.jsonSchema(compilationResult, createCompilationResultSchema({
transactions: expected.length,
}));
});
Array.from(expected).map((expectations, i) => context(`transaction #${i + 1}`, () => {
const { exampleName, requestContentType, responseStatusCode } = expectations;

it(`is identified as part of ${JSON.stringify(exampleName)}`, () => assert.equal(
compilationResult.transactions[i].origin.exampleName,
exampleName
));

it(`is identified as part of ${JSON.stringify(exampleName)}`, () => {
assert.equal(
compilationResult.transactions[i].origin.exampleName,
exampleName
);
});
it(`has request with Content-Type: ${requestContentType}`, () => {
const { headers } = compilationResult.transactions[i].request;
const contentType = headers
.filter(header => header.name === 'Content-Type')
.map(header => header.value)[0];
assert.equal(contentType, requestContentType);
});

it(`has response with status code ${responseStatusCode}`, () => assert.equal(
compilationResult.transactions[i].response.status,
responseStatusCode
));
it(`has response with status code ${responseStatusCode}`, () => {
assert.equal(
compilationResult.transactions[i].response.status,
responseStatusCode
);
});
}));
});

Expand All @@ -95,14 +105,18 @@ describe('compile() · API Blueprint', () => {
const { mediaType, apiElements } = fixtures('one-transaction-example').apib;
const compilationResult = stubbedCompile(mediaType, apiElements);

it('calls the detection of transaction examples', () => assert.isTrue(detectTransactionExampleNumbersStub.called));

it('produces one transaction', () => assert.jsonSchema(compilationResult, createCompilationResultSchema({
transactions: 1,
})));

it('calls the detection of transaction examples', () => {
assert.isTrue(detectTransactionExampleNumbersStub.called);
});
it('produces one transaction', () => {
assert.jsonSchema(compilationResult, createCompilationResultSchema({
transactions: 1,
}));
});
context('the transaction', () => {
it('is identified as part of no example in \'origin\'', () => assert.equal(compilationResult.transactions[0].origin.exampleName, ''));
it('is identified as part of no example in \'origin\'', () => {
assert.equal(compilationResult.transactions[0].origin.exampleName, '');
});
});
});

Expand All @@ -111,18 +125,28 @@ describe('compile() · API Blueprint', () => {
const { mediaType, apiElements } = fixtures('arbitrary-action').apib;
const compilationResult = compile(mediaType, apiElements, filename);

it('produces two transactions', () => assert.jsonSchema(compilationResult, createCompilationResultSchema({
transactions: 2,
})));
it('produces two transactions', () => {
assert.jsonSchema(compilationResult, createCompilationResultSchema({
transactions: 2,
}));
});

context('the action within a resource', () => {
it('has URI inherited from the resource', () => assert.equal(compilationResult.transactions[0].request.uri, '/resource/1'));
it('has its method', () => assert.equal(compilationResult.transactions[0].request.method, 'GET'));
it('has URI inherited from the resource', () => {
assert.equal(compilationResult.transactions[0].request.uri, '/resource/1');
});
it('has its method', () => {
assert.equal(compilationResult.transactions[0].request.method, 'GET');
});
});

context('the arbitrary action', () => {
it('has its own URI', () => assert.equal(compilationResult.transactions[1].request.uri, '/arbitrary/sample'));
it('has its method', () => assert.equal(compilationResult.transactions[1].request.method, 'POST'));
it('has its own URI', () => {
assert.equal(compilationResult.transactions[1].request.uri, '/arbitrary/sample');
});
it('has its method', () => {
assert.equal(compilationResult.transactions[1].request.method, 'POST');
});
});
});

Expand All @@ -131,74 +155,97 @@ describe('compile() · API Blueprint', () => {
const { mediaType, apiElements } = fixtures('without-sections').apib;
const compilationResult = compile(mediaType, apiElements, filename);

it('produces one transaction', () => assert.jsonSchema(compilationResult, createCompilationResultSchema({
transactions: 1,
})));
it('produces one transaction', () => {
assert.jsonSchema(compilationResult, createCompilationResultSchema({
transactions: 1,
}));
});

context('\'origin\'', () => {
it('uses filename as API name', () => assert.equal(compilationResult.transactions[0].origin.apiName, filename));
it('uses empty string as resource group name', () => assert.equal(compilationResult.transactions[0].origin.resourceGroupName, ''));
it('uses URI as resource name', () => assert.equal(compilationResult.transactions[0].origin.resourceName, '/message'));
it('uses method as action name', () => assert.equal(compilationResult.transactions[0].origin.actionName, 'GET'));
it('uses filename as API name', () => {
assert.equal(compilationResult.transactions[0].origin.apiName, filename);
});
it('uses empty string as resource group name', () => {
assert.equal(compilationResult.transactions[0].origin.resourceGroupName, '');
});
it('uses URI as resource name', () => {
assert.equal(compilationResult.transactions[0].origin.resourceName, '/message');
});
it('uses method as action name', () => {
assert.equal(compilationResult.transactions[0].origin.actionName, 'GET');
});
});
});

describe('with different sample and default value of URI parameter', () => {
const { mediaType, apiElements } = fixtures('prefer-sample').apib;
const compilationResult = compile(mediaType, apiElements);

it('produces one transaction', () => assert.jsonSchema(compilationResult, createCompilationResultSchema({
transactions: 1,
})));

it('expands the request URI using the sample value', () => assert.equal(compilationResult.transactions[0].request.uri, '/honey?beekeeper=Pavan'));
it('produces one transaction', () => {
assert.jsonSchema(compilationResult, createCompilationResultSchema({
transactions: 1,
}));
});
it('expands the request URI using the sample value', () => {
assert.equal(compilationResult.transactions[0].request.uri, '/honey?beekeeper=Pavan');
});
});

describe('with response without explicit status code', () => {
const { mediaType, apiElements } = fixtures('no-status').apib;
const compilationResult = compile(mediaType, apiElements);

it('produces 1 annotation and 1 transaction', () => assert.jsonSchema(compilationResult, createCompilationResultSchema({
annotations: 1,
transactions: 1,
})));

it('produces warning about the response status code being assumed', () => assert.jsonSchema(compilationResult.annotations[0], createAnnotationSchema({
type: 'warning',
component: 'apiDescriptionParser',
message: 'missing response HTTP status code, assuming',
})));

it('assumes HTTP 200', () => assert.equal(compilationResult.transactions[0].response.status, '200'));
it('produces 1 annotation and 1 transaction', () => {
assert.jsonSchema(compilationResult, createCompilationResultSchema({
annotations: 1,
transactions: 1,
}));
});
it('produces warning about the response status code being assumed', () => {
assert.jsonSchema(compilationResult.annotations[0], createAnnotationSchema({
type: 'warning',
component: 'apiDescriptionParser',
message: 'missing response HTTP status code, assuming',
}));
});
it('assumes HTTP 200', () => {
assert.equal(compilationResult.transactions[0].response.status, '200');
});
});

describe('with multiple HTTP headers of the same name', () => {
const { mediaType, apiElements } = fixtures('http-headers-multiple').apib;
const compilationResult = compile(mediaType, apiElements);

it('produces 1 annotation and 1 transaction', () => assert.jsonSchema(compilationResult, createCompilationResultSchema({
annotations: 1,
transactions: 1,
})));

it('produces warning about duplicate header names', () => assert.jsonSchema(compilationResult.annotations[0], createAnnotationSchema({
type: 'warning',
component: 'apiDescriptionParser',
message: /duplicate definition.+header/,
})));
it('produces 1 annotation and 1 transaction', () => {
assert.jsonSchema(compilationResult, createCompilationResultSchema({
annotations: 1,
transactions: 1,
}));
});
it('produces warning about duplicate header names', () => {
assert.jsonSchema(compilationResult.annotations[0], createAnnotationSchema({
type: 'warning',
component: 'apiDescriptionParser',
message: /duplicate definition.+header/,
}));
});

context('the transaction', () => {
it('has the expected request headers', () => assert.deepEqual(compilationResult.transactions[0].request.headers, [
{ name: 'Content-Type', value: 'application/json' },
{ name: 'X-Multiple', value: 'foo' },
{ name: 'X-Multiple', value: 'bar' },
]));

it('has the expected response headers', () => assert.deepEqual(compilationResult.transactions[0].response.headers, [
{ name: 'Content-Type', value: 'application/json' },
{ name: 'Set-Cookie', value: 'session-id=123' },
{ name: 'Set-Cookie', value: 'likes-honey=true' },
]));
it('has the expected request headers', () => {
assert.deepEqual(compilationResult.transactions[0].request.headers, [
{ name: 'Content-Type', value: 'application/json' },
{ name: 'X-Multiple', value: 'foo' },
{ name: 'X-Multiple', value: 'bar' },
]);
});
it('has the expected response headers', () => {
assert.deepEqual(compilationResult.transactions[0].response.headers, [
{ name: 'Content-Type', value: 'application/json' },
{ name: 'Set-Cookie', value: 'session-id=123' },
{ name: 'Set-Cookie', value: 'likes-honey=true' },
]);
});
});
});
});

0 comments on commit e952c88

Please sign in to comment.