main
js 65 lines 1.58 KB
Raw
1 /**
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 *
7 * @emails react-core
8 * @jest-environment node
9 */
10
11 'use strict';
12
13 let act;
14 let Activity;
15 let React;
16 let ReactServer;
17 let ReactNoop;
18 let ReactNoopFlightClient;
19 let ReactNoopFlightServer;
20
21 describe('ActivityReactServer', () => {
22 beforeEach(() => {
23 jest.resetModules();
24 jest.mock('react', () => require('react/react.react-server'));
25 ReactServer = require('react');
26 Activity = ReactServer.Activity;
27 ReactNoopFlightServer = require('react-noop-renderer/flight-server');
28
29 jest.resetModules();
30 __unmockReact();
31 React = require('react');
32 ReactNoopFlightClient = require('react-noop-renderer/flight-client');
33 ReactNoop = require('react-noop-renderer');
34 const InternalTestUtils = require('internal-test-utils');
35 act = InternalTestUtils.act;
36 });
37
38 afterEach(() => {
39 jest.restoreAllMocks();
40 });
41
42 it('can be rendered in React Server', async () => {
43 function App() {
44 return ReactServer.createElement(
45 Activity,
46 {mode: 'hidden'},
47 ReactServer.createElement('div', null, 'Hello, Dave!'),
48 );
49 }
50
51 const transport = ReactNoopFlightServer.render(
52 ReactServer.createElement(App, null),
53 );
54
55 await act(async () => {
56 const app = await ReactNoopFlightClient.read(transport);
57
58 ReactNoop.render(app);
59 });
60
61 expect(ReactNoop).toMatchRenderedOutput(
62 <div hidden={true}>Hello, Dave!</div>,
63 );
64 });
65 });