@@ -17,16 +17,14 @@ describe('SimpleEventPlugin', function() {
17
17
var ReactDOM ;
18
18
var ReactTestUtils ;
19
19
20
- var onClick = jest . fn ( ) ;
20
+ var onClick ;
21
21
22
22
function expectClickThru ( element ) {
23
- onClick . mockClear ( ) ;
24
23
ReactTestUtils . SimulateNative . click ( ReactDOM . findDOMNode ( element ) ) ;
25
24
expect ( onClick . mock . calls . length ) . toBe ( 1 ) ;
26
25
}
27
26
28
27
function expectNoClickThru ( element ) {
29
- onClick . mockClear ( ) ;
30
28
ReactTestUtils . SimulateNative . click ( ReactDOM . findDOMNode ( element ) ) ;
31
29
expect ( onClick . mock . calls . length ) . toBe ( 0 ) ;
32
30
}
@@ -40,6 +38,8 @@ describe('SimpleEventPlugin', function() {
40
38
React = require ( 'React' ) ;
41
39
ReactDOM = require ( 'ReactDOM' ) ;
42
40
ReactTestUtils = require ( 'ReactTestUtils' ) ;
41
+
42
+ onClick = jest . fn ( ) ;
43
43
} ) ;
44
44
45
45
it ( 'A non-interactive tags click when disabled' , function ( ) {
@@ -53,7 +53,48 @@ describe('SimpleEventPlugin', function() {
53
53
) ;
54
54
var child = ReactDOM . findDOMNode ( element ) . firstChild ;
55
55
56
- onClick . mockClear ( ) ;
56
+ ReactTestUtils . SimulateNative . click ( child ) ;
57
+ expect ( onClick . mock . calls . length ) . toBe ( 1 ) ;
58
+ } ) ;
59
+
60
+ it ( 'does not register a click when clicking a child of a disabled element' , function ( ) {
61
+ var element = ReactTestUtils . renderIntoDocument (
62
+ < button onClick = { onClick } disabled = { true } > < span /> </ button >
63
+ ) ;
64
+ var child = ReactDOM . findDOMNode ( element ) . querySelector ( 'span' ) ;
65
+
66
+ ReactTestUtils . SimulateNative . click ( child ) ;
67
+ expect ( onClick . mock . calls . length ) . toBe ( 0 ) ;
68
+ } ) ;
69
+
70
+ it ( 'triggers click events for children of disabled elements' , function ( ) {
71
+ var element = ReactTestUtils . renderIntoDocument (
72
+ < button disabled = { true } > < span onClick = { onClick } /> </ button >
73
+ ) ;
74
+ var child = ReactDOM . findDOMNode ( element ) . querySelector ( 'span' ) ;
75
+
76
+ ReactTestUtils . SimulateNative . click ( child ) ;
77
+ expect ( onClick . mock . calls . length ) . toBe ( 1 ) ;
78
+ } ) ;
79
+
80
+ it ( 'triggers parent captured click events when target is a child of a disabled elements' , function ( ) {
81
+ var element = ReactTestUtils . renderIntoDocument (
82
+ < div onClickCapture = { onClick } >
83
+ < button disabled = { true } > < span /> </ button >
84
+ </ div >
85
+ ) ;
86
+ var child = ReactDOM . findDOMNode ( element ) . querySelector ( 'span' ) ;
87
+
88
+ ReactTestUtils . SimulateNative . click ( child ) ;
89
+ expect ( onClick . mock . calls . length ) . toBe ( 1 ) ;
90
+ } ) ;
91
+
92
+ it ( 'triggers captured click events for children of disabled elements' , function ( ) {
93
+ var element = ReactTestUtils . renderIntoDocument (
94
+ < button disabled = { true } > < span onClickCapture = { onClick } /> </ button >
95
+ ) ;
96
+ var child = ReactDOM . findDOMNode ( element ) . querySelector ( 'span' ) ;
97
+
57
98
ReactTestUtils . SimulateNative . click ( child ) ;
58
99
expect ( onClick . mock . calls . length ) . toBe ( 1 ) ;
59
100
} ) ;
@@ -124,10 +165,6 @@ describe('SimpleEventPlugin', function() {
124
165
describe ( 'iOS bubbling click fix' , function ( ) {
125
166
// See http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html
126
167
127
- beforeEach ( function ( ) {
128
- onClick . mockClear ( ) ;
129
- } ) ;
130
-
131
168
it ( 'does not add a local click to interactive elements' , function ( ) {
132
169
var container = document . createElement ( 'div' ) ;
133
170
0 commit comments