This commit is contained in:
Stephen Franceschelli 2019-07-30 13:41:05 -04:00
parent 596a6da241
commit c1a589c5b6
7078 changed files with 1882834 additions and 319 deletions

23
node_modules/jest-each/LICENSE generated vendored Normal file
View file

@ -0,0 +1,23 @@
MIT License
For Jest software
Copyright (c) 2014-present, Facebook, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

443
node_modules/jest-each/README.md generated vendored Normal file
View file

@ -0,0 +1,443 @@
<div align="center">
<h1>jest-each</h1>
Jest Parameterised Testing
</div>
<hr />
[![version](https://img.shields.io/npm/v/jest-each.svg?style=flat-square)](https://www.npmjs.com/package/jest-each) [![downloads](https://img.shields.io/npm/dm/jest-each.svg?style=flat-square)](http://npm-stat.com/charts.html?package=jest-each&from=2017-03-21) [![MIT License](https://img.shields.io/npm/l/jest-each.svg?style=flat-square)](https://github.com/facebook/jest/blob/master/LICENSE)
A parameterised testing library for [Jest](https://jestjs.io/) inspired by [mocha-each](https://github.com/ryym/mocha-each).
jest-each allows you to provide multiple arguments to your `test`/`describe` which results in the test/suite being run once per row of parameters.
## Features
- `.test` to runs multiple tests with parameterised data
- Also under the alias: `.it`
- `.test.only` to only run the parameterised tests
- Also under the aliases: `.it.only` or `.fit`
- `.test.skip` to skip the parameterised tests
- Also under the aliases: `.it.skip` or `.xit` or `.xtest`
- `.describe` to runs test suites with parameterised data
- `.describe.only` to only run the parameterised suite of tests
- Also under the aliases: `.fdescribe`
- `.describe.skip` to skip the parameterised suite of tests
- Also under the aliases: `.xdescribe`
- Asynchronous tests with `done`
- Unique test titles with [`printf` formatting](https://nodejs.org/api/util.html#util_util_format_format_args):
- `%p` - [pretty-format](https://www.npmjs.com/package/pretty-format).
- `%s`- String.
- `%d`- Number.
- `%i` - Integer.
- `%f` - Floating point value.
- `%j` - JSON.
- `%o` - Object.
- `%#` - Index of the test case.
- `%%` - single percent sign ('%'). This does not consume an argument.
- 🖖 Spock like data tables with [Tagged Template Literals](#tagged-template-literal-of-rows)
---
- [Demo](#demo)
- [Installation](#installation)
- [Importing](#importing)
- APIs
- [Array of Rows](#array-of-rows)
- [Usage](#usage)
- [Tagged Template Literal of rows](#tagged-template-literal-of-rows)
- [Usage](#usage-1)
## Demo
#### Tests without jest-each
![Current jest tests](assets/default-demo.gif)
#### Tests can be re-written with jest-each to:
**`.test`**
![Current jest tests](assets/test-demo.gif)
**`.test` with Tagged Template Literals**
![Current jest tests](assets/tagged-template-literal.gif)
**`.describe`**
![Current jest tests](assets/describe-demo.gif)
## Installation
`npm i --save-dev jest-each`
`yarn add -D jest-each`
## Importing
jest-each is a default export so it can be imported with whatever name you like.
```js
// es6
import each from 'jest-each';
```
```js
// es5
const each = require('jest-each');
```
## Array of rows
### API
#### `each([parameters]).test(name, testFn)`
##### `each`:
- parameters: `Array` of Arrays with the arguments that are passed into the `testFn` for each row
- _Note_ If you pass in a 1D array of primitives, internally it will be mapped to a table i.e. `[1, 2, 3] -> [[1], [2], [3]]`
##### `.test`:
- name: `String` the title of the `test`.
- Generate unique test titles by positionally injecting parameters with [`printf` formatting](https://nodejs.org/api/util.html#util_util_format_format_args):
- `%p` - [pretty-format](https://www.npmjs.com/package/pretty-format).
- `%s`- String.
- `%d`- Number.
- `%i` - Integer.
- `%f` - Floating point value.
- `%j` - JSON.
- `%o` - Object.
- `%#` - Index of the test case.
- `%%` - single percent sign ('%'). This does not consume an argument.
- testFn: `Function` the test logic, this is the function that will receive the parameters of each row as function arguments
#### `each([parameters]).describe(name, suiteFn)`
##### `each`:
- parameters: `Array` of Arrays with the arguments that are passed into the `suiteFn` for each row
- _Note_ If you pass in a 1D array of primitives, internally it will be mapped to a table i.e. `[1, 2, 3] -> [[1], [2], [3]]`
##### `.describe`:
- name: `String` the title of the `describe`
- Generate unique test titles by positionally injecting parameters with [`printf` formatting](https://nodejs.org/api/util.html#util_util_format_format_args):
- `%p` - [pretty-format](https://www.npmjs.com/package/pretty-format).
- `%s`- String.
- `%d`- Number.
- `%i` - Integer.
- `%f` - Floating point value.
- `%j` - JSON.
- `%o` - Object.
- `%#` - Index of the test case.
- `%%` - single percent sign ('%'). This does not consume an argument.
- suiteFn: `Function` the suite of `test`/`it`s to be ran, this is the function that will receive the parameters in each row as function arguments
### Usage
#### `.test(name, fn)`
Alias: `.it(name, fn)`
```js
each([[1, 1, 2], [1, 2, 3], [2, 1, 3]]).test(
'returns the result of adding %d to %d',
(a, b, expected) => {
expect(a + b).toBe(expected);
},
);
```
#### `.test.only(name, fn)`
Aliases: `.it.only(name, fn)` or `.fit(name, fn)`
```js
each([[1, 1, 2], [1, 2, 3], [2, 1, 3]]).test.only(
'returns the result of adding %d to %d',
(a, b, expected) => {
expect(a + b).toBe(expected);
},
);
```
#### `.test.skip(name, fn)`
Aliases: `.it.skip(name, fn)` or `.xit(name, fn)` or `.xtest(name, fn)`
```js
each([[1, 1, 2], [1, 2, 3], [2, 1, 3]]).test.skip(
'returns the result of adding %d to %d',
(a, b, expected) => {
expect(a + b).toBe(expected);
},
);
```
#### Asynchronous `.test(name, fn(done))`
Alias: `.it(name, fn(done))`
```js
each([['hello'], ['mr'], ['spy']]).test(
'gives 007 secret message: %s',
(str, done) => {
const asynchronousSpy = message => {
expect(message).toBe(str);
done();
};
callSomeAsynchronousFunction(asynchronousSpy)(str);
},
);
```
#### `.describe(name, fn)`
```js
each([[1, 1, 2], [1, 2, 3], [2, 1, 3]]).describe(
'.add(%d, %d)',
(a, b, expected) => {
test(`returns ${expected}`, () => {
expect(a + b).toBe(expected);
});
test('does not mutate first arg', () => {
a + b;
expect(a).toBe(a);
});
test('does not mutate second arg', () => {
a + b;
expect(b).toBe(b);
});
},
);
```
#### `.describe.only(name, fn)`
Aliases: `.fdescribe(name, fn)`
```js
each([[1, 1, 2], [1, 2, 3], [2, 1, 3]]).describe.only(
'.add(%d, %d)',
(a, b, expected) => {
test(`returns ${expected}`, () => {
expect(a + b).toBe(expected);
});
},
);
```
#### `.describe.skip(name, fn)`
Aliases: `.xdescribe(name, fn)`
```js
each([[1, 1, 2], [1, 2, 3], [2, 1, 3]]).describe.skip(
'.add(%d, %d)',
(a, b, expected) => {
test(`returns ${expected}`, () => {
expect(a + b).toBe(expected);
});
},
);
```
---
## Tagged Template Literal of rows
### API
#### `each[tagged template].test(name, suiteFn)`
```js
each`
a | b | expected
${1} | ${1} | ${2}
${1} | ${2} | ${3}
${2} | ${1} | ${3}
`.test('returns $expected when adding $a to $b', ({a, b, expected}) => {
expect(a + b).toBe(expected);
});
```
##### `each` takes a tagged template string with:
- First row of variable name column headings seperated with `|`
- One or more subsequent rows of data supplied as template literal expressions using `${value}` syntax.
##### `.test`:
- name: `String` the title of the `test`, use `$variable` in the name string to inject test values into the test title from the tagged template expressions
- To inject nested object values use you can supply a keyPath i.e. `$variable.path.to.value`
- testFn: `Function` the test logic, this is the function that will receive the parameters of each row as function arguments
#### `each[tagged template].describe(name, suiteFn)`
```js
each`
a | b | expected
${1} | ${1} | ${2}
${1} | ${2} | ${3}
${2} | ${1} | ${3}
`.describe('$a + $b', ({a, b, expected}) => {
test(`returns ${expected}`, () => {
expect(a + b).toBe(expected);
});
test('does not mutate first arg', () => {
a + b;
expect(a).toBe(a);
});
test('does not mutate second arg', () => {
a + b;
expect(b).toBe(b);
});
});
```
##### `each` takes a tagged template string with:
- First row of variable name column headings seperated with `|`
- One or more subsequent rows of data supplied as template literal expressions using `${value}` syntax.
##### `.describe`:
- name: `String` the title of the `test`, use `$variable` in the name string to inject test values into the test title from the tagged template expressions
- To inject nested object values use you can supply a keyPath i.e. `$variable.path.to.value`
- suiteFn: `Function` the suite of `test`/`it`s to be ran, this is the function that will receive the parameters in each row as function arguments
### Usage
#### `.test(name, fn)`
Alias: `.it(name, fn)`
```js
each`
a | b | expected
${1} | ${1} | ${2}
${1} | ${2} | ${3}
${2} | ${1} | ${3}
`.test('returns $expected when adding $a to $b', ({a, b, expected}) => {
expect(a + b).toBe(expected);
});
```
#### `.test.only(name, fn)`
Aliases: `.it.only(name, fn)` or `.fit(name, fn)`
```js
each`
a | b | expected
${1} | ${1} | ${2}
${1} | ${2} | ${3}
${2} | ${1} | ${3}
`.test.only('returns $expected when adding $a to $b', ({a, b, expected}) => {
expect(a + b).toBe(expected);
});
```
#### `.test.skip(name, fn)`
Aliases: `.it.skip(name, fn)` or `.xit(name, fn)` or `.xtest(name, fn)`
```js
each`
a | b | expected
${1} | ${1} | ${2}
${1} | ${2} | ${3}
${2} | ${1} | ${3}
`.test.skip('returns $expected when adding $a to $b', ({a, b, expected}) => {
expect(a + b).toBe(expected);
});
```
#### Asynchronous `.test(name, fn(done))`
Alias: `.it(name, fn(done))`
```js
each`
str
${'hello'}
${'mr'}
${'spy'}
`.test('gives 007 secret message: $str', ({str}, done) => {
const asynchronousSpy = message => {
expect(message).toBe(str);
done();
};
callSomeAsynchronousFunction(asynchronousSpy)(str);
});
```
#### `.describe(name, fn)`
```js
each`
a | b | expected
${1} | ${1} | ${2}
${1} | ${2} | ${3}
${2} | ${1} | ${3}
`.describe('$a + $b', ({a, b, expected}) => {
test(`returns ${expected}`, () => {
expect(a + b).toBe(expected);
});
test('does not mutate first arg', () => {
a + b;
expect(a).toBe(a);
});
test('does not mutate second arg', () => {
a + b;
expect(b).toBe(b);
});
});
```
#### `.describe.only(name, fn)`
Aliases: `.fdescribe(name, fn)`
```js
each`
a | b | expected
${1} | ${1} | ${2}
${1} | ${2} | ${3}
${2} | ${1} | ${3}
`.describe.only('$a + $b', ({a, b, expected}) => {
test(`returns ${expected}`, () => {
expect(a + b).toBe(expected);
});
});
```
#### `.describe.skip(name, fn)`
Aliases: `.xdescribe(name, fn)`
```js
each`
a | b | expected
${1} | ${1} | ${2}
${1} | ${2} | ${3}
${2} | ${1} | ${3}
`.describe.skip('$a + $b', ({a, b, expected}) => {
test(`returns ${expected}`, () => {
expect(a + b).toBe(expected);
});
});
```
## License
MIT

17
node_modules/jest-each/build/bind.d.ts generated vendored Normal file
View file

@ -0,0 +1,17 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { Global } from '@jest/types';
export declare type EachTests = Array<{
title: string;
arguments: Array<unknown>;
}>;
declare type TestFn = (done?: Global.DoneFn) => Promise<any> | void | undefined;
declare type GlobalCallback = (testName: string, fn: TestFn, timeout?: number) => void;
declare const _default: (cb: GlobalCallback, supportsDone?: boolean) => (table: Global.EachTable, ...taggedTemplateData: unknown[]) => (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
export default _default;
//# sourceMappingURL=bind.d.ts.map

1
node_modules/jest-each/build/bind.d.ts.map generated vendored Normal file
View file

@ -0,0 +1 @@
{"version":3,"file":"bind.d.ts","sourceRoot":"","sources":["../src/bind.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AAOnC,oBAAY,SAAS,GAAG,KAAK,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;CAC3B,CAAC,CAAC;AAEH,aAAK,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AACxE,aAAK,cAAc,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;;AAE/E,wBA2BI"}

76
node_modules/jest-each/build/bind.js generated vendored Normal file
View file

@ -0,0 +1,76 @@
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.default = void 0;
function _jestUtil() {
const data = require('jest-util');
_jestUtil = function _jestUtil() {
return data;
};
return data;
}
var _array = _interopRequireDefault(require('./table/array'));
var _template = _interopRequireDefault(require('./table/template'));
var _validation = require('./validation');
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {default: obj};
}
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
var _default = (cb, supportsDone = true) => (table, ...taggedTemplateData) =>
function eachBind(title, test, timeout) {
try {
const tests = isArrayTable(taggedTemplateData)
? buildArrayTests(title, table)
: buildTemplateTests(title, table, taggedTemplateData);
return tests.forEach(row =>
cb(
row.title,
applyArguments(supportsDone, row.arguments, test),
timeout
)
);
} catch (e) {
const error = new (_jestUtil()).ErrorWithStack(e.message, eachBind);
return cb(title, () => {
throw error;
});
}
};
exports.default = _default;
const isArrayTable = data => data.length === 0;
const buildArrayTests = (title, table) => {
(0, _validation.validateArrayTable)(table);
return (0, _array.default)(title, table);
};
const buildTemplateTests = (title, table, taggedTemplateData) => {
const headings = getHeadingKeys(table[0]);
(0, _validation.validateTemplateTableHeadings)(headings, taggedTemplateData);
return (0, _template.default)(title, headings, taggedTemplateData);
};
const getHeadingKeys = headings => headings.replace(/\s/g, '').split('|');
const applyArguments = (supportsDone, params, test) =>
supportsDone && params.length < test.length
? done => test(...params, done)
: () => test(...params);

59
node_modules/jest-each/build/index.d.ts generated vendored Normal file
View file

@ -0,0 +1,59 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { Global } from '@jest/types';
import bind from './bind';
declare type Global = NodeJS.Global;
declare const each: {
(table: Global.EachTable, ...data: unknown[]): {
describe: {
(title: string, suite: Global.EachTestFn, timeout?: number | undefined): void;
skip: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
only: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
};
fdescribe: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
fit: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
it: {
(title: string, test: Global.EachTestFn, timeout?: number | undefined): void;
skip: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
only: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
};
test: {
(title: string, test: Global.EachTestFn, timeout?: number | undefined): void;
skip: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
only: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
};
xdescribe: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
xit: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
xtest: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
};
withGlobal(g: NodeJS.Global): (table: Global.EachTable, ...data: unknown[]) => {
describe: {
(title: string, suite: Global.EachTestFn, timeout?: number | undefined): void;
skip: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
only: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
};
fdescribe: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
fit: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
it: {
(title: string, test: Global.EachTestFn, timeout?: number | undefined): void;
skip: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
only: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
};
test: {
(title: string, test: Global.EachTestFn, timeout?: number | undefined): void;
skip: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
only: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
};
xdescribe: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
xit: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
xtest: (title: string, test: Global.EachTestFn, timeout?: number | undefined) => void;
};
};
export { bind };
export default each;
//# sourceMappingURL=index.d.ts.map

1
node_modules/jest-each/build/index.d.ts.map generated vendored Normal file
View file

@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACnC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,aAAK,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAkC5B,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACuB,CAAC;AAOlC,OAAO,EAAC,IAAI,EAAC,CAAC;AAEd,eAAe,IAAI,CAAC"}

81
node_modules/jest-each/build/index.js generated vendored Normal file
View file

@ -0,0 +1,81 @@
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
Object.defineProperty(exports, 'bind', {
enumerable: true,
get: function get() {
return _bind.default;
}
});
exports.default = void 0;
function _types() {
const data = require('@jest/types');
_types = function _types() {
return data;
};
return data;
}
var _bind = _interopRequireDefault(require('./bind'));
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {default: obj};
}
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
const install = (g, table, ...data) => {
const test = (title, test, timeout) =>
(0, _bind.default)(g.test)(table, ...data)(title, test, timeout);
test.skip = (0, _bind.default)(g.test.skip)(table, ...data);
test.only = (0, _bind.default)(g.test.only)(table, ...data);
const it = (title, test, timeout) =>
(0, _bind.default)(g.it)(table, ...data)(title, test, timeout);
it.skip = (0, _bind.default)(g.it.skip)(table, ...data);
it.only = (0, _bind.default)(g.it.only)(table, ...data);
const xit = (0, _bind.default)(g.xit)(table, ...data);
const fit = (0, _bind.default)(g.fit)(table, ...data);
const xtest = (0, _bind.default)(g.xtest)(table, ...data);
const describe = (title, suite, timeout) =>
(0, _bind.default)(g.describe, false)(table, ...data)(
title,
suite,
timeout
);
describe.skip = (0, _bind.default)(g.describe.skip, false)(table, ...data);
describe.only = (0, _bind.default)(g.describe.only, false)(table, ...data);
const fdescribe = (0, _bind.default)(g.fdescribe, false)(table, ...data);
const xdescribe = (0, _bind.default)(g.xdescribe, false)(table, ...data);
return {
describe,
fdescribe,
fit,
it,
test,
xdescribe,
xit,
xtest
};
};
const each = (table, ...data) => install(global, table, ...data);
each.withGlobal = g => (table, ...data) => install(g, table, ...data);
var _default = each;
exports.default = _default;

14
node_modules/jest-each/build/table/array.d.ts generated vendored Normal file
View file

@ -0,0 +1,14 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { Global } from '@jest/types';
declare const _default: (title: string, arrayTable: Global.ArrayTable) => {
title: string;
arguments: unknown[];
}[];
export default _default;
//# sourceMappingURL=array.d.ts.map

1
node_modules/jest-each/build/table/array.d.ts.map generated vendored Normal file
View file

@ -0,0 +1 @@
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/table/array.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;;;;;AASnC,wBAIM"}

126
node_modules/jest-each/build/table/array.js generated vendored Normal file
View file

@ -0,0 +1,126 @@
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.default = void 0;
function _util() {
const data = _interopRequireDefault(require('util'));
_util = function _util() {
return data;
};
return data;
}
function _prettyFormat() {
const data = _interopRequireDefault(require('pretty-format'));
_prettyFormat = function _prettyFormat() {
return data;
};
return data;
}
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {default: obj};
}
function _slicedToArray(arr, i) {
return (
_arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest()
);
}
function _nonIterableRest() {
throw new TypeError('Invalid attempt to destructure non-iterable instance');
}
function _iterableToArrayLimit(arr, i) {
var _arr = [];
var _n = true;
var _d = false;
var _e = undefined;
try {
for (
var _i = arr[Symbol.iterator](), _s;
!(_n = (_s = _i.next()).done);
_n = true
) {
_arr.push(_s.value);
if (i && _arr.length === i) break;
}
} catch (err) {
_d = true;
_e = err;
} finally {
try {
if (!_n && _i['return'] != null) _i['return']();
} finally {
if (_d) throw _e;
}
}
return _arr;
}
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr;
}
const SUPPORTED_PLACEHOLDERS = /%[sdifjoOp%]/g;
const PRETTY_PLACEHOLDER = '%p';
const INDEX_PLACEHOLDER = '%#';
const PLACEHOLDER_PREFIX = '%';
const JEST_EACH_PLACEHOLDER_ESCAPE = '@@__JEST_EACH_PLACEHOLDER_ESCAPE__@@';
var _default = (title, arrayTable) =>
normaliseTable(arrayTable).map((row, index) => ({
arguments: row,
title: formatTitle(title, row, index)
}));
exports.default = _default;
const normaliseTable = table => (isTable(table) ? table : table.map(colToRow));
const isTable = table => table.every(Array.isArray);
const colToRow = col => [col];
const formatTitle = (title, row, rowIndex) =>
row
.reduce((formattedTitle, value) => {
const _getMatchingPlacehold = getMatchingPlaceholders(formattedTitle),
_getMatchingPlacehold2 = _slicedToArray(_getMatchingPlacehold, 1),
placeholder = _getMatchingPlacehold2[0];
const normalisedValue = normalisePlaceholderValue(value);
if (!placeholder) return formattedTitle;
if (placeholder === PRETTY_PLACEHOLDER)
return interpolatePrettyPlaceholder(formattedTitle, normalisedValue);
return _util().default.format(formattedTitle, normalisedValue);
}, interpolateTitleIndex(title, rowIndex))
.replace(new RegExp(JEST_EACH_PLACEHOLDER_ESCAPE, 'g'), PLACEHOLDER_PREFIX);
const normalisePlaceholderValue = value =>
typeof value === 'string' && SUPPORTED_PLACEHOLDERS.test(value)
? value.replace(PLACEHOLDER_PREFIX, JEST_EACH_PLACEHOLDER_ESCAPE)
: value;
const getMatchingPlaceholders = title =>
title.match(SUPPORTED_PLACEHOLDERS) || [];
const interpolateTitleIndex = (title, index) =>
title.replace(INDEX_PLACEHOLDER, index.toString());
const interpolatePrettyPlaceholder = (title, value) =>
title.replace(
PRETTY_PLACEHOLDER,
(0, _prettyFormat().default)(value, {
maxDepth: 1,
min: true
})
);

13
node_modules/jest-each/build/table/template.d.ts generated vendored Normal file
View file

@ -0,0 +1,13 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
declare const _default: (title: string, headings: string[], row: unknown[]) => {
title: string;
arguments: unknown[];
}[];
export default _default;
//# sourceMappingURL=template.d.ts.map

1
node_modules/jest-each/build/table/template.d.ts.map generated vendored Normal file
View file

@ -0,0 +1 @@
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/table/template.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;;;;;AAWH,wBAWE"}

100
node_modules/jest-each/build/table/template.js generated vendored Normal file
View file

@ -0,0 +1,100 @@
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.default = void 0;
function _prettyFormat() {
const data = _interopRequireDefault(require('pretty-format'));
_prettyFormat = function _prettyFormat() {
return data;
};
return data;
}
function _jestGetType() {
const data = require('jest-get-type');
_jestGetType = function _jestGetType() {
return data;
};
return data;
}
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {default: obj};
}
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
var _default = (title, headings, row) => {
const table = convertRowToTable(row, headings);
const templates = convertTableToTemplates(table, headings);
return templates.map(template => ({
arguments: [template],
title: interpolate(title, template)
}));
};
exports.default = _default;
const convertRowToTable = (row, headings) =>
Array.from({
length: row.length / headings.length
}).map((_, index) =>
row.slice(
index * headings.length,
index * headings.length + headings.length
)
);
const convertTableToTemplates = (table, headings) =>
table.map(row =>
row.reduce(
(acc, value, index) =>
Object.assign(acc, {
[headings[index]]: value
}),
{}
)
);
const interpolate = (title, template) =>
Object.keys(template)
.reduce(getMatchingKeyPaths(title), []) // aka flatMap
.reduce(replaceKeyPathWithValue(template), title);
const getMatchingKeyPaths = title => (matches, key) =>
matches.concat(title.match(new RegExp(`\\$${key}[\\.\\w]*`, 'g')) || []);
const replaceKeyPathWithValue = template => (title, match) => {
const keyPath = match.replace('$', '').split('.');
const value = getPath(template, keyPath);
if ((0, _jestGetType().isPrimitive)(value)) {
return title.replace(match, String(value));
}
return title.replace(
match,
(0, _prettyFormat().default)(value, {
maxDepth: 1,
min: true
})
);
};
const getPath = (template, [head, ...tail]) => {
if (!head || !template.hasOwnProperty || !template.hasOwnProperty(head))
return template;
return getPath(template[head], tail);
};

10
node_modules/jest-each/build/validation.d.ts generated vendored Normal file
View file

@ -0,0 +1,10 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
export declare const validateArrayTable: (table: any) => void;
export declare const validateTemplateTableHeadings: (headings: string[], data: unknown[]) => void;
//# sourceMappingURL=validation.d.ts.map

1
node_modules/jest-each/build/validation.d.ts.map generated vendored Normal file
View file

@ -0,0 +1 @@
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,eAAO,MAAM,kBAAkB,sBA4B9B,CAAC;AAOF,eAAO,MAAM,6BAA6B,+CAoBzC,CAAC"}

102
node_modules/jest-each/build/validation.js generated vendored Normal file
View file

@ -0,0 +1,102 @@
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.validateTemplateTableHeadings = exports.validateArrayTable = void 0;
function _chalk() {
const data = _interopRequireDefault(require('chalk'));
_chalk = function _chalk() {
return data;
};
return data;
}
function _prettyFormat() {
const data = _interopRequireDefault(require('pretty-format'));
_prettyFormat = function _prettyFormat() {
return data;
};
return data;
}
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {default: obj};
}
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
const EXPECTED_COLOR = _chalk().default.green;
const RECEIVED_COLOR = _chalk().default.red;
const validateArrayTable = table => {
if (!Array.isArray(table)) {
throw new Error(
'`.each` must be called with an Array or Tagged Template Literal.\n\n' +
`Instead was called with: ${(0, _prettyFormat().default)(table, {
maxDepth: 1,
min: true
})}\n`
);
}
if (isTaggedTemplateLiteral(table)) {
if (isEmptyString(table[0])) {
throw new Error(
'Error: `.each` called with an empty Tagged Template Literal of table data.\n'
);
}
throw new Error(
'Error: `.each` called with a Tagged Template Literal with no data, remember to interpolate with ${expression} syntax.\n'
);
}
if (isEmptyTable(table)) {
throw new Error(
'Error: `.each` called with an empty Array of table data.\n'
);
}
};
exports.validateArrayTable = validateArrayTable;
const isTaggedTemplateLiteral = array => array.raw !== undefined;
const isEmptyTable = table => table.length === 0;
const isEmptyString = str => typeof str === 'string' && str.trim() === '';
const validateTemplateTableHeadings = (headings, data) => {
const missingData = data.length % headings.length;
if (missingData > 0) {
throw new Error(
'Not enough arguments supplied for given headings:\n' +
EXPECTED_COLOR(headings.join(' | ')) +
'\n\n' +
'Received:\n' +
RECEIVED_COLOR((0, _prettyFormat().default)(data)) +
'\n\n' +
`Missing ${RECEIVED_COLOR(missingData.toString())} ${pluralize(
'argument',
missingData
)}`
);
}
};
exports.validateTemplateTableHeadings = validateTemplateTableHeadings;
const pluralize = (word, count) => word + (count === 1 ? '' : 's');

67
node_modules/jest-each/package.json generated vendored Normal file
View file

@ -0,0 +1,67 @@
{
"_from": "jest-each@^24.8.0",
"_id": "jest-each@24.8.0",
"_inBundle": false,
"_integrity": "sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA==",
"_location": "/jest-each",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "jest-each@^24.8.0",
"name": "jest-each",
"escapedName": "jest-each",
"rawSpec": "^24.8.0",
"saveSpec": null,
"fetchSpec": "^24.8.0"
},
"_requiredBy": [
"/jest-circus",
"/jest-jasmine2"
],
"_resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.8.0.tgz",
"_shasum": "a05fd2bf94ddc0b1da66c6d13ec2457f35e52775",
"_spec": "jest-each@^24.8.0",
"_where": "E:\\github\\setup-java\\node_modules\\jest-jasmine2",
"author": {
"name": "Matt Phillips",
"url": "mattphillips"
},
"bugs": {
"url": "https://github.com/facebook/jest/issues"
},
"bundleDependencies": false,
"dependencies": {
"@jest/types": "^24.8.0",
"chalk": "^2.0.1",
"jest-get-type": "^24.8.0",
"jest-util": "^24.8.0",
"pretty-format": "^24.8.0"
},
"deprecated": false,
"description": "Parameterised tests for Jest",
"engines": {
"node": ">= 6"
},
"gitHead": "845728f24b3ef41e450595c384e9b5c9fdf248a4",
"homepage": "https://github.com/facebook/jest#readme",
"keywords": [
"jest",
"parameterised",
"test",
"each"
],
"license": "MIT",
"main": "build/index.js",
"name": "jest-each",
"publishConfig": {
"access": "public"
},
"repository": {
"type": "git",
"url": "git+https://github.com/facebook/jest.git",
"directory": "packages/jest-each"
},
"types": "build/index.d.ts",
"version": "24.8.0"
}

13
node_modules/jest-each/tsconfig.json generated vendored Normal file
View file

@ -0,0 +1,13 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"rootDir": "src",
"outDir": "build"
},
"references": [
{"path": "../jest-get-type"},
{"path": "../jest-types"},
{"path": "../jest-util"},
{"path": "../pretty-format"}
]
}

2917
node_modules/jest-each/tsconfig.tsbuildinfo generated vendored Normal file

File diff suppressed because it is too large Load diff