1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, '__esModule', {
|
4 | value: true
|
5 | });
|
6 | exports.default = bind;
|
7 | function _jestUtil() {
|
8 | const data = require('jest-util');
|
9 | _jestUtil = function () {
|
10 | return data;
|
11 | };
|
12 | return data;
|
13 | }
|
14 | var _array = _interopRequireDefault(require('./table/array'));
|
15 | var _template = _interopRequireDefault(require('./table/template'));
|
16 | var _validation = require('./validation');
|
17 | function _interopRequireDefault(obj) {
|
18 | return obj && obj.__esModule ? obj : {default: obj};
|
19 | }
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 | function bind(cb, supportsDone = true, needsEachError = false) {
|
31 | const bindWrap = (table, ...taggedTemplateData) => {
|
32 | const error = new (_jestUtil().ErrorWithStack)(undefined, bindWrap);
|
33 | return function eachBind(title, test, timeout) {
|
34 | title = (0, _jestUtil().convertDescriptorToString)(title);
|
35 | try {
|
36 | const tests = isArrayTable(taggedTemplateData)
|
37 | ? buildArrayTests(title, table)
|
38 | : buildTemplateTests(title, table, taggedTemplateData);
|
39 | return tests.forEach(row =>
|
40 | needsEachError
|
41 | ? cb(
|
42 | row.title,
|
43 | applyArguments(supportsDone, row.arguments, test),
|
44 | timeout,
|
45 | error
|
46 | )
|
47 | : cb(
|
48 | row.title,
|
49 | applyArguments(supportsDone, row.arguments, test),
|
50 | timeout
|
51 | )
|
52 | );
|
53 | } catch (e) {
|
54 | const err = new Error(e.message);
|
55 | err.stack = error.stack?.replace(/^Error: /s, `Error: ${e.message}`);
|
56 | return cb(title, () => {
|
57 | throw err;
|
58 | });
|
59 | }
|
60 | };
|
61 | };
|
62 | return bindWrap;
|
63 | }
|
64 | const isArrayTable = data => data.length === 0;
|
65 | const buildArrayTests = (title, table) => {
|
66 | (0, _validation.validateArrayTable)(table);
|
67 | return (0, _array.default)(title, table);
|
68 | };
|
69 | const buildTemplateTests = (title, table, taggedTemplateData) => {
|
70 | const headings = getHeadingKeys(table[0]);
|
71 | (0, _validation.validateTemplateTableArguments)(headings, taggedTemplateData);
|
72 | return (0, _template.default)(title, headings, taggedTemplateData);
|
73 | };
|
74 | const getHeadingKeys = headings =>
|
75 | (0, _validation.extractValidTemplateHeadings)(headings)
|
76 | .replace(/\s/g, '')
|
77 | .split('|');
|
78 | const applyArguments = (supportsDone, params, test) =>
|
79 | supportsDone && params.length < test.length
|
80 | ? done => test(...params, done)
|
81 | : () => test(...params);
|