/** * assertionHandler.mjs * * Pair native node assertions with a description for * the benefit of the TestRegister. * * @author d98762625 [d98762625@gmail.com] * @copyright Crown Copyright 2019 * @license Apache-2.0 */ /* eslint no-console: 0 */ /** * Print useful stack on error */ const wrapRun = (run) => async () => { try { await run(); } catch (e) { console.dir(e); throw e; } }; /** * it - wrapper for assertions to provide a helpful description * to the TestRegister * @namespace ApiTests * @param {String} description - The description of the test * @param {Function} assertion - The test * * @example * // One assertion * it("should run one assertion", () => assert.equal(1,1)) * * @example * // multiple assertions * it("should handle multiple assertions", () => { * assert.equal(1,1) * assert.notEqual(3,4) * }) * * @example * // async assertions * it("should handle async", async () => { * let r = await asyncFunc() * assert(r) * }) */ export function it(name, run) { return { name: `Node API: ${name}`, run: wrapRun(run), }; } export default it;