UNPKG

jest-test-each

Version:

run parametrised tests easily [typesafe] without text tables or arrays of arrays.

374 lines (373 loc) 12.5 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const utils_1 = require("../utils/utils"); const runner_env_1 = require("../utils/runner-env"); const rootName = 'Test pack - root'; const test = () => runner_env_1.createTest(rootName); const config = { groupBySuites: true, numericCases: false }; describe('naming', () => { beforeEach(() => { runner_env_1.cleanup(); }); const data = [ { desc: 'simple string', case: { simple: '1' }, expName: 'simple: 1' }, { desc: 'simple num', case: { simple: 1 }, expName: 'simple: 1' }, { desc: '2 props', case: { simple: 1, simple2: 'f' }, expName: 'simple: 1, simple2: f' }, { desc: 'simple array', case: { simple: [1, 2, 3] }, expName: 'simple: [1, 2, 3]' }, { desc: 'complex array', case: { simple: [{ el: 1 }, { el: 2 }, { el: 3 }] }, expName: 'simple: [{ el: 1 }, { el: 2 }, { el: 3 }]', }, { desc: 'more complex array', case: { simple: [{ el: { inside: 5 } }, { el: { inside: 11 } }, { el: 3 }] }, expName: 'simple: [{ el: { inside: 5 } }, { el: { inside: 11 } }, { el: 3 }]', }, { desc: 'function inside', case: { simple: [{ el: { inside: 5 } }, { el: { inside: () => { } } }, { el: 3 }] }, expFail: true, error: `From guard: Test case data has functions in it. Please add 'desc' to case.`, }, { desc: 'function inside with desc', case: { desc: 'test desc', simple: [{ el: { inside: 5 } }, { el: { inside: () => { } } }, { el: 3 }], }, expName: 'test desc', }, { desc: 'func simple', case: { func: () => { } }, expFail: true, error: `From guard: Test case data has functions in it. Please add 'desc' to case.`, }, { desc: 'long name - default err', case: { simple: [ { el: { inside: 5 } }, { el: { inside: 5 } }, { el: { inside: 5 } }, { el: { inside: 5 } }, { el: { inside: 11 } }, { el: 3 }, { el: { inside: 5 } }, { el: { inside: 5 } }, { el: { inside: 5 } }, { el: { inside: 5 } }, { el: { inside: 11 } }, { el: 3 }, { el: { inside: 5 } }, { el: { inside: 5 } }, { el: { inside: 5 } }, { el: { inside: 5 } }, { el: { inside: 11 } }, { el: 3 }, ], }, expFail: true, error: `From guard: Automatic test name is too long (>200symbols). Please add 'desc' to case.`, }, { desc: 'long name with desc', case: { desc: 'long name', simple: [ { el: { inside: 5 } }, { el: { inside: 5 } }, { el: { inside: 5 } }, { el: { inside: 5 } }, { el: { inside: 11 } }, { el: 3 }, { el: { inside: 5 } }, { el: { inside: 5 } }, { el: { inside: 5 } }, { el: { inside: 5 } }, { el: { inside: 11 } }, { el: 3 }, { el: { inside: 5 } }, { el: { inside: 5 } }, { el: { inside: 5 } }, { el: { inside: 5 } }, { el: { inside: 11 } }, { el: 3 }, ], }, expName: 'long name', }, { desc: 'string containing not only letters', case: { simple: 'some description!!' }, expName: "simple: 'some description!!'", }, { desc: 'string containing only letters/numbers', case: { simple: 'some3424' }, expName: 'simple: some3424', }, { desc: 'string containing quotes', case: { simple: `some "quotes": to be defined` }, expName: "simple: 'some \\'quotes\\': to be defined'", }, { desc: 'undefined obj', case: { simple: undefined }, expName: 'simple: undefined', }, { desc: 'undefined obj with null', case: { simple: undefined, someString: 'null should be ...' }, expName: `simple: null, someString: 'null should be ...'`, }, { desc: 'undefined complex obj', case: { simple: { some: undefined, some2: 'dsdsd' } }, expName: 'simple: { some: undefined, some2: dsdsd }', }, { desc: 'array with undefined complex obj', case: { googles: { some34: [{ a: undefined }, { b: 'ok' }], some2: 'dsdsd', some4: 'wor1 word3 sas', some3: 'word', }, arr: [1, 2, 3], }, expName: `googles: { some34: [{ a: undefined }, { b: ok }], some2: dsdsd, some4: 'wor1 word3 sas', some3: word }, arr: [1, 2, 3]`, }, ]; data.forEach(p => { it(p.desc, () => __awaiter(void 0, void 0, void 0, function* () { test() .config(config) .each([p.case]) .run(t => utils_1.success()); yield runner_env_1.waitFinished(); utils_1.assertAll(!p.expFail ? () => expect(runner_env_1.result.tests[0]).toBe(p.expName) : () => expect(runner_env_1.result.failures[0].message).toBe(p.error)); })); }); it('functions with desc in next each', () => __awaiter(void 0, void 0, void 0, function* () { test() .each([ { a: () => { return 1; }, }, ]) .each([{ desc: 'description' }]) .run(t => utils_1.success()); yield runner_env_1.waitFinished(); utils_1.assertAll(() => expect(runner_env_1.result).toMatchInlineSnapshot(` Object { "failures": Array [], "passes": Array [ Object { "name": "description", }, ], "skips": Array [], "suites": Array [ "Test pack - root", ], "tests": Array [ "description", ], "totalEntities": 2, } `)); })); it('functions with flatDesc in next each', () => __awaiter(void 0, void 0, void 0, function* () { test() .each([ { a: () => { return 1; }, }, ]) .each([{ flatDesc: 'sdsd' }]) .run(t => utils_1.success()); yield runner_env_1.waitFinished(); utils_1.assertAll(() => expect(runner_env_1.result).toMatchInlineSnapshot(` Object { "failures": Array [], "passes": Array [ Object { "name": "sdsd", }, ], "skips": Array [], "suites": Array [ "Test pack - root", ], "tests": Array [ "sdsd", ], "totalEntities": 2, } `)); })); it('case length configuration', () => __awaiter(void 0, void 0, void 0, function* () { test() .config({ testSuiteName: { maxLength: 10, failOnReached: true } }) .each([{ a: 'supersupersuper' }]) .run(t => utils_1.success()); yield runner_env_1.waitFinished(); utils_1.assertAll(() => expect(runner_env_1.result.failures).toMatchInlineSnapshot(` Array [ Object { "message": "From guard: Automatic test name is too long (>10symbols). Please add 'desc' to case.", "name": "a: supersu...", }, ] `)); })); it('case length configuration - suite', () => __awaiter(void 0, void 0, void 0, function* () { test() .config({ testSuiteName: { maxLength: 50, failOnReached: true } }) .each([ { a: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 12, 13, 14, 15, 16, 11, 17].map(p => ({ aa: p, })), }, ]) .each(t => t.a) .run(t => utils_1.success()); yield runner_env_1.waitFinished(); utils_1.assertAll(() => expect(runner_env_1.result).toMatchInlineSnapshot(` Object { "failures": Array [], "passes": Array [ Object { "name": "aa: 1", }, Object { "name": "aa: 2", }, Object { "name": "aa: 3", }, Object { "name": "aa: 4", }, Object { "name": "aa: 5", }, Object { "name": "aa: 6", }, Object { "name": "aa: 7", }, Object { "name": "aa: 8", }, Object { "name": "aa: 9", }, Object { "name": "aa: 10", }, Object { "name": "aa: 11", }, Object { "name": "aa: 12", }, Object { "name": "aa: 12", }, Object { "name": "aa: 13", }, Object { "name": "aa: 14", }, Object { "name": "aa: 15", }, Object { "name": "aa: 16", }, Object { "name": "aa: 11", }, Object { "name": "aa: 17", }, ], "skips": Array [], "suites": Array [ "Test pack - root", "a: [{ aa: 1 }, { aa: 2 }, { aa: 3 }, { aa: 4 }, { ...", ], "tests": Array [ "aa: 1", "aa: 2", "aa: 3", "aa: 4", "aa: 5", "aa: 6", "aa: 7", "aa: 8", "aa: 9", "aa: 10", "aa: 11", "aa: 12", "aa: 12", "aa: 13", "aa: 14", "aa: 15", "aa: 16", "aa: 11", "aa: 17", ], "totalEntities": 21, } `)); })); it('case length configuration - not fail', () => __awaiter(void 0, void 0, void 0, function* () { test() .config({ testSuiteName: { maxLength: 10, failOnReached: false } }) .each([{ a: 'supersupersuper' }]) .run(t => utils_1.success()); yield runner_env_1.waitFinished(); utils_1.assertAll(() => expect(runner_env_1.result).toMatchInlineSnapshot(` Object { "failures": Array [], "passes": Array [ Object { "name": "a: supersu...", }, ], "skips": Array [], "suites": Array [ "Test pack - root", ], "tests": Array [ "a: supersu...", ], "totalEntities": 2, } `)); })); });