cybernaut
Version:
Reliable, zero configuration end-to-end testing in BDD-style.
217 lines • 10.1 kB
JavaScript
// tslint:disable no-any
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const proxyquire = require("proxyquire");
const ava_1 = require("ava");
const stubs_1 = require("./stubs");
proxyquire.noPreserveCache();
proxyquire.preserveCache();
proxyquire('../test', {
'./description': { format: stubs_1.testStubs.format }, './step': { run: stubs_1.testStubs.run }
});
const test_1 = require("../test");
const driver = {};
class CustomTest extends test_1.Test {
constructor() {
super(driver, 10, 500);
this.fail = stubs_1.testStubs.fail;
this.pass = stubs_1.testStubs.pass;
}
fail(message, cause) {
return;
}
pass(message) {
return;
}
}
const accessor = {
description: { template: 'accessor' }, get: stubs_1.testStubs.get
};
const action = {
description: { template: 'action' }, perform: stubs_1.testStubs.perform
};
const predicate = {
description: { template: 'predicate' }, test: stubs_1.testStubs.test
};
ava_1.default.beforeEach(() => {
stubs_1.resetAll(stubs_1.testStubs);
});
ava_1.default('`Test.assert` should call `Test.pass`', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(6);
stubs_1.testStubs.format.onFirstCall().returns('accessor');
stubs_1.testStubs.format.onSecondCall().returns('predicate');
stubs_1.testStubs.run.resolves(2);
yield new CustomTest().assert(accessor, predicate);
t.is(stubs_1.testStubs.format.callCount, 2);
t.is(stubs_1.testStubs.format.args[0][0], accessor.description);
t.is(stubs_1.testStubs.format.args[1][0], predicate.description);
t.is(stubs_1.testStubs.pass.callCount, 1);
t.is(stubs_1.testStubs.pass.args[0][0], 'accessor predicate (attempt 2 of 11)');
t.is(stubs_1.testStubs.fail.callCount, 0);
}));
ava_1.default('`Test.assert` should call `Test.fail`', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(7);
stubs_1.testStubs.format.onFirstCall().returns('accessor');
stubs_1.testStubs.format.onSecondCall().returns('predicate');
stubs_1.testStubs.run.rejects(new Error('message'));
yield new CustomTest().assert(accessor, predicate);
t.is(stubs_1.testStubs.format.callCount, 2);
t.is(stubs_1.testStubs.format.args[0][0], accessor.description);
t.is(stubs_1.testStubs.format.args[1][0], predicate.description);
t.is(stubs_1.testStubs.pass.callCount, 0);
t.is(stubs_1.testStubs.fail.callCount, 1);
t.is(stubs_1.testStubs.fail.args[0][0], 'accessor predicate');
t.deepEqual(stubs_1.testStubs.fail.args[0][1], new Error('message'));
}));
ava_1.default('`Test.assert` should pass default values to `run`', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(3);
yield new CustomTest().assert(accessor, predicate);
t.is(stubs_1.testStubs.run.callCount, 1);
t.is(stubs_1.testStubs.run.args[0][1], 10);
t.is(stubs_1.testStubs.run.args[0][2], 500);
}));
ava_1.default('`Test.assert` should pass individual values to `run`', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(3);
yield new CustomTest().assert(accessor, predicate, 20, 1000);
t.is(stubs_1.testStubs.run.callCount, 1);
t.is(stubs_1.testStubs.run.args[0][1], 20);
t.is(stubs_1.testStubs.run.args[0][2], 1000);
}));
ava_1.default('`Test.assert` should run a step that returns', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(5);
stubs_1.testStubs.get.returns('value');
stubs_1.testStubs.test.returns(true);
yield new CustomTest().assert(accessor, predicate);
t.is(stubs_1.testStubs.run.callCount, 1);
const step = stubs_1.testStubs.run.args[0][0];
yield step();
t.is(stubs_1.testStubs.get.callCount, 1);
t.is(stubs_1.testStubs.get.args[0][0], driver);
t.is(stubs_1.testStubs.test.callCount, 1);
t.is(stubs_1.testStubs.test.args[0][0], 'value');
}));
ava_1.default('`Test.assert` should run a step that throws an error', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(6);
stubs_1.testStubs.get.returns('value');
stubs_1.testStubs.test.returns(false);
yield new CustomTest().assert(accessor, predicate);
t.is(stubs_1.testStubs.run.callCount, 1);
const step = stubs_1.testStubs.run.args[0][0];
yield t.throws(step(), 'Predicate evaluates to false');
t.is(stubs_1.testStubs.get.callCount, 1);
t.is(stubs_1.testStubs.get.args[0][0], driver);
t.is(stubs_1.testStubs.test.callCount, 1);
t.is(stubs_1.testStubs.test.args[0][0], 'value');
}));
ava_1.default('`Test.perform` should call `Test.pass`', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(5);
stubs_1.testStubs.format.onFirstCall().returns('action');
stubs_1.testStubs.run.resolves(2);
yield new CustomTest().perform(action);
t.is(stubs_1.testStubs.format.callCount, 1);
t.is(stubs_1.testStubs.format.args[0][0], action.description);
t.is(stubs_1.testStubs.pass.callCount, 1);
t.is(stubs_1.testStubs.pass.args[0][0], 'action (attempt 2 of 11)');
t.is(stubs_1.testStubs.fail.callCount, 0);
}));
ava_1.default('`Test.perform` should call `Test.fail`', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(6);
stubs_1.testStubs.format.onFirstCall().returns('action');
stubs_1.testStubs.run.rejects(new Error('message'));
yield new CustomTest().perform(action);
t.is(stubs_1.testStubs.format.callCount, 1);
t.is(stubs_1.testStubs.format.args[0][0], action.description);
t.is(stubs_1.testStubs.pass.callCount, 0);
t.is(stubs_1.testStubs.fail.callCount, 1);
t.is(stubs_1.testStubs.fail.args[0][0], 'action');
t.deepEqual(stubs_1.testStubs.fail.args[0][1], new Error('message'));
}));
ava_1.default('`Test.perform` should pass default values to `run`', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(3);
yield new CustomTest().perform(action);
t.is(stubs_1.testStubs.run.callCount, 1);
t.is(stubs_1.testStubs.run.args[0][1], 10);
t.is(stubs_1.testStubs.run.args[0][2], 500);
}));
ava_1.default('`Test.perform` should pass individual values to `run`', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(3);
yield new CustomTest().perform(action, 20, 1000);
t.is(stubs_1.testStubs.run.callCount, 1);
t.is(stubs_1.testStubs.run.args[0][1], 20);
t.is(stubs_1.testStubs.run.args[0][2], 1000);
}));
ava_1.default('`Test.perform` should run a step that returns', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(3);
yield new CustomTest().perform(action);
t.is(stubs_1.testStubs.run.callCount, 1);
const step = stubs_1.testStubs.run.args[0][0];
yield step();
t.is(stubs_1.testStubs.perform.callCount, 1);
t.is(stubs_1.testStubs.perform.args[0][0], driver);
}));
ava_1.default('`Test.perform` should run a step that throws an error', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(4);
stubs_1.testStubs.perform.throws(new Error('message'));
yield new CustomTest().perform(action);
t.is(stubs_1.testStubs.run.callCount, 1);
const step = stubs_1.testStubs.run.args[0][0];
yield t.throws(step(), 'message');
t.is(stubs_1.testStubs.perform.callCount, 1);
t.is(stubs_1.testStubs.perform.args[0][0], driver);
}));
ava_1.default('`Test.verify` should return true', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(3);
stubs_1.testStubs.run.resolves(2);
t.true(yield new CustomTest().verify(accessor, predicate));
t.is(stubs_1.testStubs.pass.callCount, 0);
t.is(stubs_1.testStubs.fail.callCount, 0);
}));
ava_1.default('`Test.verify` should return false', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(3);
stubs_1.testStubs.run.rejects(new Error('message'));
t.false(yield new CustomTest().verify(accessor, predicate));
t.is(stubs_1.testStubs.pass.callCount, 0);
t.is(stubs_1.testStubs.fail.callCount, 0);
}));
ava_1.default('`Test.verify` should pass default values to `run`', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(3);
yield new CustomTest().verify(accessor, predicate);
t.is(stubs_1.testStubs.run.callCount, 1);
t.is(stubs_1.testStubs.run.args[0][1], 10);
t.is(stubs_1.testStubs.run.args[0][2], 500);
}));
ava_1.default('`Test.verify` should pass individual values to `run`', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(3);
yield new CustomTest().verify(accessor, predicate, 20, 1000);
t.is(stubs_1.testStubs.run.callCount, 1);
t.is(stubs_1.testStubs.run.args[0][1], 20);
t.is(stubs_1.testStubs.run.args[0][2], 1000);
}));
ava_1.default('`Test.verify` should run a step that returns', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(5);
stubs_1.testStubs.get.returns('value');
stubs_1.testStubs.test.returns(true);
yield new CustomTest().verify(accessor, predicate);
t.is(stubs_1.testStubs.run.callCount, 1);
const step = stubs_1.testStubs.run.args[0][0];
yield step();
t.is(stubs_1.testStubs.get.callCount, 1);
t.is(stubs_1.testStubs.get.args[0][0], driver);
t.is(stubs_1.testStubs.test.callCount, 1);
t.is(stubs_1.testStubs.test.args[0][0], 'value');
}));
ava_1.default('`Test.verify` should run a step that throws an error', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(6);
stubs_1.testStubs.get.returns('value');
stubs_1.testStubs.test.returns(false);
yield new CustomTest().verify(accessor, predicate);
t.is(stubs_1.testStubs.run.callCount, 1);
const step = stubs_1.testStubs.run.args[0][0];
yield t.throws(step(), 'Predicate evaluates to false');
t.is(stubs_1.testStubs.get.callCount, 1);
t.is(stubs_1.testStubs.get.args[0][0], driver);
t.is(stubs_1.testStubs.test.callCount, 1);
t.is(stubs_1.testStubs.test.args[0][0], 'value');
}));
//# sourceMappingURL=test.test.js.map