UNPKG

cybernaut

Version:

Reliable, zero configuration end-to-end testing in BDD-style.

217 lines 10.1 kB
// tslint:disable no-any "use strict"; 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