recoil
Version:
Recoil - A state management library for React
58 lines (55 loc) • 1.85 kB
Flow
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @emails oncall+recoil
* @flow strict-local
* @format
*/
;
const {
getRecoilTestFn
} = require('../../__test_utils__/Recoil_TestingUtils');
let React, useEffect, useRef, ReactDOM, act, RecoilRoot, atom, componentThatReadsAndWritesAtom, useRecoilBridgeAcrossReactRoots;
const testRecoil = getRecoilTestFn(() => {
React = require('react');
({
useEffect,
useRef
} = require('react'));
ReactDOM = require('ReactDOMLegacy_DEPRECATED');
({
act
} = require('ReactTestUtils'));
({
RecoilRoot
} = require('../../core/Recoil_RecoilRoot.react'));
atom = require('../../recoil_values/Recoil_atom');
({
componentThatReadsAndWritesAtom
} = require('../../__test_utils__/Recoil_TestingUtils'));
useRecoilBridgeAcrossReactRoots = require('../Recoil_useRecoilBridgeAcrossReactRoots');
});
testRecoil('useRecoilBridgeAcrossReactRoots - create a context bridge', async () => {
const myAtom = atom({
key: 'useRecoilBridgeAcrossReactRoots - context bridge',
default: 'DEFAULT'
});
declare function initializeState(arg0: any): any;
const [ReadWriteAtom, setAtom] = componentThatReadsAndWritesAtom(myAtom);
declare function NestedReactRoot(arg0: any): any;
const container = document.createElement('div');
act(() => {
ReactDOM.render(<RecoilRoot initializeState={initializeState}>
<ReadWriteAtom />
<NestedReactRoot>
<ReadWriteAtom />
</NestedReactRoot>
</RecoilRoot>, container);
});
expect(container.textContent).toEqual('"INITIALIZE""INITIALIZE"');
act(() => setAtom('SET'));
expect(container.textContent).toEqual('"SET""SET"');
});