UNPKG

konditions

Version:

A simple and customizable JSON-based condition engine in TypeScript (e.g. GreaterThan, StringLike, Every, Some)

61 lines 3.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const engine_default_1 = require("../engine.default"); const Pass_1 = require("./Pass"); const engine = new engine_default_1.DefaultEngine({ NumberEquals: { resolver: Pass_1.Resolver, validator: Pass_1.Validator, }, }); test(`Likelihood of one (or undefined) should ALWAYS pass`, async () => { for (let i = 0; i < 20; i++) { expect((await Pass_1.Resolver({ likelihood: 1 }, engine)).passed).toStrictEqual(true); expect((await Pass_1.Resolver({ likelihood: 1.0 }, engine)).passed).toStrictEqual(true); expect((await Pass_1.Resolver({ likelihood: +1 }, engine)).passed).toStrictEqual(true); } expect((await Pass_1.Resolver({}, engine)).passed).toStrictEqual(true); expect((await Pass_1.Resolver({}, engine)).passed).toStrictEqual(true); expect((await Pass_1.Resolver({}, engine)).passed).toStrictEqual(true); }); test(`Likelihood of zero should NEVER pass`, async () => { for (let i = 0; i < 20; i++) { expect((await Pass_1.Resolver({ likelihood: 0 }, engine)).passed).toStrictEqual(false); expect((await Pass_1.Resolver({ likelihood: -0 }, engine)).passed).toStrictEqual(false); expect((await Pass_1.Resolver({ likelihood: +0 }, engine)).passed).toStrictEqual(false); } }); test(`Should accept any floating number between 0 and 1`, async () => { expect(typeof (await Pass_1.Resolver({ likelihood: 0.0010101 }, engine)).passed).toEqual(`boolean`); expect(typeof (await Pass_1.Resolver({ likelihood: 0.1 }, engine)).passed).toEqual(`boolean`); expect(typeof (await Pass_1.Resolver({ likelihood: 0.332523465342 }, engine)).passed).toEqual(`boolean`); expect(typeof (await Pass_1.Resolver({ likelihood: 0.6 }, engine)).passed).toEqual(`boolean`); expect(typeof (await Pass_1.Resolver({ likelihood: 0.9999999 }, engine)).passed).toEqual(`boolean`); expect(typeof (await Pass_1.Resolver({ likelihood: 0.0 }, engine)).passed).toEqual(`boolean`); expect(typeof (await Pass_1.Resolver({ likelihood: 1.0 }, engine)).passed).toEqual(`boolean`); }); describe(`Should fail validation`, () => { const cases = [ `{ likelihood: 0.5 }`, { likelihood: null }, { likelihood: -1 }, { likelihood: Number.NEGATIVE_INFINITY }, { likelihood: Number.POSITIVE_INFINITY }, { likelihood: 1.00000000000001 }, [123, 23], null, { a: `1` }, { likelihood: `1` }, { a: `1`, b: false, c: `bah` }, [false, ` `], [``, 0], ]; test.each(cases)(`given %p, it should not pass and return a ValidationError`, async (document) => { const resolution = await Pass_1.Validator(document, engine); expect(resolution.passed).toStrictEqual(false); expect(resolution.error).toBeDefined(); expect(resolution.error.type).toEqual(`ValidationError`); expect(resolution.error.reasons.length).toBeGreaterThan(0); }); }); //# sourceMappingURL=Pass.test.js.map