Skip to content

Commit eae4e65

Browse files
committed
add useContext test case
1 parent dab33b6 commit eae4e65

File tree

5 files changed

+107
-37
lines changed

5 files changed

+107
-37
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
"reload"
5151
],
5252
"devDependencies": {
53+
"@hot-loader/react-dom": "^16.8.6",
5354
"@types/react": "^16.7.13",
5455
"babel-cli": "^6.7.5",
5556
"babel-core": "^6.26.3",

src/reactHotLoader.js

+1
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ const reactHotLoader = {
106106
configuration.ignoreSFC = configuration.ignoreSFCWhenInjected;
107107

108108
reactHotLoader.IS_REACT_MERGE_ENABLED = true;
109+
// console.warn('react-🔥-loader activated.');
109110
} else {
110111
// Actually everything works...
111112
console.warn('React-Hot-Loader: react-🔥-dom patch is not detected. React 16.6+ features may not work.');

test/cases/hooks/useContext.test.js

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
/* eslint-env browser */
2+
import 'babel-polyfill';
3+
import React from 'react';
4+
import TestRenderer from 'react-test-renderer';
5+
import ReactHotLoader, { AppContainer, setConfig } from '../../../src/index.dev';
6+
import { configureGeneration } from '../../../src/global/generation';
7+
8+
jest.mock('react-dom', () => require('@hot-loader/react-dom'));
9+
10+
describe(`Hooks: useContext`, () => {
11+
beforeEach(() => {
12+
ReactHotLoader.reset();
13+
setConfig({
14+
ignoreSFC: true,
15+
});
16+
configureGeneration(1, 1);
17+
});
18+
19+
const snapShot = {
20+
children: ['this is component 2'],
21+
props: {},
22+
type: 'div',
23+
};
24+
25+
if (React.useContext) {
26+
it('use', () => {
27+
let failed = false;
28+
const context = React.createContext(0);
29+
const Wrapper = () => {
30+
const ctx = React.useContext(context);
31+
if (ctx) {
32+
return `pass ${ctx}`;
33+
}
34+
failed = true;
35+
return 'fail';
36+
};
37+
ReactHotLoader.register(Wrapper, 'wrapper', 'hook-test');
38+
39+
const wrapper = TestRenderer.create(
40+
<AppContainer update>
41+
<context.Provider value={1}>
42+
<Wrapper />
43+
</context.Provider>
44+
</AppContainer>,
45+
);
46+
47+
expect(wrapper.toJSON()).toEqual('pass 1');
48+
expect(failed).toBe(false);
49+
50+
{
51+
ReactHotLoader.register(Wrapper, 'wrapper', 'hook-test');
52+
wrapper.update(
53+
<AppContainer update>
54+
<context.Provider value={2}>
55+
<Wrapper />
56+
</context.Provider>
57+
</AppContainer>,
58+
);
59+
expect(wrapper.toJSON()).toEqual('pass 2');
60+
expect(failed).toBe(false);
61+
}
62+
});
63+
} else {
64+
it('target platform does not support useContext', () => {
65+
expect(true).toBe(true);
66+
});
67+
}
68+
});

test/cases/memo/memo.test.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import TestRenderer from 'react-test-renderer';
55
import ReactHotLoader, { AppContainer } from '../../../src/index.dev';
66
import { configureGeneration } from '../../../src/global/generation';
77

8+
// jest.mock('react-dom', () => require('@hot-loader/react-dom'));
9+
810
describe(`React.memo`, () => {
911
beforeEach(() => {
1012
ReactHotLoader.reset();
@@ -33,7 +35,7 @@ describe(`React.memo`, () => {
3335
ReactHotLoader.register(Memo, 'memo', 'memo-test');
3436
wrapper.update(
3537
<AppContainer update>
36-
<Memo />
38+
<Memo test />
3739
</AppContainer>,
3840
);
3941

yarn.lock

+34-36
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,16 @@
9696
lodash "^4.2.0"
9797
to-fast-properties "^2.0.0"
9898

99+
"@hot-loader/react-dom@^16.8.6":
100+
version "16.8.6"
101+
resolved "https://registry.yarnpkg.com/@hot-loader/react-dom/-/react-dom-16.8.6.tgz#7923ba27db1563a7cc48d4e0b2879a140df461ea"
102+
integrity sha512-+JHIYh33FVglJYZAUtRjfT5qZoT2mueJGNzU5weS2CVw26BgbxGKSujlJhO85BaRbg8sqNWyW1hYBILgK3ZCgA==
103+
dependencies:
104+
loose-envify "^1.1.0"
105+
object-assign "^4.1.1"
106+
prop-types "^15.6.2"
107+
scheduler "^0.13.6"
108+
99109
100110
version "0.0.38"
101111
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.38.tgz#c1be40aa933723c608820a99a373a16d215a1ca2"
@@ -5574,16 +5584,16 @@ rc@^1.1.7:
55745584
strip-json-comments "~2.0.1"
55755585

55765586
react-dom@16:
5577-
version "16.8.3"
5578-
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.3.tgz#ae236029e66210783ac81999d3015dfc475b9c32"
5579-
integrity sha512-ttMem9yJL4/lpItZAQ2NTFAbV7frotHk5DZEHXUOws2rMmrsvh1Na7ThGT0dTzUIl6pqTOi5tYREfL8AEna3lA==
5587+
version "16.8.6"
5588+
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f"
5589+
integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==
55805590
dependencies:
55815591
loose-envify "^1.1.0"
55825592
object-assign "^4.1.1"
55835593
prop-types "^15.6.2"
5584-
scheduler "^0.13.3"
5594+
scheduler "^0.13.6"
55855595

5586-
react-is@^16.5.2, react-is@^16.6.0:
5596+
react-is@^16.5.2:
55875597
version "16.6.0"
55885598
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.6.0.tgz#456645144581a6e99f6816ae2bd24ee94bdd0c01"
55895599
integrity sha512-q8U7k0Fi7oxF1HvQgyBjPwDXeMplEsArnKt2iYhuIF86+GBbgLHdAmokL3XUFjTd7Q363OSNG55FOGUdONVn1g==
@@ -5593,6 +5603,11 @@ react-is@^16.7.0:
55935603
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.3.tgz#4ad8b029c2a718fc0cfc746c8d4e1b7221e5387d"
55945604
integrity sha512-Y4rC1ZJmsxxkkPuMLwvKvlL1Zfpbcu+Bf4ZigkHup3v9EfdYhAlWAaVyA19olXq2o2mGn0w+dFKvk3pVVlYcIA==
55955605

5606+
react-is@^16.8.6:
5607+
version "16.8.6"
5608+
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16"
5609+
integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==
5610+
55965611
react-lifecycles-compat@^3.0.2:
55975612
version "3.0.2"
55985613
resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.2.tgz#7279047275bd727a912e25f734c0559527e84eff"
@@ -5608,34 +5623,25 @@ react-mount@^0.1.3:
56085623
resolved "https://registry.yarnpkg.com/react-mount/-/react-mount-0.1.3.tgz#2ea9cf95f1b4c49c6a4cefe1d91d8de709e3f631"
56095624
integrity sha1-LqnPlfG0xJxqTO/h2R2N5wnj9jE=
56105625

5611-
react-test-renderer@16:
5612-
version "16.6.0"
5613-
resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.6.0.tgz#fe490096bed55c3f4e92c023da3b89f9d03fceb3"
5614-
integrity sha512-w+Y3YT7OX1LP5KO7HCd0YR34Ol1qmISHaooPNMRYa6QzmwtcWhEGuZPr34wO8UCBIokswuhyLQUq7rjPDcEtJA==
5626+
react-test-renderer@16, react-test-renderer@^16.0.0-0:
5627+
version "16.8.6"
5628+
resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.8.6.tgz#188d8029b8c39c786f998aa3efd3ffe7642d5ba1"
5629+
integrity sha512-H2srzU5IWYT6cZXof6AhUcx/wEyJddQ8l7cLM/F7gDXYyPr4oq+vCIxJYXVGhId1J706sqziAjuOEjyNkfgoEw==
56155630
dependencies:
56165631
object-assign "^4.1.1"
56175632
prop-types "^15.6.2"
5618-
react-is "^16.6.0"
5619-
scheduler "^0.10.0"
5620-
5621-
react-test-renderer@^16.0.0-0:
5622-
version "16.2.0"
5623-
resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.2.0.tgz#bddf259a6b8fcd8555f012afc8eacc238872a211"
5624-
integrity sha512-Kd4gJFtpNziR9ElOE/C23LeflKLZPRpNQYWP3nQBY43SJ5a+xyEGSeMrm2zxNKXcnCbBS/q1UpD9gqd5Dv+rew==
5625-
dependencies:
5626-
fbjs "^0.8.16"
5627-
object-assign "^4.1.1"
5628-
prop-types "^15.6.0"
5633+
react-is "^16.8.6"
5634+
scheduler "^0.13.6"
56295635

56305636
react@16:
5631-
version "16.8.3"
5632-
resolved "https://registry.yarnpkg.com/react/-/react-16.8.3.tgz#c6f988a2ce895375de216edcfaedd6b9a76451d9"
5633-
integrity sha512-3UoSIsEq8yTJuSu0luO1QQWYbgGEILm+eJl2QN/VLDi7hL+EN18M3q3oVZwmVzzBJ3DkM7RMdRwBmZZ+b4IzSA==
5637+
version "16.8.6"
5638+
resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe"
5639+
integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==
56345640
dependencies:
56355641
loose-envify "^1.1.0"
56365642
object-assign "^4.1.1"
56375643
prop-types "^15.6.2"
5638-
scheduler "^0.13.3"
5644+
scheduler "^0.13.6"
56395645

56405646
read-pkg-up@^1.0.1:
56415647
version "1.0.1"
@@ -6178,18 +6184,10 @@ sax@^1.2.1:
61786184
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
61796185
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
61806186

6181-
scheduler@^0.10.0:
6182-
version "0.10.0"
6183-
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.10.0.tgz#7988de90fe7edccc774ea175a783e69c40c521e1"
6184-
integrity sha512-+TSTVTCBAA3h8Anei3haDc1IRwMeDmtI/y/o3iBe3Mjl2vwYF9DtPDt929HyRmV/e7au7CLu8sc4C4W0VOs29w==
6185-
dependencies:
6186-
loose-envify "^1.1.0"
6187-
object-assign "^4.1.1"
6188-
6189-
scheduler@^0.13.3:
6190-
version "0.13.3"
6191-
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.3.tgz#bed3c5850f62ea9c716a4d781f9daeb9b2a58896"
6192-
integrity sha512-UxN5QRYWtpR1egNWzJcVLk8jlegxAugswQc984lD3kU7NuobsO37/sRfbpTdBjtnD5TBNFA2Q2oLV5+UmPSmEQ==
6187+
scheduler@^0.13.6:
6188+
version "0.13.6"
6189+
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889"
6190+
integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==
61936191
dependencies:
61946192
loose-envify "^1.1.0"
61956193
object-assign "^4.1.1"

0 commit comments

Comments
 (0)