mirror of
https://github.com/usebruno/bruno.git
synced 2025-02-18 02:30:58 +01:00
test updates
This commit is contained in:
parent
ab37e53346
commit
99c2dd9030
@ -1,8 +1,6 @@
|
|||||||
const { describe, it, expect } = require('@jest/globals');
|
const { describe, it, expect } = require('@jest/globals');
|
||||||
const xmlbuilder = require('xmlbuilder');
|
|
||||||
const fs = require('fs');
|
|
||||||
|
|
||||||
const { printRunSummary, makeJunitOutput } = require('../../src/commands/run');
|
const { printRunSummary } = require('../../src/commands/run');
|
||||||
|
|
||||||
describe('printRunSummary', () => {
|
describe('printRunSummary', () => {
|
||||||
// Suppress console.log output
|
// Suppress console.log output
|
||||||
@ -67,133 +65,3 @@ describe('printRunSummary', () => {
|
|||||||
expect(summary.failedTests).toBe(2);
|
expect(summary.failedTests).toBe(2);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('makeJUnitOutput', () => {
|
|
||||||
let createStub = jest.fn();
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
jest.spyOn(xmlbuilder, 'create').mockImplementation(() => {
|
|
||||||
return { end: createStub };
|
|
||||||
});
|
|
||||||
jest.spyOn(fs, 'writeFileSync').mockImplementation(() => {});
|
|
||||||
});
|
|
||||||
|
|
||||||
afterEach(() => {
|
|
||||||
jest.restoreAllMocks();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should produce a junit spec object for serialization', () => {
|
|
||||||
const results = [
|
|
||||||
{
|
|
||||||
description: 'description provided',
|
|
||||||
suitename: 'Tests/Suite A',
|
|
||||||
request: {
|
|
||||||
method: 'GET',
|
|
||||||
url: 'https://ima.test'
|
|
||||||
},
|
|
||||||
assertionResults: [
|
|
||||||
{
|
|
||||||
lhsExpr: 'res.status',
|
|
||||||
rhsExpr: 'eq 200',
|
|
||||||
status: 'pass'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
lhsExpr: 'res.status',
|
|
||||||
rhsExpr: 'neq 200',
|
|
||||||
status: 'fail',
|
|
||||||
error: 'expected 200 to not equal 200'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
runtime: 1.2345678
|
|
||||||
},
|
|
||||||
{
|
|
||||||
request: {
|
|
||||||
method: 'GET',
|
|
||||||
url: 'https://imanother.test'
|
|
||||||
},
|
|
||||||
suitename: 'Tests/Suite B',
|
|
||||||
testResults: [
|
|
||||||
{
|
|
||||||
lhsExpr: 'res.status',
|
|
||||||
rhsExpr: 'eq 200',
|
|
||||||
description: 'A test that passes',
|
|
||||||
status: 'pass'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
description: 'A test that fails',
|
|
||||||
status: 'fail',
|
|
||||||
error: 'expected 200 to not equal 200',
|
|
||||||
status: 'fail'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
runtime: 2.3456789
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
makeJunitOutput(results, '/tmp/testfile.xml');
|
|
||||||
expect(createStub).toBeCalled;
|
|
||||||
|
|
||||||
const junit = xmlbuilder.create.mock.calls[0][0];
|
|
||||||
|
|
||||||
expect(junit.testsuites).toBeDefined;
|
|
||||||
expect(junit.testsuites.testsuite.length).toBe(2);
|
|
||||||
expect(junit.testsuites.testsuite[0].testcase.length).toBe(2);
|
|
||||||
expect(junit.testsuites.testsuite[1].testcase.length).toBe(2);
|
|
||||||
|
|
||||||
expect(junit.testsuites.testsuite[0]['@name']).toBe('Tests/Suite A');
|
|
||||||
expect(junit.testsuites.testsuite[1]['@name']).toBe('Tests/Suite B');
|
|
||||||
|
|
||||||
expect(junit.testsuites.testsuite[0]['@tests']).toBe(2);
|
|
||||||
expect(junit.testsuites.testsuite[1]['@tests']).toBe(2);
|
|
||||||
|
|
||||||
const testcase = junit.testsuites.testsuite[0].testcase[0];
|
|
||||||
|
|
||||||
expect(testcase['@name']).toBe('res.status eq 200');
|
|
||||||
expect(testcase['@status']).toBe('pass');
|
|
||||||
|
|
||||||
const failcase = junit.testsuites.testsuite[0].testcase[1];
|
|
||||||
|
|
||||||
expect(failcase['@name']).toBe('res.status neq 200');
|
|
||||||
expect(failcase.failure).toBeDefined;
|
|
||||||
expect(failcase.failure[0]['@type']).toBe('failure');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should handle request errors', () => {
|
|
||||||
const results = [
|
|
||||||
{
|
|
||||||
description: 'description provided',
|
|
||||||
suitename: 'Tests/Suite A',
|
|
||||||
request: {
|
|
||||||
method: 'GET',
|
|
||||||
url: 'https://ima.test'
|
|
||||||
},
|
|
||||||
assertionResults: [
|
|
||||||
{
|
|
||||||
lhsExpr: 'res.status',
|
|
||||||
rhsExpr: 'eq 200',
|
|
||||||
status: 'fail'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
runtime: 1.2345678,
|
|
||||||
error: 'timeout of 2000ms exceeded'
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
makeJunitOutput(results, '/tmp/testfile.xml');
|
|
||||||
|
|
||||||
const junit = xmlbuilder.create.mock.calls[0][0];
|
|
||||||
|
|
||||||
expect(createStub).toBeCalled;
|
|
||||||
|
|
||||||
expect(junit.testsuites).toBeDefined;
|
|
||||||
expect(junit.testsuites.testsuite.length).toBe(1);
|
|
||||||
expect(junit.testsuites.testsuite[0].testcase.length).toBe(1);
|
|
||||||
|
|
||||||
const failcase = junit.testsuites.testsuite[0].testcase[0];
|
|
||||||
|
|
||||||
expect(failcase['@name']).toBe('Test suite has no errors');
|
|
||||||
expect(failcase.error).toBeDefined;
|
|
||||||
expect(failcase.error[0]['@type']).toBe('error');
|
|
||||||
expect(failcase.error[0]['@message']).toBe('timeout of 2000ms exceeded');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
135
packages/bruno-cli/tests/reporters/junit.spec.js
Normal file
135
packages/bruno-cli/tests/reporters/junit.spec.js
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
const { describe, it, expect } = require('@jest/globals');
|
||||||
|
const xmlbuilder = require('xmlbuilder');
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
|
const makeJUnitOutput = require('../../src/reporters/junit');
|
||||||
|
|
||||||
|
describe('makeJUnitOutput', () => {
|
||||||
|
let createStub = jest.fn();
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
jest.spyOn(xmlbuilder, 'create').mockImplementation(() => {
|
||||||
|
return { end: createStub };
|
||||||
|
});
|
||||||
|
jest.spyOn(fs, 'writeFileSync').mockImplementation(() => {});
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
jest.restoreAllMocks();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should produce a junit spec object for serialization', () => {
|
||||||
|
const results = [
|
||||||
|
{
|
||||||
|
description: 'description provided',
|
||||||
|
suitename: 'Tests/Suite A',
|
||||||
|
request: {
|
||||||
|
method: 'GET',
|
||||||
|
url: 'https://ima.test'
|
||||||
|
},
|
||||||
|
assertionResults: [
|
||||||
|
{
|
||||||
|
lhsExpr: 'res.status',
|
||||||
|
rhsExpr: 'eq 200',
|
||||||
|
status: 'pass'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
lhsExpr: 'res.status',
|
||||||
|
rhsExpr: 'neq 200',
|
||||||
|
status: 'fail',
|
||||||
|
error: 'expected 200 to not equal 200'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
runtime: 1.2345678
|
||||||
|
},
|
||||||
|
{
|
||||||
|
request: {
|
||||||
|
method: 'GET',
|
||||||
|
url: 'https://imanother.test'
|
||||||
|
},
|
||||||
|
suitename: 'Tests/Suite B',
|
||||||
|
testResults: [
|
||||||
|
{
|
||||||
|
lhsExpr: 'res.status',
|
||||||
|
rhsExpr: 'eq 200',
|
||||||
|
description: 'A test that passes',
|
||||||
|
status: 'pass'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description: 'A test that fails',
|
||||||
|
status: 'fail',
|
||||||
|
error: 'expected 200 to not equal 200',
|
||||||
|
status: 'fail'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
runtime: 2.3456789
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
makeJUnitOutput(results, '/tmp/testfile.xml');
|
||||||
|
expect(createStub).toBeCalled;
|
||||||
|
|
||||||
|
const junit = xmlbuilder.create.mock.calls[0][0];
|
||||||
|
|
||||||
|
expect(junit.testsuites).toBeDefined;
|
||||||
|
expect(junit.testsuites.testsuite.length).toBe(2);
|
||||||
|
expect(junit.testsuites.testsuite[0].testcase.length).toBe(2);
|
||||||
|
expect(junit.testsuites.testsuite[1].testcase.length).toBe(2);
|
||||||
|
|
||||||
|
expect(junit.testsuites.testsuite[0]['@name']).toBe('Tests/Suite A');
|
||||||
|
expect(junit.testsuites.testsuite[1]['@name']).toBe('Tests/Suite B');
|
||||||
|
|
||||||
|
expect(junit.testsuites.testsuite[0]['@tests']).toBe(2);
|
||||||
|
expect(junit.testsuites.testsuite[1]['@tests']).toBe(2);
|
||||||
|
|
||||||
|
const testcase = junit.testsuites.testsuite[0].testcase[0];
|
||||||
|
|
||||||
|
expect(testcase['@name']).toBe('res.status eq 200');
|
||||||
|
expect(testcase['@status']).toBe('pass');
|
||||||
|
|
||||||
|
const failcase = junit.testsuites.testsuite[0].testcase[1];
|
||||||
|
|
||||||
|
expect(failcase['@name']).toBe('res.status neq 200');
|
||||||
|
expect(failcase.failure).toBeDefined;
|
||||||
|
expect(failcase.failure[0]['@type']).toBe('failure');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle request errors', () => {
|
||||||
|
const results = [
|
||||||
|
{
|
||||||
|
description: 'description provided',
|
||||||
|
suitename: 'Tests/Suite A',
|
||||||
|
request: {
|
||||||
|
method: 'GET',
|
||||||
|
url: 'https://ima.test'
|
||||||
|
},
|
||||||
|
assertionResults: [
|
||||||
|
{
|
||||||
|
lhsExpr: 'res.status',
|
||||||
|
rhsExpr: 'eq 200',
|
||||||
|
status: 'fail'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
runtime: 1.2345678,
|
||||||
|
error: 'timeout of 2000ms exceeded'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
makeJUnitOutput(results, '/tmp/testfile.xml');
|
||||||
|
|
||||||
|
const junit = xmlbuilder.create.mock.calls[0][0];
|
||||||
|
|
||||||
|
expect(createStub).toBeCalled;
|
||||||
|
|
||||||
|
expect(junit.testsuites).toBeDefined;
|
||||||
|
expect(junit.testsuites.testsuite.length).toBe(1);
|
||||||
|
expect(junit.testsuites.testsuite[0].testcase.length).toBe(1);
|
||||||
|
|
||||||
|
const failcase = junit.testsuites.testsuite[0].testcase[0];
|
||||||
|
|
||||||
|
expect(failcase['@name']).toBe('Test suite has no errors');
|
||||||
|
expect(failcase.error).toBeDefined;
|
||||||
|
expect(failcase.error[0]['@type']).toBe('error');
|
||||||
|
expect(failcase.error[0]['@message']).toBe('timeout of 2000ms exceeded');
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user