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. 'use strict';
    
  9. 
    
  10. describe('SyntheticFocusEvent', () => {
    
  11.   let React;
    
  12.   let ReactDOM;
    
  13.   let container;
    
  14. 
    
  15.   beforeEach(() => {
    
  16.     jest.resetModules();
    
  17.     React = require('react');
    
  18.     ReactDOM = require('react-dom');
    
  19. 
    
  20.     container = document.createElement('div');
    
  21.     document.body.appendChild(container);
    
  22.   });
    
  23. 
    
  24.   afterEach(() => {
    
  25.     document.body.removeChild(container);
    
  26.     container = null;
    
  27.   });
    
  28. 
    
  29.   test('onFocus events have the focus type', () => {
    
  30.     const log = [];
    
  31.     ReactDOM.render(
    
  32.       <button
    
  33.         onFocus={event => log.push(`onFocus: ${event.type}`)}
    
  34.         onFocusCapture={event => log.push(`onFocusCapture: ${event.type}`)}
    
  35.       />,
    
  36.       container,
    
  37.     );
    
  38.     const button = container.querySelector('button');
    
  39. 
    
  40.     button.dispatchEvent(
    
  41.       new FocusEvent('focusin', {
    
  42.         bubbles: true,
    
  43.         cancelable: false,
    
  44.       }),
    
  45.     );
    
  46. 
    
  47.     expect(log).toEqual(['onFocusCapture: focus', 'onFocus: focus']);
    
  48.   });
    
  49. 
    
  50.   test('onBlur events have the blur type', () => {
    
  51.     const log = [];
    
  52.     ReactDOM.render(
    
  53.       <button
    
  54.         onBlur={event => log.push(`onBlur: ${event.type}`)}
    
  55.         onBlurCapture={event => log.push(`onBlurCapture: ${event.type}`)}
    
  56.       />,
    
  57.       container,
    
  58.     );
    
  59.     const button = container.querySelector('button');
    
  60. 
    
  61.     button.dispatchEvent(
    
  62.       new FocusEvent('focusout', {
    
  63.         bubbles: true,
    
  64.         cancelable: false,
    
  65.       }),
    
  66.     );
    
  67. 
    
  68.     expect(log).toEqual(['onBlurCapture: blur', 'onBlur: blur']);
    
  69.   });
    
  70. });