import {getVersionedRenderImplementation} from './utils';
describe('CompilerIntegration', () => {
global.IS_REACT_ACT_ENVIRONMENT = true;
let React;
let act;
let useMemoCache;
beforeEach(() => {
React = require('react');
require('react-dom');
require('react-dom/client');
useMemoCache = require('react/compiler-runtime').c;
const utils = require('./utils');
act = utils.act;
});
afterEach(() => {
jest.restoreAllMocks();
});
const {render} = getVersionedRenderImplementation();
it('By default, component display names should not have Forget prefix', () => {
const hook = global.__REACT_DEVTOOLS_GLOBAL_HOOK__;
const reactDOMFiberRendererInterface = hook.rendererInterfaces.get(1);
expect(reactDOMFiberRendererInterface).not.toBeFalsy();
const Foo = () => {
const [val, setVal] = React.useState(null);
return (
<div>
<Bar />
</div>
);
};
const Bar = () => <div>Hi!</div>;
act(() => render(<Foo />));
expect(
reactDOMFiberRendererInterface
.getDisplayNameForElementID(2)
.indexOf('Forget'),
).toBe(-1);
expect(
reactDOMFiberRendererInterface
.getDisplayNameForElementID(3)
.indexOf('Forget'),
).toBe(-1);
});
it('If useMemoCache used, the corresponding displayName for a component should have Forget prefix', () => {
const hook = global.__REACT_DEVTOOLS_GLOBAL_HOOK__;
const reactDOMFiberRendererInterface = hook.rendererInterfaces.get(1);
expect(reactDOMFiberRendererInterface).not.toBeFalsy();
const Foo = () => {
const $ = useMemoCache(1);
const [val, setVal] = React.useState(null);
return (
<div>
<Bar />
</div>
);
};
const Bar = () => <div>Hi!</div>;
act(() => render(<Foo />));
expect(
reactDOMFiberRendererInterface
.getDisplayNameForElementID(2)
.indexOf('Forget'),
).toBe(0);
expect(
reactDOMFiberRendererInterface
.getDisplayNameForElementID(3)
.indexOf('Forget'),
).toBe(-1);
});
});