relay-test-utils-internal 14.1.0 → 15.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/Matchers.js.flow +1 -0
- package/consoleError.js.flow +1 -1
- package/consoleErrorsAndWarnings.js.flow +1 -1
- package/consoleWarning.js.flow +1 -1
- package/describeWithFeatureFlags.js.flow +2 -1
- package/generateTestsFromFixtures.js.flow +1 -0
- package/getOutputForFixture.js.flow +1 -0
- package/index.js +1 -1
- package/index.js.flow +1 -0
- package/lib/Matchers.js +7 -17
- package/lib/consoleError.js +8 -12
- package/lib/consoleErrorsAndWarnings.js +3 -21
- package/lib/consoleWarning.js +8 -12
- package/lib/describeWithFeatureFlags.js +5 -8
- package/lib/generateTestsFromFixtures.js +4 -11
- package/lib/getOutputForFixture.js +2 -4
- package/lib/index.js +21 -29
- package/lib/printAST.js +10 -26
- package/lib/simpleClone.js +5 -6
- package/lib/testschema.graphql +1 -1
- package/lib/trackRetentionForEnvironment.js +6 -10
- package/lib/warnings.js +8 -13
- package/package.json +2 -2
- package/printAST.js.flow +1 -0
- package/relay-test-utils-internal.js +1 -1
- package/relay-test-utils-internal.min.js +1 -1
- package/simpleClone.js.flow +1 -0
- package/trackRetentionForEnvironment.js.flow +4 -2
- package/warnings.js.flow +1 -1
package/Matchers.js.flow
CHANGED
package/consoleError.js.flow
CHANGED
package/consoleWarning.js.flow
CHANGED
@@ -6,6 +6,7 @@
|
|
6
6
|
*
|
7
7
|
* @flow
|
8
8
|
* @format
|
9
|
+
* @oncall relay
|
9
10
|
*/
|
10
11
|
|
11
12
|
/**
|
@@ -46,7 +47,7 @@ declare var describe: {
|
|
46
47
|
};
|
47
48
|
|
48
49
|
function describeWithFeatureFlags(
|
49
|
-
flagSets: Array
|
50
|
+
flagSets: Array<Partial<FeatureFlags>>,
|
50
51
|
description: string,
|
51
52
|
body: () => void,
|
52
53
|
): void {
|
package/index.js
CHANGED
package/index.js.flow
CHANGED
package/lib/Matchers.js
CHANGED
@@ -5,14 +5,15 @@
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
6
6
|
*
|
7
7
|
* @format
|
8
|
+
* @oncall relay
|
8
9
|
*/
|
10
|
+
|
9
11
|
'use strict';
|
10
|
-
/* global expect */
|
11
12
|
|
13
|
+
/* global expect */
|
12
14
|
function toBeDeeplyFrozen(actual) {
|
13
15
|
function check(value) {
|
14
16
|
expect(Object.isFrozen(value)).toBe(true);
|
15
|
-
|
16
17
|
if (Array.isArray(value)) {
|
17
18
|
value.forEach(function (item) {
|
18
19
|
return check(item);
|
@@ -23,28 +24,22 @@ function toBeDeeplyFrozen(actual) {
|
|
23
24
|
}
|
24
25
|
}
|
25
26
|
}
|
26
|
-
|
27
27
|
check(actual);
|
28
28
|
return {
|
29
29
|
pass: true
|
30
30
|
};
|
31
31
|
}
|
32
|
-
|
33
32
|
function toWarn(actual, expected) {
|
34
33
|
var negative = this.isNot;
|
35
|
-
|
36
34
|
function formatItem(item) {
|
37
35
|
return item instanceof RegExp ? item.toString() : JSON.stringify(item);
|
38
36
|
}
|
39
|
-
|
40
37
|
function formatArray(array) {
|
41
38
|
return '[' + array.map(formatItem).join(', ') + ']';
|
42
39
|
}
|
43
|
-
|
44
40
|
function formatExpected(args) {
|
45
41
|
return formatArray([false].concat(args));
|
46
42
|
}
|
47
|
-
|
48
43
|
function formatActual(calls) {
|
49
44
|
if (calls.length) {
|
50
45
|
return calls.map(function (args) {
|
@@ -54,17 +49,15 @@ function toWarn(actual, expected) {
|
|
54
49
|
return '[]';
|
55
50
|
}
|
56
51
|
}
|
57
|
-
|
58
52
|
var warning = require("fbjs/lib/warning");
|
59
|
-
|
60
53
|
if (!warning.mock) {
|
61
54
|
throw new Error("toWarn(): Requires `jest.mock('warning')`.");
|
62
55
|
}
|
63
|
-
|
64
56
|
var callsCount = warning.mock.calls.length;
|
65
57
|
actual();
|
66
|
-
var calls = warning.mock.calls.slice(callsCount);
|
58
|
+
var calls = warning.mock.calls.slice(callsCount);
|
67
59
|
|
60
|
+
// Simple case: no explicit expectation.
|
68
61
|
if (!expected) {
|
69
62
|
var warned = calls.filter(function (args) {
|
70
63
|
return !args[0];
|
@@ -75,19 +68,17 @@ function toWarn(actual, expected) {
|
|
75
68
|
return "Expected ".concat(negative ? 'not ' : '', "to warn but ") + '`warning` received the following calls: ' + "".concat(formatActual(calls), ".");
|
76
69
|
}
|
77
70
|
};
|
78
|
-
}
|
79
|
-
|
71
|
+
}
|
80
72
|
|
73
|
+
// Custom case: explicit expectation.
|
81
74
|
if (!Array.isArray(expected)) {
|
82
75
|
expected = [expected];
|
83
76
|
}
|
84
|
-
|
85
77
|
var call = calls.find(function (args) {
|
86
78
|
return args.length === expected.length + 1 && args.every(function (arg, index) {
|
87
79
|
if (!index) {
|
88
80
|
return !arg;
|
89
81
|
}
|
90
|
-
|
91
82
|
var other = expected[index - 1];
|
92
83
|
return other instanceof RegExp ? other.test(arg) : arg === other;
|
93
84
|
});
|
@@ -99,7 +90,6 @@ function toWarn(actual, expected) {
|
|
99
90
|
}
|
100
91
|
};
|
101
92
|
}
|
102
|
-
|
103
93
|
module.exports = {
|
104
94
|
toBeDeeplyFrozen: toBeDeeplyFrozen,
|
105
95
|
toWarn: toWarn
|
package/lib/consoleError.js
CHANGED
@@ -4,19 +4,20 @@
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
6
6
|
*
|
7
|
-
* @emails oncall+relay
|
8
7
|
*
|
9
8
|
* @format
|
9
|
+
* @oncall relay
|
10
10
|
*/
|
11
|
+
|
11
12
|
'use strict';
|
12
|
-
/* global jest */
|
13
13
|
|
14
|
+
/* global jest */
|
14
15
|
var _require = require('./consoleErrorsAndWarnings'),
|
15
|
-
|
16
|
-
|
16
|
+
createConsoleInterceptionSystem = _require.createConsoleInterceptionSystem;
|
17
17
|
var consoleErrorsSystem = createConsoleInterceptionSystem('error', 'expectConsoleError', function (impl) {
|
18
18
|
jest.spyOn(console, 'error').mockImplementation(impl);
|
19
19
|
});
|
20
|
+
|
20
21
|
/**
|
21
22
|
* Mocks console.error so that errors printed to the console are instead thrown.
|
22
23
|
* Any expected errors need to be explicitly expected with `expectConsoleErrorWillFire(message)`.
|
@@ -24,37 +25,32 @@ var consoleErrorsSystem = createConsoleInterceptionSystem('error', 'expectConsol
|
|
24
25
|
* NOTE: This should be called on top of a test file. The test should NOT
|
25
26
|
* use `jest.resetModules()` or manually mock `console`.
|
26
27
|
*/
|
27
|
-
|
28
28
|
function disallowConsoleErrors() {
|
29
29
|
consoleErrorsSystem.disallowMessages();
|
30
30
|
}
|
31
|
+
|
31
32
|
/**
|
32
33
|
* Expect an error with the given message. If the message isn't fired in the
|
33
34
|
* current test, the test will fail.
|
34
35
|
*/
|
35
|
-
|
36
|
-
|
37
36
|
function expectConsoleErrorWillFire(message, options) {
|
38
37
|
consoleErrorsSystem.expectMessageWillFire(message, options);
|
39
38
|
}
|
39
|
+
|
40
40
|
/**
|
41
41
|
* Expect the callback `fn` to print an error with the message, and otherwise fail.
|
42
42
|
*/
|
43
|
-
|
44
|
-
|
45
43
|
function expectConsoleError(message, fn) {
|
46
44
|
return consoleErrorsSystem.expectMessage(message, fn);
|
47
45
|
}
|
46
|
+
|
48
47
|
/**
|
49
48
|
* Expect the callback `fn` to trigger all console errors (in sequence),
|
50
49
|
* and otherwise fail.
|
51
50
|
*/
|
52
|
-
|
53
|
-
|
54
51
|
function expectConsoleErrorsMany(messages, fn) {
|
55
52
|
return consoleErrorsSystem.expectMessageMany(messages, fn);
|
56
53
|
}
|
57
|
-
|
58
54
|
module.exports = {
|
59
55
|
disallowConsoleErrors: disallowConsoleErrors,
|
60
56
|
expectConsoleErrorWillFire: expectConsoleErrorWillFire,
|
@@ -4,19 +4,17 @@
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
6
6
|
*
|
7
|
-
* @emails oncall+relay
|
8
7
|
*
|
9
8
|
* @format
|
9
|
+
* @oncall relay
|
10
10
|
*/
|
11
|
+
|
11
12
|
'use strict';
|
12
|
-
/* global afterEach */
|
13
13
|
|
14
|
+
/* global afterEach */
|
14
15
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
15
|
-
|
16
16
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
17
|
-
|
18
17
|
var originalConsoleError = console.error;
|
19
|
-
|
20
18
|
function createConsoleInterceptionSystem(typename, expectFunctionName, setUpMock) {
|
21
19
|
var installed = false;
|
22
20
|
var expectedMessages = [];
|
@@ -25,7 +23,6 @@ function createConsoleInterceptionSystem(typename, expectFunctionName, setUpMock
|
|
25
23
|
var typenameCap = typename.charAt(0).toUpperCase() + typename.slice(1);
|
26
24
|
var typenameCapPlural = typenameCap + 's';
|
27
25
|
var installerName = "disallow".concat(typenameCap, "s");
|
28
|
-
|
29
26
|
function handleMessage(message) {
|
30
27
|
var index = expectedMessages.findIndex(function (expected) {
|
31
28
|
return message.startsWith(expected);
|
@@ -33,7 +30,6 @@ function createConsoleInterceptionSystem(typename, expectFunctionName, setUpMock
|
|
33
30
|
var optionalIndex = optionalMessages.findIndex(function (expected) {
|
34
31
|
return message.startsWith(expected);
|
35
32
|
});
|
36
|
-
|
37
33
|
if (contextualExpectedMessage.length > 0 && message.startsWith(contextualExpectedMessage[0])) {
|
38
34
|
contextualExpectedMessage.shift();
|
39
35
|
} else if (index >= 0) {
|
@@ -46,18 +42,15 @@ function createConsoleInterceptionSystem(typename, expectFunctionName, setUpMock
|
|
46
42
|
throw new Error("".concat(typenameCap, ": ") + message);
|
47
43
|
}
|
48
44
|
}
|
49
|
-
|
50
45
|
function disallowMessages() {
|
51
46
|
if (installed) {
|
52
47
|
throw new Error("".concat(installerName, " should be called only once."));
|
53
48
|
}
|
54
|
-
|
55
49
|
installed = true;
|
56
50
|
setUpMock(handleMessage);
|
57
51
|
afterEach(function () {
|
58
52
|
optionalMessages.length = 0;
|
59
53
|
contextualExpectedMessage.length = 0;
|
60
|
-
|
61
54
|
if (expectedMessages.length > 0) {
|
62
55
|
var error = new Error("Some ".concat(expectedMessages.length, " expected ").concat(typename, "s where not triggered:\n\n") + Array.from(expectedMessages, function (message) {
|
63
56
|
return " * ".concat(message);
|
@@ -67,42 +60,32 @@ function createConsoleInterceptionSystem(typename, expectFunctionName, setUpMock
|
|
67
60
|
}
|
68
61
|
});
|
69
62
|
}
|
70
|
-
|
71
63
|
function expectMessageWillFire(message, options) {
|
72
64
|
if (!installed) {
|
73
65
|
throw new Error("".concat(installerName, " needs to be called before expect").concat(typenameCapPlural, "WillFire"));
|
74
66
|
}
|
75
|
-
|
76
67
|
var optional = (options === null || options === void 0 ? void 0 : options.optional) === true; // avoid "sketchy null check"
|
77
|
-
|
78
68
|
for (var i = 0; i < ((_options$count = options === null || options === void 0 ? void 0 : options.count) !== null && _options$count !== void 0 ? _options$count : 1); i++) {
|
79
69
|
var _options$count;
|
80
|
-
|
81
70
|
(optional ? optionalMessages : expectedMessages).push(message);
|
82
71
|
}
|
83
72
|
}
|
84
|
-
|
85
73
|
function expectMessage(message, fn) {
|
86
74
|
return expectMessageMany([message], fn);
|
87
75
|
}
|
88
|
-
|
89
76
|
function expectMessageMany(messages, fn) {
|
90
77
|
if (contextualExpectedMessage.length > 0) {
|
91
78
|
throw new Error("Cannot nest ".concat(expectFunctionName, "() calls."));
|
92
79
|
}
|
93
|
-
|
94
80
|
contextualExpectedMessage.push.apply(contextualExpectedMessage, (0, _toConsumableArray2["default"])(messages));
|
95
81
|
var result = fn();
|
96
|
-
|
97
82
|
if (contextualExpectedMessage.length > 0) {
|
98
83
|
var notFired = contextualExpectedMessage.toString();
|
99
84
|
contextualExpectedMessage.length = 0;
|
100
85
|
throw new Error("Expected ".concat(typename, " in callback: ").concat(notFired));
|
101
86
|
}
|
102
|
-
|
103
87
|
return result;
|
104
88
|
}
|
105
|
-
|
106
89
|
return {
|
107
90
|
disallowMessages: disallowMessages,
|
108
91
|
expectMessageWillFire: expectMessageWillFire,
|
@@ -110,7 +93,6 @@ function createConsoleInterceptionSystem(typename, expectFunctionName, setUpMock
|
|
110
93
|
expectMessageMany: expectMessageMany
|
111
94
|
};
|
112
95
|
}
|
113
|
-
|
114
96
|
module.exports = {
|
115
97
|
createConsoleInterceptionSystem: createConsoleInterceptionSystem
|
116
98
|
};
|
package/lib/consoleWarning.js
CHANGED
@@ -4,19 +4,20 @@
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
6
6
|
*
|
7
|
-
* @emails oncall+relay
|
8
7
|
*
|
9
8
|
* @format
|
9
|
+
* @oncall relay
|
10
10
|
*/
|
11
|
+
|
11
12
|
'use strict';
|
12
|
-
/* global jest */
|
13
13
|
|
14
|
+
/* global jest */
|
14
15
|
var _require = require('./consoleErrorsAndWarnings'),
|
15
|
-
|
16
|
-
|
16
|
+
createConsoleInterceptionSystem = _require.createConsoleInterceptionSystem;
|
17
17
|
var consoleWarningsSystem = createConsoleInterceptionSystem('warning', 'expectConsoleWarning', function (impl) {
|
18
18
|
jest.spyOn(console, 'warn').mockImplementation(impl);
|
19
19
|
});
|
20
|
+
|
20
21
|
/**
|
21
22
|
* Mocks console.warn so that warnings printed to the console are instead thrown.
|
22
23
|
* Any expected warnings need to be explicitly expected with `expectConsoleWarningWillFire(message)`.
|
@@ -24,37 +25,32 @@ var consoleWarningsSystem = createConsoleInterceptionSystem('warning', 'expectCo
|
|
24
25
|
* NOTE: This should be called on top of a test file. The test should NOT
|
25
26
|
* use `jest.resetModules()` or manually mock `console`.
|
26
27
|
*/
|
27
|
-
|
28
28
|
function disallowConsoleWarnings() {
|
29
29
|
consoleWarningsSystem.disallowMessages();
|
30
30
|
}
|
31
|
+
|
31
32
|
/**
|
32
33
|
* Expect a warning with the given message. If the message isn't fired in the
|
33
34
|
* current test, the test will fail.
|
34
35
|
*/
|
35
|
-
|
36
|
-
|
37
36
|
function expectConsoleWarningWillFire(message, options) {
|
38
37
|
consoleWarningsSystem.expectMessageWillFire(message, options);
|
39
38
|
}
|
39
|
+
|
40
40
|
/**
|
41
41
|
* Expect the callback `fn` to print a warning with the message, and otherwise fail.
|
42
42
|
*/
|
43
|
-
|
44
|
-
|
45
43
|
function expectConsoleWarning(message, fn) {
|
46
44
|
return consoleWarningsSystem.expectMessage(message, fn);
|
47
45
|
}
|
46
|
+
|
48
47
|
/**
|
49
48
|
* Expect the callback `fn` to trigger all console warnings (in sequence),
|
50
49
|
* and otherwise fail.
|
51
50
|
*/
|
52
|
-
|
53
|
-
|
54
51
|
function expectConsoleWarningsMany(messages, fn) {
|
55
52
|
return consoleWarningsSystem.expectMessageMany(messages, fn);
|
56
53
|
}
|
57
|
-
|
58
54
|
module.exports = {
|
59
55
|
disallowConsoleWarnings: disallowConsoleWarnings,
|
60
56
|
expectConsoleWarningWillFire: expectConsoleWarningWillFire,
|
@@ -6,40 +6,37 @@
|
|
6
6
|
*
|
7
7
|
*
|
8
8
|
* @format
|
9
|
+
* @oncall relay
|
9
10
|
*/
|
10
11
|
|
11
12
|
/**
|
12
13
|
* Run a test suite under multiple sets of feature flags.
|
13
14
|
* Beware that calling jest.resetModules() within the suite may break this.
|
14
15
|
*/
|
16
|
+
|
15
17
|
'use strict';
|
16
18
|
|
17
19
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
18
|
-
|
19
20
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
20
|
-
|
21
21
|
// This function is for running within a test environment, so we use globals
|
22
22
|
// available within tests -- taken from:
|
23
23
|
// i code/www/[5ee5e1d71a05e9f58ded3c1c22b810666383164f]/flow/shared/libdefs/jest.js
|
24
|
+
|
24
25
|
function describeWithFeatureFlags(flagSets, description, body) {
|
25
26
|
describe.each(flagSets)("".concat(description, " - Feature flags: %o"), function (flags) {
|
26
27
|
var originalFlags;
|
27
28
|
beforeEach(function () {
|
28
29
|
var _require = require('relay-runtime'),
|
29
|
-
|
30
|
-
|
30
|
+
RelayFeatureFlags = _require.RelayFeatureFlags;
|
31
31
|
originalFlags = (0, _objectSpread2["default"])({}, RelayFeatureFlags);
|
32
32
|
Object.assign(RelayFeatureFlags, flags);
|
33
33
|
});
|
34
34
|
afterEach(function () {
|
35
35
|
var _require2 = require('relay-runtime'),
|
36
|
-
|
37
|
-
|
38
|
-
|
36
|
+
RelayFeatureFlags = _require2.RelayFeatureFlags; // re-import in case of jest module resets
|
39
37
|
Object.assign(RelayFeatureFlags, originalFlags);
|
40
38
|
});
|
41
39
|
body();
|
42
40
|
});
|
43
41
|
}
|
44
|
-
|
45
42
|
module.exports = describeWithFeatureFlags;
|
@@ -5,26 +5,23 @@
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
6
6
|
*
|
7
7
|
* @format
|
8
|
+
* @oncall relay
|
8
9
|
*/
|
10
|
+
|
9
11
|
'use strict';
|
10
12
|
|
11
13
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
12
|
-
|
13
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
14
|
-
|
15
15
|
var getOutputForFixture = require('./getOutputForFixture');
|
16
|
-
|
17
16
|
var fs = require('fs');
|
18
|
-
|
19
17
|
var path = require('path');
|
18
|
+
|
20
19
|
/* global expect,test */
|
21
20
|
|
22
21
|
/**
|
23
22
|
* Extend Jest with a custom snapshot serializer to provide additional context
|
24
23
|
* and reduce the amount of escaping that occurs.
|
25
24
|
*/
|
26
|
-
|
27
|
-
|
28
25
|
var FIXTURE_TAG = Symbol["for"]('FIXTURE_TAG');
|
29
26
|
expect.addSnapshotSerializer({
|
30
27
|
print: function print(value) {
|
@@ -36,13 +33,13 @@ expect.addSnapshotSerializer({
|
|
36
33
|
return value && value[FIXTURE_TAG] === true;
|
37
34
|
}
|
38
35
|
});
|
36
|
+
|
39
37
|
/**
|
40
38
|
* Generates a set of jest snapshot tests that compare the output of the
|
41
39
|
* provided `operation` to each of the matching files in the `fixturesPath`.
|
42
40
|
* The fixture should have '# expected-to-throw' on its first line
|
43
41
|
* if it is expected to fail
|
44
42
|
*/
|
45
|
-
|
46
43
|
function generateTestsFromFixtures(fixturesPath, operation) {
|
47
44
|
var fixtures = fs.readdirSync(fixturesPath);
|
48
45
|
test("has fixtures in ".concat(fixturesPath), function () {
|
@@ -51,23 +48,19 @@ function generateTestsFromFixtures(fixturesPath, operation) {
|
|
51
48
|
var onlyFixtures = fixtures.filter(function (name) {
|
52
49
|
return name.startsWith('only.');
|
53
50
|
});
|
54
|
-
|
55
51
|
if (onlyFixtures.length) {
|
56
52
|
test.skip.each(fixtures.filter(function (name) {
|
57
53
|
return !name.startsWith('only.');
|
58
54
|
}))('matches expected output: %s', function () {});
|
59
55
|
fixtures = onlyFixtures;
|
60
56
|
}
|
61
|
-
|
62
57
|
test.each(fixtures)('matches expected output: %s', function (file) {
|
63
58
|
var _expect;
|
64
|
-
|
65
59
|
var input = fs.readFileSync(path.join(fixturesPath, file), 'utf8');
|
66
60
|
var output = getOutputForFixture(input, operation, file);
|
67
61
|
expect((_expect = {}, (0, _defineProperty2["default"])(_expect, FIXTURE_TAG, true), (0, _defineProperty2["default"])(_expect, "input", input), (0, _defineProperty2["default"])(_expect, "output", output), _expect)).toMatchSnapshot();
|
68
62
|
});
|
69
63
|
}
|
70
|
-
|
71
64
|
module.exports = {
|
72
65
|
generateTestsFromFixtures: generateTestsFromFixtures,
|
73
66
|
FIXTURE_TAG: FIXTURE_TAG
|
@@ -6,25 +6,23 @@
|
|
6
6
|
*
|
7
7
|
*
|
8
8
|
* @format
|
9
|
+
* @oncall relay
|
9
10
|
*/
|
11
|
+
|
10
12
|
'use strict';
|
11
13
|
|
12
14
|
function getOutputForFixture(input, operation, file) {
|
13
15
|
var shouldThrow = /^# *expected-to-throw/.test(input) || /\.error\.\w+$/.test(file);
|
14
|
-
|
15
16
|
if (shouldThrow) {
|
16
17
|
var result;
|
17
|
-
|
18
18
|
try {
|
19
19
|
result = operation(input);
|
20
20
|
} catch (e) {
|
21
21
|
return "THROWN EXCEPTION:\n\n".concat(e.toString());
|
22
22
|
}
|
23
|
-
|
24
23
|
throw new Error("Expected test file '".concat(file, "' to throw, but it passed:\n").concat(result));
|
25
24
|
} else {
|
26
25
|
return operation(input);
|
27
26
|
}
|
28
27
|
}
|
29
|
-
|
30
28
|
module.exports = getOutputForFixture;
|
package/lib/index.js
CHANGED
@@ -6,50 +6,43 @@
|
|
6
6
|
*
|
7
7
|
*
|
8
8
|
* @format
|
9
|
+
* @oncall relay
|
9
10
|
*/
|
11
|
+
|
10
12
|
'use strict';
|
11
13
|
|
12
14
|
var _require = require('./consoleError'),
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
disallowConsoleErrors = _require.disallowConsoleErrors,
|
16
|
+
expectConsoleError = _require.expectConsoleError,
|
17
|
+
expectConsoleErrorsMany = _require.expectConsoleErrorsMany,
|
18
|
+
expectConsoleErrorWillFire = _require.expectConsoleErrorWillFire;
|
18
19
|
var _require2 = require('./consoleWarning'),
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
disallowConsoleWarnings = _require2.disallowConsoleWarnings,
|
21
|
+
expectConsoleWarning = _require2.expectConsoleWarning,
|
22
|
+
expectConsoleWarningsMany = _require2.expectConsoleWarningsMany,
|
23
|
+
expectConsoleWarningWillFire = _require2.expectConsoleWarningWillFire;
|
24
24
|
var describeWithFeatureFlags = require('./describeWithFeatureFlags');
|
25
|
-
|
26
25
|
var _require3 = require('./generateTestsFromFixtures'),
|
27
|
-
|
28
|
-
|
29
|
-
|
26
|
+
FIXTURE_TAG = _require3.FIXTURE_TAG,
|
27
|
+
generateTestsFromFixtures = _require3.generateTestsFromFixtures;
|
30
28
|
var Matchers = require('./Matchers');
|
31
|
-
|
32
29
|
var printAST = require('./printAST');
|
33
|
-
|
34
30
|
var simpleClone = require('./simpleClone');
|
35
|
-
|
36
31
|
var trackRetentionForEnvironment = require('./trackRetentionForEnvironment');
|
37
|
-
|
38
32
|
var _require4 = require('./warnings'),
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
33
|
+
disallowWarnings = _require4.disallowWarnings,
|
34
|
+
expectToWarn = _require4.expectToWarn,
|
35
|
+
expectToWarnMany = _require4.expectToWarnMany,
|
36
|
+
expectWarningWillFire = _require4.expectWarningWillFire;
|
44
37
|
var _require5 = require('relay-test-utils'),
|
45
|
-
|
46
|
-
|
38
|
+
createMockEnvironment = _require5.createMockEnvironment,
|
39
|
+
unwrapContainer = _require5.unwrapContainer;
|
40
|
+
|
41
|
+
// Apparently, in node v16 (because now they are using V8 V9.something)
|
47
42
|
// the content of the TypeError has changed, and now some of our tests
|
48
43
|
// stated to fail.
|
49
44
|
// This is a temporary work-around to make test pass, but we need to
|
50
45
|
// figure out a cleaner way of testing this.
|
51
|
-
|
52
|
-
|
53
46
|
function cannotReadPropertyOfUndefined__DEPRECATED(propertyName) {
|
54
47
|
if (process.version.match(/^v16\.(.+)$/)) {
|
55
48
|
return "Cannot read properties of undefined (reading '".concat(propertyName, "')");
|
@@ -57,11 +50,10 @@ function cannotReadPropertyOfUndefined__DEPRECATED(propertyName) {
|
|
57
50
|
return "Cannot read property '".concat(propertyName, "' of undefined");
|
58
51
|
}
|
59
52
|
}
|
53
|
+
|
60
54
|
/**
|
61
55
|
* The public interface to Relay Test Utils.
|
62
56
|
*/
|
63
|
-
|
64
|
-
|
65
57
|
module.exports = {
|
66
58
|
cannotReadPropertyOfUndefined__DEPRECATED: cannotReadPropertyOfUndefined__DEPRECATED,
|
67
59
|
createMockEnvironment: createMockEnvironment,
|
package/lib/printAST.js
CHANGED
@@ -6,8 +6,11 @@
|
|
6
6
|
*
|
7
7
|
*
|
8
8
|
* @format
|
9
|
+
* @oncall relay
|
9
10
|
*/
|
11
|
+
|
10
12
|
'use strict';
|
13
|
+
|
11
14
|
/**
|
12
15
|
* Prints a JSON AST similar to JSON.stringify(ast, null, 2) with some changes:
|
13
16
|
* - Adds trailing commas to simplify diffs.
|
@@ -18,20 +21,15 @@
|
|
18
21
|
* prop: value,
|
19
22
|
* }
|
20
23
|
*/
|
21
|
-
|
22
24
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
23
|
-
|
24
25
|
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
|
25
|
-
|
26
26
|
function printAST(ast) {
|
27
27
|
return printASTImpl(ast, '');
|
28
28
|
}
|
29
|
-
|
30
29
|
function printASTImpl(ast, indent) {
|
31
30
|
switch (typeof ast) {
|
32
31
|
case 'undefined':
|
33
32
|
return 'undefined';
|
34
|
-
|
35
33
|
case 'object':
|
36
34
|
{
|
37
35
|
if (ast === null) {
|
@@ -40,13 +38,10 @@ function printASTImpl(ast, indent) {
|
|
40
38
|
if (ast.length === 0) {
|
41
39
|
return '[]';
|
42
40
|
}
|
43
|
-
|
44
41
|
var result = '[\n';
|
45
42
|
var itemIndent = indent + ' ';
|
46
|
-
|
47
43
|
var _iterator = (0, _createForOfIteratorHelper2["default"])(ast),
|
48
|
-
|
49
|
-
|
44
|
+
_step;
|
50
45
|
try {
|
51
46
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
52
47
|
var item = _step.value;
|
@@ -57,56 +52,45 @@ function printASTImpl(ast, indent) {
|
|
57
52
|
} finally {
|
58
53
|
_iterator.f();
|
59
54
|
}
|
60
|
-
|
61
55
|
result += indent + ']';
|
62
56
|
return result;
|
63
57
|
} else if (typeof ast.kind === 'string') {
|
64
58
|
var _result = "".concat(ast.kind, " {\n");
|
65
|
-
|
66
59
|
var keyIndent = indent + ' ';
|
67
|
-
|
68
60
|
for (var _i = 0, _Object$entries = Object.entries(ast); _i < _Object$entries.length; _i++) {
|
69
61
|
var _Object$entries$_i = _Object$entries[_i],
|
70
|
-
|
71
|
-
|
72
|
-
|
62
|
+
key = _Object$entries$_i[0],
|
63
|
+
value = _Object$entries$_i[1];
|
73
64
|
if (key === 'kind') {
|
74
65
|
continue;
|
75
66
|
}
|
76
|
-
|
77
67
|
_result += "".concat(keyIndent).concat(key, ": ").concat(printASTImpl(value, keyIndent), ",\n");
|
78
68
|
}
|
79
|
-
|
80
69
|
_result += indent + '}';
|
81
70
|
return _result;
|
82
71
|
} else if (typeof ast.toJSON === 'function') {
|
83
|
-
return printASTImpl(
|
72
|
+
return printASTImpl(
|
73
|
+
// $FlowFixMe[incompatible-use] - we have to unsafely assume no arguments here
|
84
74
|
ast.toJSON(), indent);
|
85
75
|
} else {
|
86
76
|
var _result2 = '{\n';
|
87
|
-
|
88
77
|
var _keyIndent = indent + ' ';
|
89
|
-
|
90
78
|
for (var _i2 = 0, _Object$entries2 = Object.entries(ast); _i2 < _Object$entries2.length; _i2++) {
|
91
79
|
var _Object$entries2$_i = _Object$entries2[_i2],
|
92
|
-
|
93
|
-
|
80
|
+
_key = _Object$entries2$_i[0],
|
81
|
+
_value = _Object$entries2$_i[1];
|
94
82
|
_result2 += "".concat(_keyIndent).concat(JSON.stringify(_key), ": ").concat(printASTImpl(_value, _keyIndent), ",\n");
|
95
83
|
}
|
96
|
-
|
97
84
|
_result2 += indent + '}';
|
98
85
|
return _result2;
|
99
86
|
}
|
100
87
|
}
|
101
|
-
|
102
88
|
case 'string':
|
103
89
|
case 'number':
|
104
90
|
case 'boolean':
|
105
91
|
return JSON.stringify(ast, null, 2).replace('\n', '\n' + indent);
|
106
|
-
|
107
92
|
default:
|
108
93
|
throw new Error("printAST doesn't handle values where " + "typeof value === '".concat(typeof ast, "'."));
|
109
94
|
}
|
110
95
|
}
|
111
|
-
|
112
96
|
module.exports = printAST;
|
package/lib/simpleClone.js
CHANGED
@@ -6,30 +6,29 @@
|
|
6
6
|
*
|
7
7
|
*
|
8
8
|
* @format
|
9
|
+
* @oncall relay
|
9
10
|
*/
|
11
|
+
|
10
12
|
'use strict';
|
13
|
+
|
11
14
|
/**
|
12
15
|
* A helper to create a deep clone of a value, plain Object, or array of such.
|
13
16
|
*
|
14
17
|
* Does not support RegExp, Date, other classes, or self-referential values.
|
15
18
|
*/
|
16
|
-
|
17
19
|
function simpleClone(value) {
|
18
20
|
if (Array.isArray(value)) {
|
19
21
|
// $FlowFixMe[incompatible-return]
|
20
22
|
return value.map(simpleClone);
|
21
23
|
} else if (value != null && typeof value === 'object') {
|
22
24
|
var result = {};
|
23
|
-
|
24
25
|
for (var key in value) {
|
25
26
|
result[key] = simpleClone(value[key]);
|
26
|
-
}
|
27
|
-
|
28
|
-
|
27
|
+
}
|
28
|
+
// $FlowFixMe[incompatible-return]
|
29
29
|
return result;
|
30
30
|
} else {
|
31
31
|
return value;
|
32
32
|
}
|
33
33
|
}
|
34
|
-
|
35
34
|
module.exports = simpleClone;
|
package/lib/testschema.graphql
CHANGED
@@ -6,10 +6,12 @@
|
|
6
6
|
*
|
7
7
|
*
|
8
8
|
* @format
|
9
|
+
* @oncall relay
|
9
10
|
*/
|
11
|
+
|
10
12
|
'use strict';
|
11
|
-
/* global jest */
|
12
13
|
|
14
|
+
/* global jest */
|
13
15
|
/**
|
14
16
|
* Takes an environment and augments it with a mock implementation of `retain`
|
15
17
|
* that tracks what operations are currently retained. Also returns the Jest mock
|
@@ -20,19 +22,18 @@ function trackRetentionForEnvironment(environment) {
|
|
20
22
|
var retainCountsByOperation = new Map();
|
21
23
|
var release = jest.fn(function (id) {
|
22
24
|
var _retainCountsByOperat;
|
23
|
-
|
24
25
|
var existing = (_retainCountsByOperat = retainCountsByOperation.get(id)) !== null && _retainCountsByOperat !== void 0 ? _retainCountsByOperat : NaN;
|
25
|
-
|
26
26
|
if (existing === 1) {
|
27
27
|
retainCountsByOperation["delete"](id);
|
28
28
|
} else {
|
29
29
|
retainCountsByOperation.set(id, existing - 1);
|
30
30
|
}
|
31
|
-
});
|
31
|
+
});
|
32
32
|
|
33
|
+
// $FlowFixMe[cannot-write] safe to do for mocking
|
34
|
+
// $FlowFixMe[missing-local-annot] error found when enabling Flow LTI mode
|
33
35
|
environment.retain = jest.fn(function (operation) {
|
34
36
|
var _retainCountsByOperat2;
|
35
|
-
|
36
37
|
var id = operation.request.identifier;
|
37
38
|
var existing = (_retainCountsByOperat2 = retainCountsByOperation.get(id)) !== null && _retainCountsByOperat2 !== void 0 ? _retainCountsByOperat2 : 0;
|
38
39
|
retainCountsByOperation.set(id, existing + 1);
|
@@ -42,23 +43,18 @@ function trackRetentionForEnvironment(environment) {
|
|
42
43
|
if (!released) {
|
43
44
|
release(id);
|
44
45
|
}
|
45
|
-
|
46
46
|
released = true;
|
47
47
|
}
|
48
48
|
};
|
49
49
|
});
|
50
|
-
|
51
50
|
function isOperationRetained(operation) {
|
52
51
|
var _retainCountsByOperat3;
|
53
|
-
|
54
52
|
var id = operation.request.identifier;
|
55
53
|
return ((_retainCountsByOperat3 = retainCountsByOperation.get(id)) !== null && _retainCountsByOperat3 !== void 0 ? _retainCountsByOperat3 : 0) > 0;
|
56
54
|
}
|
57
|
-
|
58
55
|
return {
|
59
56
|
release_DEPRECATED: release,
|
60
57
|
isOperationRetained: isOperationRetained
|
61
58
|
};
|
62
59
|
}
|
63
|
-
|
64
60
|
module.exports = trackRetentionForEnvironment;
|
package/lib/warnings.js
CHANGED
@@ -4,23 +4,22 @@
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
6
6
|
*
|
7
|
-
* @emails oncall+relay
|
8
7
|
*
|
9
8
|
* @format
|
9
|
+
* @oncall relay
|
10
10
|
*/
|
11
|
+
|
11
12
|
'use strict';
|
12
|
-
/* global jest */
|
13
13
|
|
14
|
+
/* global jest */
|
14
15
|
var _require = require('./consoleErrorsAndWarnings'),
|
15
|
-
|
16
|
-
|
16
|
+
createConsoleInterceptionSystem = _require.createConsoleInterceptionSystem;
|
17
17
|
var warningsSystem = createConsoleInterceptionSystem('warning', 'expectToWarn', function (impl) {
|
18
18
|
jest.mock("fbjs/lib/warning", function () {
|
19
19
|
return jest.fn(function (condition, format) {
|
20
20
|
for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
21
21
|
args[_key - 2] = arguments[_key];
|
22
22
|
}
|
23
|
-
|
24
23
|
if (!condition) {
|
25
24
|
var argIndex = 0;
|
26
25
|
var message = format.replace(/%s/g, function () {
|
@@ -31,6 +30,7 @@ var warningsSystem = createConsoleInterceptionSystem('warning', 'expectToWarn',
|
|
31
30
|
});
|
32
31
|
});
|
33
32
|
});
|
33
|
+
|
34
34
|
/**
|
35
35
|
* Mocks the `warning` module to turn warnings into errors. Any expected
|
36
36
|
* warnings need to be explicitly expected with `expectWarningWillFire(message)`.
|
@@ -38,37 +38,32 @@ var warningsSystem = createConsoleInterceptionSystem('warning', 'expectToWarn',
|
|
38
38
|
* NOTE: This should be called on top of a test file. The test should NOT
|
39
39
|
* use `jest.resetModules()` or manually mock `warning`.
|
40
40
|
*/
|
41
|
-
|
42
41
|
function disallowWarnings() {
|
43
42
|
warningsSystem.disallowMessages();
|
44
43
|
}
|
44
|
+
|
45
45
|
/**
|
46
46
|
* Expect a warning with the given message. If the message isn't fired in the
|
47
47
|
* current test, the test will fail.
|
48
48
|
*/
|
49
|
-
|
50
|
-
|
51
49
|
function expectWarningWillFire(message, options) {
|
52
50
|
warningsSystem.expectMessageWillFire(message, options);
|
53
51
|
}
|
52
|
+
|
54
53
|
/**
|
55
54
|
* Expect the callback `fn` to trigger the warning message and otherwise fail.
|
56
55
|
*/
|
57
|
-
|
58
|
-
|
59
56
|
function expectToWarn(message, fn) {
|
60
57
|
return warningsSystem.expectMessage(message, fn);
|
61
58
|
}
|
59
|
+
|
62
60
|
/**
|
63
61
|
* Expect the callback `fn` to trigger all warning messages (in sequence)
|
64
62
|
* or otherwise fail.
|
65
63
|
*/
|
66
|
-
|
67
|
-
|
68
64
|
function expectToWarnMany(messages, fn) {
|
69
65
|
return warningsSystem.expectMessageMany(messages, fn);
|
70
66
|
}
|
71
|
-
|
72
67
|
module.exports = {
|
73
68
|
disallowWarnings: disallowWarnings,
|
74
69
|
expectWarningWillFire: expectWarningWillFire,
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "relay-test-utils-internal",
|
3
3
|
"description": "Internal utilities for testing Relay.",
|
4
|
-
"version": "
|
4
|
+
"version": "15.0.0",
|
5
5
|
"keywords": [
|
6
6
|
"graphql",
|
7
7
|
"relay"
|
@@ -17,7 +17,7 @@
|
|
17
17
|
"dependencies": {
|
18
18
|
"@babel/runtime": "^7.0.0",
|
19
19
|
"fbjs": "^3.0.2",
|
20
|
-
"relay-runtime": "
|
20
|
+
"relay-runtime": "15.0.0"
|
21
21
|
},
|
22
22
|
"directories": {
|
23
23
|
"": "./"
|
package/printAST.js.flow
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
/**
|
2
|
-
* Relay
|
2
|
+
* Relay v15.0.0
|
3
3
|
*/
|
4
4
|
module.exports=function(e){var n={};function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)t.d(r,o,function(n){return e[n]}.bind(null,o));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=3)}([function(e,n){e.exports=require("@babel/runtime/helpers/interopRequireDefault")},function(e,n,t){"use strict";var r=(0,t(0).default)(t(5)),o=console.error;e.exports={createConsoleInterceptionSystem:function(e,n,t){var i=!1,c=[],a=[],s=[],u=e.charAt(0).toUpperCase()+e.slice(1),l=u+"s",f="disallow".concat(u,"s");function p(e){var n=c.findIndex((function(n){return e.startsWith(n)})),t=a.findIndex((function(n){return e.startsWith(n)}));if(s.length>0&&e.startsWith(s[0]))s.shift();else if(n>=0)c.splice(n,1);else{if(!(t>=0))throw o("Unexpected ".concat(u,": ")+e),new Error("".concat(u,": ")+e);a.splice(t,1)}}function d(t,o){if(s.length>0)throw new Error("Cannot nest ".concat(n,"() calls."));s.push.apply(s,(0,r.default)(t));var i=o();if(s.length>0){var c=s.toString();throw s.length=0,new Error("Expected ".concat(e," in callback: ").concat(c))}return i}return{disallowMessages:function(){if(i)throw new Error("".concat(f," should be called only once."));i=!0,t(p),afterEach((function(){if(a.length=0,s.length=0,c.length>0){var n=new Error("Some ".concat(c.length," expected ").concat(e,"s where not triggered:\n\n")+Array.from(c,(function(e){return" * ".concat(e)})).join("\n")+"\n");throw c.length=0,n}}))},expectMessageWillFire:function(e,n){if(!i)throw new Error("".concat(f," needs to be called before expect").concat(l,"WillFire"));for(var t=!0===(null==n?void 0:n.optional),r=0;r<(null!==(o=null==n?void 0:n.count)&&void 0!==o?o:1);r++){var o;(t?a:c).push(e)}},expectMessage:function(e,n){return d([e],n)},expectMessageMany:d}}}},function(e,n){e.exports=require("relay-runtime")},function(e,n,t){"use strict";var r=t(4),o=r.disallowConsoleErrors,i=r.expectConsoleError,c=r.expectConsoleErrorsMany,a=r.expectConsoleErrorWillFire,s=t(6),u=s.disallowConsoleWarnings,l=s.expectConsoleWarning,f=s.expectConsoleWarningsMany,p=s.expectConsoleWarningWillFire,d=t(7),g=t(9),x=g.FIXTURE_TAG,h=g.generateTestsFromFixtures,y=t(14),v=t(16),w=t(18),b=t(19),m=t(20),W=m.disallowWarnings,E=m.expectToWarn,C=m.expectToWarnMany,M=m.expectWarningWillFire,F=t(21),j=F.createMockEnvironment,S=F.unwrapContainer;e.exports={cannotReadPropertyOfUndefined__DEPRECATED:function(e){return process.version.match(/^v16\.(.+)$/)?"Cannot read properties of undefined (reading '".concat(e,"')"):"Cannot read property '".concat(e,"' of undefined")},createMockEnvironment:j,describeWithFeatureFlags:d,disallowConsoleErrors:o,disallowConsoleWarnings:u,disallowWarnings:W,expectConsoleError:i,expectConsoleErrorsMany:c,expectConsoleErrorWillFire:a,expectConsoleWarningWillFire:p,expectConsoleWarning:l,expectConsoleWarningsMany:f,expectToWarn:E,expectToWarnMany:C,expectWarningWillFire:M,FIXTURE_TAG:x,generateTestsFromFixtures:h,matchers:y,printAST:v,simpleClone:w,trackRetentionForEnvironment:b,unwrapContainer:S}},function(e,n,t){"use strict";var r=(0,t(1).createConsoleInterceptionSystem)("error","expectConsoleError",(function(e){jest.spyOn(console,"error").mockImplementation(e)}));e.exports={disallowConsoleErrors:function(){r.disallowMessages()},expectConsoleErrorWillFire:function(e,n){r.expectMessageWillFire(e,n)},expectConsoleError:function(e,n){return r.expectMessage(e,n)},expectConsoleErrorsMany:function(e,n){return r.expectMessageMany(e,n)}}},function(e,n){e.exports=require("@babel/runtime/helpers/toConsumableArray")},function(e,n,t){"use strict";var r=(0,t(1).createConsoleInterceptionSystem)("warning","expectConsoleWarning",(function(e){jest.spyOn(console,"warn").mockImplementation(e)}));e.exports={disallowConsoleWarnings:function(){r.disallowMessages()},expectConsoleWarningWillFire:function(e,n){r.expectMessageWillFire(e,n)},expectConsoleWarning:function(e,n){return r.expectMessage(e,n)},expectConsoleWarningsMany:function(e,n){return r.expectMessageMany(e,n)}}},function(e,n,t){"use strict";var r=(0,t(0).default)(t(8));e.exports=function(e,n,o){describe.each(e)("".concat(n," - Feature flags: %o"),(function(e){var n;beforeEach((function(){var o=t(2).RelayFeatureFlags;n=(0,r.default)({},o),Object.assign(o,e)})),afterEach((function(){var e=t(2).RelayFeatureFlags;Object.assign(e,n)})),o()}))}},function(e,n){e.exports=require("@babel/runtime/helpers/objectSpread2")},function(e,n,t){"use strict";var r=(0,t(0).default)(t(10)),o=t(11),i=t(12),c=t(13),a=Symbol.for("FIXTURE_TAG");expect.addSnapshotSerializer({print:function(e){return Object.keys(e).map((function(n){return"~~~~~~~~~~ ".concat(n.toUpperCase()," ~~~~~~~~~~\n").concat(e[n])})).join("\n")},test:function(e){return e&&!0===e[a]}}),e.exports={generateTestsFromFixtures:function(e,n){var t=i.readdirSync(e);test("has fixtures in ".concat(e),(function(){expect(t.length>0).toBe(!0)}));var s=t.filter((function(e){return e.startsWith("only.")}));s.length&&(test.skip.each(t.filter((function(e){return!e.startsWith("only.")})))("matches expected output: %s",(function(){})),t=s),test.each(t)("matches expected output: %s",(function(t){var s,u=i.readFileSync(c.join(e,t),"utf8"),l=o(u,n,t);expect((s={},(0,r.default)(s,a,!0),(0,r.default)(s,"input",u),(0,r.default)(s,"output",l),s)).toMatchSnapshot()}))},FIXTURE_TAG:a}},function(e,n){e.exports=require("@babel/runtime/helpers/defineProperty")},function(e,n,t){"use strict";e.exports=function(e,n,t){if(/^# *expected-to-throw/.test(e)||/\.error\.\w+$/.test(t)){var r;try{r=n(e)}catch(e){return"THROWN EXCEPTION:\n\n".concat(e.toString())}throw new Error("Expected test file '".concat(t,"' to throw, but it passed:\n").concat(r))}return n(e)}},function(e,n){e.exports=require("fs")},function(e,n){e.exports=require("path")},function(e,n,t){"use strict";e.exports={toBeDeeplyFrozen:function(e){return function e(n){if(expect(Object.isFrozen(n)).toBe(!0),Array.isArray(n))n.forEach((function(n){return e(n)}));else if("object"==typeof n&&null!==n)for(var t in n)e(n[t])}(e),{pass:!0}},toWarn:function(e,n){var r=this.isNot;function o(e){return e instanceof RegExp?e.toString():JSON.stringify(e)}function i(e){return"["+e.map(o).join(", ")+"]"}function c(e){return e.length?e.map((function(e){return i([!!e[0]].concat(e.slice(1)))})).join(", "):"[]"}var a=t(15);if(!a.mock)throw new Error("toWarn(): Requires `jest.mock('warning')`.");var s=a.mock.calls.length;e();var u=a.mock.calls.slice(s);return n?(Array.isArray(n)||(n=[n]),{pass:!!u.find((function(e){return e.length===n.length+1&&e.every((function(e,t){if(!t)return!e;var r=n[t-1];return r instanceof RegExp?r.test(e):e===r}))})),message:function(){return"Expected ".concat(r?"not ":"","to warn: ")+"".concat(i([!1].concat(n))," but ")+"`warning` received the following calls: "+"".concat(c(u),".")}}):{pass:!!u.filter((function(e){return!e[0]})).length,message:function(){return"Expected ".concat(r?"not ":"","to warn but ")+"`warning` received the following calls: "+"".concat(c(u),".")}}}}},function(e,n){e.exports=require("fbjs/lib/warning")},function(e,n,t){"use strict";var r=(0,t(0).default)(t(17));e.exports=function(e){return function e(n,t){switch(typeof n){case"undefined":return"undefined";case"object":if(null===n)return"null";if(Array.isArray(n)){if(0===n.length)return"[]";var o,i="[\n",c=t+" ",a=(0,r.default)(n);try{for(a.s();!(o=a.n()).done;){var s=o.value;i+=c+e(s,c)+",\n"}}catch(e){a.e(e)}finally{a.f()}return i+=t+"]"}if("string"==typeof n.kind){for(var u="".concat(n.kind," {\n"),l=t+" ",f=0,p=Object.entries(n);f<p.length;f++){var d=p[f],g=d[0],x=d[1];"kind"!==g&&(u+="".concat(l).concat(g,": ").concat(e(x,l),",\n"))}return u+=t+"}"}if("function"==typeof n.toJSON)return e(n.toJSON(),t);for(var h="{\n",y=t+" ",v=0,w=Object.entries(n);v<w.length;v++){var b=w[v],m=b[0],W=b[1];h+="".concat(y).concat(JSON.stringify(m),": ").concat(e(W,y),",\n")}return h+=t+"}";case"string":case"number":case"boolean":return JSON.stringify(n,null,2).replace("\n","\n"+t);default:throw new Error("printAST doesn't handle values where "+"typeof value === '".concat(typeof n,"'."))}}(e,"")}},function(e,n){e.exports=require("@babel/runtime/helpers/createForOfIteratorHelper")},function(e,n,t){"use strict";e.exports=function e(n){if(Array.isArray(n))return n.map(e);if(null!=n&&"object"==typeof n){var t={};for(var r in n)t[r]=e(n[r]);return t}return n}},function(e,n,t){"use strict";e.exports=function(e){var n=new Map,t=jest.fn((function(e){var t,r=null!==(t=n.get(e))&&void 0!==t?t:NaN;1===r?n.delete(e):n.set(e,r-1)}));return e.retain=jest.fn((function(e){var r,o=e.request.identifier,i=null!==(r=n.get(o))&&void 0!==r?r:0;n.set(o,i+1);var c=!1;return{dispose:function(){c||t(o),c=!0}}})),{release_DEPRECATED:t,isOperationRetained:function(e){var t,r=e.request.identifier;return(null!==(t=n.get(r))&&void 0!==t?t:0)>0}}}},function(e,n,t){"use strict";var r=(0,t(1).createConsoleInterceptionSystem)("warning","expectToWarn",(function(e){jest.mock("fbjs/lib/warning",(function(){return jest.fn((function(n,t){for(var r=arguments.length,o=new Array(r>2?r-2:0),i=2;i<r;i++)o[i-2]=arguments[i];if(!n){var c=0,a=t.replace(/%s/g,(function(){return String(o[c++])}));e(a)}}))}))}));e.exports={disallowWarnings:function(){r.disallowMessages()},expectWarningWillFire:function(e,n){r.expectMessageWillFire(e,n)},expectToWarn:function(e,n){return r.expectMessage(e,n)},expectToWarnMany:function(e,n){return r.expectMessageMany(e,n)}}},function(e,n){e.exports=require("relay-test-utils")}]);
|
package/simpleClone.js.flow
CHANGED
@@ -6,6 +6,7 @@
|
|
6
6
|
*
|
7
7
|
* @flow
|
8
8
|
* @format
|
9
|
+
* @oncall relay
|
9
10
|
*/
|
10
11
|
|
11
12
|
'use strict';
|
@@ -25,9 +26,9 @@ function trackRetentionForEnvironment(environment: IEnvironment): {
|
|
25
26
|
release_DEPRECATED: JestMockFn<[mixed], void>,
|
26
27
|
isOperationRetained: OperationDescriptor => boolean,
|
27
28
|
} {
|
28
|
-
const retainCountsByOperation = new Map();
|
29
|
+
const retainCountsByOperation = new Map<mixed, number>();
|
29
30
|
|
30
|
-
const release = jest.fn(id => {
|
31
|
+
const release = jest.fn((id: mixed) => {
|
31
32
|
const existing = retainCountsByOperation.get(id) ?? NaN;
|
32
33
|
if (existing === 1) {
|
33
34
|
retainCountsByOperation.delete(id);
|
@@ -37,6 +38,7 @@ function trackRetentionForEnvironment(environment: IEnvironment): {
|
|
37
38
|
});
|
38
39
|
|
39
40
|
// $FlowFixMe[cannot-write] safe to do for mocking
|
41
|
+
// $FlowFixMe[missing-local-annot] error found when enabling Flow LTI mode
|
40
42
|
environment.retain = jest.fn(operation => {
|
41
43
|
const id = operation.request.identifier;
|
42
44
|
const existing = retainCountsByOperation.get(id) ?? 0;
|
package/warnings.js.flow
CHANGED