main
js 75 lines 1.47 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
8 import * as React from 'react';
9 import {render} from '@testing-library/react';
10 import {expectLogsAndClear, log} from './expectLogs';
11
12 function Hello({name}) {
13 const items = [1, 2, 3].map(item => {
14 log(`recomputing ${item}`);
15 return <div key={item}>Item {item}</div>;
16 });
17 return (
18 <div>
19 Hello<b>{name}</b>
20 {items}
21 </div>
22 );
23 }
24
25 test('hello', () => {
26 const {asFragment, rerender} = render(<Hello name="World" />);
27
28 expect(asFragment()).toMatchInlineSnapshot(`
29 <DocumentFragment>
30 <div>
31 Hello
32 <b>
33 World
34 </b>
35 <div>
36 Item 1
37 </div>
38 <div>
39 Item 2
40 </div>
41 <div>
42 Item 3
43 </div>
44 </div>
45 </DocumentFragment>
46 `);
47
48 expectLogsAndClear(['recomputing 1', 'recomputing 2', 'recomputing 3']);
49
50 rerender(<Hello name="Universe" />);
51
52 expect(asFragment()).toMatchInlineSnapshot(`
53 <DocumentFragment>
54 <div>
55 Hello
56 <b>
57 Universe
58 </b>
59 <div>
60 Item 1
61 </div>
62 <div>
63 Item 2
64 </div>
65 <div>
66 Item 3
67 </div>
68 </div>
69 </DocumentFragment>
70 `);
71
72 expectLogsAndClear(
73 __FORGET__ ? [] : ['recomputing 1', 'recomputing 2', 'recomputing 3']
74 );
75 });