99
1010'use strict' ;
1111
12- let EventPluginGetListener ;
13- let EventPluginRegistry ;
1412let React ;
1513let ReactDOM ;
16- let ReactDOMComponentTree ;
17- let listenToEvent ;
18- let ReactDOMEventListener ;
1914let ReactTestUtils ;
20- let ReactFeatureFlags ;
2115
2216let idCallOrder ;
2317const recordID = function ( id ) {
@@ -33,50 +27,27 @@ const recordIDAndReturnFalse = function(id, event) {
3327} ;
3428const LISTENER = jest . fn ( ) ;
3529const ON_CLICK_KEY = 'onClick' ;
36- const ON_CHANGE_KEY = 'onChange' ;
3730const ON_MOUSE_ENTER_KEY = 'onMouseEnter' ;
3831
3932let GRANDPARENT ;
4033let PARENT ;
4134let CHILD ;
4235let BUTTON ;
4336
44- let getListener ;
4537let putListener ;
4638let deleteAllListeners ;
4739
4840let container ;
4941
50- function registerSimpleTestHandler ( ) {
51- putListener ( CHILD , ON_CLICK_KEY , LISTENER ) ;
52- const listener = getListener ( CHILD , ON_CLICK_KEY ) ;
53- expect ( listener ) . toEqual ( LISTENER ) ;
54- return getListener ( CHILD , ON_CLICK_KEY ) ;
55- }
56-
57- // We should probably remove this file at some point, it's just full of
58- // internal API usage.
42+ // This test is written in a bizarre way because it was previously using internals.
43+ // It should probably be rewritten but we're keeping it for some extra coverage.
5944describe ( 'ReactBrowserEventEmitter' , ( ) => {
6045 beforeEach ( ( ) => {
6146 jest . resetModules ( ) ;
6247 LISTENER . mockClear ( ) ;
6348
64- ReactFeatureFlags = require ( 'shared/ReactFeatureFlags' ) ;
65- EventPluginGetListener = require ( 'react-dom/src/events/getListener' )
66- . default ;
67- EventPluginRegistry = require ( 'legacy-events/EventPluginRegistry' ) ;
6849 React = require ( 'react' ) ;
6950 ReactDOM = require ( 'react-dom' ) ;
70- ReactDOMComponentTree = require ( '../client/ReactDOMComponentTree' ) ;
71- if ( ReactFeatureFlags . enableModernEventSystem ) {
72- listenToEvent = require ( '../events/DOMModernPluginEventSystem' )
73- . listenToEvent ;
74- } else {
75- listenToEvent = require ( '../events/DOMLegacyEventPluginSystem' )
76- . legacyListenToEvent ;
77- }
78-
79- ReactDOMEventListener = require ( '../events/ReactDOMEventListener' ) ;
8051 ReactTestUtils = require ( 'react-dom/test-utils' ) ;
8152
8253 container = document . createElement ( 'div' ) ;
@@ -111,10 +82,6 @@ describe('ReactBrowserEventEmitter', () => {
11182
11283 renderTree ( ) ;
11384
114- getListener = function ( node , eventName ) {
115- const inst = ReactDOMComponentTree . getInstanceFromNode ( node ) ;
116- return EventPluginGetListener ( inst , eventName ) ;
117- } ;
11885 putListener = function ( node , eventName , listener ) {
11986 switch ( node ) {
12087 case CHILD :
@@ -159,47 +126,6 @@ describe('ReactBrowserEventEmitter', () => {
159126 container = null ;
160127 } ) ;
161128
162- it ( 'should store a listener correctly' , ( ) => {
163- registerSimpleTestHandler ( ) ;
164- const listener = getListener ( CHILD , ON_CLICK_KEY ) ;
165- expect ( listener ) . toBe ( LISTENER ) ;
166- } ) ;
167-
168- it ( 'should retrieve a listener correctly' , ( ) => {
169- registerSimpleTestHandler ( ) ;
170- const listener = getListener ( CHILD , ON_CLICK_KEY ) ;
171- expect ( listener ) . toEqual ( LISTENER ) ;
172- } ) ;
173-
174- it ( 'should not retrieve listeners on a disabled interactive element' , ( ) => {
175- putListener ( BUTTON , ON_MOUSE_ENTER_KEY , recordID . bind ( null , BUTTON ) ) ;
176- const listener = getListener ( BUTTON , ON_MOUSE_ENTER_KEY ) ;
177- expect ( listener ) . toBe ( null ) ;
178- } ) ;
179-
180- it ( 'should clear all handlers when asked to' , ( ) => {
181- registerSimpleTestHandler ( ) ;
182- deleteAllListeners ( CHILD ) ;
183- const listener = getListener ( CHILD , ON_CLICK_KEY ) ;
184- expect ( listener ) . toBe ( undefined ) ;
185- } ) ;
186-
187- it ( 'should invoke a simple handler registered on a node' , ( ) => {
188- registerSimpleTestHandler ( ) ;
189- CHILD . click ( ) ;
190- expect ( LISTENER ) . toHaveBeenCalledTimes ( 1 ) ;
191- } ) ;
192-
193- it ( 'should not invoke handlers if ReactDOMEventListener is disabled' , ( ) => {
194- registerSimpleTestHandler ( ) ;
195- ReactDOMEventListener . setEnabled ( false ) ;
196- CHILD . click ( ) ;
197- expect ( LISTENER ) . toHaveBeenCalledTimes ( 0 ) ;
198- ReactDOMEventListener . setEnabled ( true ) ;
199- CHILD . click ( ) ;
200- expect ( LISTENER ) . toHaveBeenCalledTimes ( 1 ) ;
201- } ) ;
202-
203129 it ( 'should bubble simply' , ( ) => {
204130 putListener ( CHILD , ON_CLICK_KEY , recordID . bind ( null , CHILD ) ) ;
205131 putListener ( PARENT , ON_CLICK_KEY , recordID . bind ( null , PARENT ) ) ;
@@ -356,41 +282,4 @@ describe('ReactBrowserEventEmitter', () => {
356282 expect ( idCallOrder . length ) . toBe ( 1 ) ;
357283 expect ( idCallOrder [ 0 ] ) . toBe ( CHILD ) ;
358284 } ) ;
359-
360- it ( 'should listen to events only once' , ( ) => {
361- spyOnDevAndProd ( EventTarget . prototype , 'addEventListener' ) ;
362- listenToEvent ( ON_CLICK_KEY , document ) ;
363- listenToEvent ( ON_CLICK_KEY , document ) ;
364- expect ( EventTarget . prototype . addEventListener ) . toHaveBeenCalledTimes ( 1 ) ;
365- } ) ;
366-
367- it ( 'should work with event plugins without dependencies' , ( ) => {
368- spyOnDevAndProd ( EventTarget . prototype , 'addEventListener' ) ;
369-
370- listenToEvent ( ON_CLICK_KEY , document ) ;
371-
372- expect ( EventTarget . prototype . addEventListener . calls . argsFor ( 0 ) [ 0 ] ) . toBe (
373- 'click' ,
374- ) ;
375- } ) ;
376-
377- it ( 'should work with event plugins with dependencies' , ( ) => {
378- spyOnDevAndProd ( EventTarget . prototype , 'addEventListener' ) ;
379-
380- listenToEvent ( ON_CHANGE_KEY , document ) ;
381-
382- const setEventListeners = [ ] ;
383- const listenCalls = EventTarget . prototype . addEventListener . calls . allArgs ( ) ;
384- for ( let i = 0 ; i < listenCalls . length ; i ++ ) {
385- setEventListeners . push ( listenCalls [ i ] [ 1 ] ) ;
386- }
387-
388- const module = EventPluginRegistry . registrationNameModules [ ON_CHANGE_KEY ] ;
389- const dependencies = module . eventTypes . change . dependencies ;
390- expect ( setEventListeners . length ) . toEqual ( dependencies . length ) ;
391-
392- for ( let i = 0 ; i < setEventListeners . length ; i ++ ) {
393- expect ( dependencies . indexOf ( setEventListeners [ i ] ) ) . toBeTruthy ( ) ;
394- }
395- } ) ;
396285} ) ;
0 commit comments