11
12
'use strict';
13
14
-import * as React from 'react';
14
+const React = require('react');
15
+const Scheduler = require('scheduler');
16
17
import * as ReactART from 'react-art';
18
import ARTSVGMode from 'art/modes/svg';
23
import Rectangle from 'react-art/Rectangle';
24
import Wedge from 'react-art/Wedge';
25
26
+const {act, waitFor} = require('internal-test-utils');
27
+
28
// Isolate DOM renderer.
29
jest.resetModules();
30
+// share isomorphic
31
+jest.mock('scheduler', () => Scheduler);
32
+jest.mock('react', () => React);
33
+const ReactDOM = require('react-dom');
34
const ReactDOMClient = require('react-dom/client');
28
-let act = require('internal-test-utils').act;
35
36
// Isolate the noop renderer
37
jest.resetModules();
38
+// share isomorphic
39
+jest.mock('scheduler', () => Scheduler);
40
+jest.mock('react', () => React);
41
const ReactNoop = require('react-noop-renderer');
33
-const Scheduler = require('scheduler');
42
43
let Group;
44
let Shape;
45
let Surface;
46
let TestComponent;
47
40
-let waitFor;
48
let groupRef;
49
50
const Missing = {};
75
let container;
76
77
beforeEach(() => {
78
+ jest.resetModules();
79
+ // share isomorphic
80
+ jest.mock('scheduler', () => Scheduler);
81
+ jest.mock('react', () => React);
82
+
83
container = document.createElement('div');
84
document.body.appendChild(container);
85
89
Shape = ReactART.Shape;
90
Surface = ReactART.Surface;
91
80
- ({waitFor} = require('internal-test-utils'));
81
-
92
groupRef = React.createRef();
93
TestComponent = class extends React.Component {
94
group = groupRef;
419
);
420
}
421
412
- // Using test renderer instead of the DOM renderer here because async
413
- // testing APIs for the DOM renderer don't exist.
422
ReactNoop.render(
423
<CurrentRendererContext.Provider value="Test">
424
<Yield value="A" />
431
await waitFor(['A']);
432
433
const root = ReactDOMClient.createRoot(container);
426
- await act(() => {
434
+ // We use flush sync here because we expect this to render in between
435
+ // while the concurrent render is yieldy where as act would flush both.
436
+ ReactDOM.flushSync(() => {
437
root.render(
438
<Surface>
439
<LogCurrentRenderer />
444
);
445
});
446
437
- expect(ops).toEqual([null, 'ART']);
438
-
447
ops = [];
448
await waitFor(['B', 'C']);
449
455
let ReactTestRenderer;
456
beforeEach(() => {
457
jest.resetModules();
458
+ // share isomorphic
459
+ jest.mock('scheduler', () => Scheduler);
460
+ jest.mock('react', () => React);
461
// Isolate test renderer.
462
ReactTestRenderer = require('react-test-renderer');
452
- act = require('internal-test-utils').act;
463
});
464
465
it('should generate a <Shape> with props for drawing the Circle', async () => {