Home / File/ ReactClassComponentPropResolutionFizz-test.js — react Source File

ReactClassComponentPropResolutionFizz-test.js — react Source File

Architecture documentation for ReactClassComponentPropResolutionFizz-test.js, a javascript file in the react codebase. 4 imports, 0 dependents.

File javascript BabelCompiler Validation 4 imports 1 classes

Entity Profile

Dependency Diagram

graph LR
  57d042c3_03d5_3da4_d068_60e598cdee8c["ReactClassComponentPropResolutionFizz-test.js"]
  7c063c03_f497_41b6_7547_aff9bc8a9af7["FizzTestUtils.js"]
  57d042c3_03d5_3da4_d068_60e598cdee8c --> 7c063c03_f497_41b6_7547_aff9bc8a9af7
  1ef1d603_31d5_1714_d957_3868b001227f["insertNodesAndExecuteScripts"]
  57d042c3_03d5_3da4_d068_60e598cdee8c --> 1ef1d603_31d5_1714_d957_3868b001227f
  b4b4ffa5_162b_c949_ece9_cc2ed4d878d7["patchMessageChannel.js"]
  57d042c3_03d5_3da4_d068_60e598cdee8c --> b4b4ffa5_162b_c949_ece9_cc2ed4d878d7
  5a4bf3d5_e4a3_b336_6db6_6c30351e37f2["patchMessageChannel"]
  57d042c3_03d5_3da4_d068_60e598cdee8c --> 5a4bf3d5_e4a3_b336_6db6_6c30351e37f2
  style 57d042c3_03d5_3da4_d068_60e598cdee8c fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

/**
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @emails react-core
 */

'use strict';

import {insertNodesAndExecuteScripts} from '../test-utils/FizzTestUtils';
import {patchMessageChannel} from '../../../../scripts/jest/patchMessageChannel';

// Polyfills for test environment
global.ReadableStream =
  require('web-streams-polyfill/ponyfill/es6').ReadableStream;
global.TextEncoder = require('util').TextEncoder;

let React;
let ReactDOMServer;
let Scheduler;
let assertLog;
let container;
let serverAct;

describe('ReactClassComponentPropResolutionFizz', () => {
  beforeEach(() => {
    jest.resetModules();
    Scheduler = require('scheduler');
    patchMessageChannel();

    React = require('react');
    ReactDOMServer = require('react-dom/server.browser');
    assertLog = require('internal-test-utils').assertLog;
    serverAct = require('internal-test-utils').serverAct;
    container = document.createElement('div');
    document.body.appendChild(container);
  });

  afterEach(() => {
    document.body.removeChild(container);
  });

  async function readIntoContainer(stream) {
    const reader = stream.getReader();
    let result = '';
    while (true) {
      const {done, value} = await reader.read();
      if (done) {
        break;
      }
      result += Buffer.from(value).toString('utf8');
    }
    const temp = document.createElement('div');
    temp.innerHTML = result;
    insertNodesAndExecuteScripts(temp, container, null);
  }

  function Text({text}) {
    Scheduler.log(text);
    return text;
  }

  it('resolves ref and default props before calling lifecycle methods', async () => {
    function getPropKeys(props) {
      return Object.keys(props).join(', ');
    }

    class Component extends React.Component {
      constructor(props) {
        super(props);
        Scheduler.log('constructor: ' + getPropKeys(props));
      }
      UNSAFE_componentWillMount() {
        Scheduler.log('componentWillMount: ' + getPropKeys(this.props));
      }
      render() {
        return <Text text={'render: ' + getPropKeys(this.props)} />;
      }
    }

    Component.defaultProps = {
      default: 'yo',
    };

    // `ref` should never appear as a prop. `default` always should.

    const ref = React.createRef();
    const stream = await serverAct(() =>
      ReactDOMServer.renderToReadableStream(<Component text="Yay" ref={ref} />),
    );
    await readIntoContainer(stream);

    assertLog([
      'constructor: text, default',
      'componentWillMount: text, default',
      'render: text, default',
    ]);
  });
});

Domain

Subdomains

Classes

Frequently Asked Questions

What does ReactClassComponentPropResolutionFizz-test.js do?
ReactClassComponentPropResolutionFizz-test.js is a source file in the react codebase, written in javascript. It belongs to the BabelCompiler domain, Validation subdomain.
What does ReactClassComponentPropResolutionFizz-test.js depend on?
ReactClassComponentPropResolutionFizz-test.js imports 4 module(s): FizzTestUtils.js, insertNodesAndExecuteScripts, patchMessageChannel, patchMessageChannel.js.
Where is ReactClassComponentPropResolutionFizz-test.js in the architecture?
ReactClassComponentPropResolutionFizz-test.js is located at packages/react-dom/src/__tests__/ReactClassComponentPropResolutionFizz-test.js (domain: BabelCompiler, subdomain: Validation, directory: packages/react-dom/src/__tests__).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free