@@ -6,6 +6,7 @@ var Modal = require('../lib/components/Modal');
6
6
var Simulate = TestUtils . Simulate ;
7
7
var ariaAppHider = require ( '../lib/helpers/ariaAppHider' ) ;
8
8
var button = ReactDOM . button ;
9
+ var sinon = require ( 'sinon' ) ;
9
10
10
11
describe ( 'Modal' , function ( ) {
11
12
@@ -74,6 +75,7 @@ describe('Modal', function () {
74
75
equal ( props . isOpen , false ) ;
75
76
equal ( props . ariaHideApp , true ) ;
76
77
equal ( props . closeTimeoutMS , 0 ) ;
78
+ equal ( props . shouldCloseOnOverlayClick , true ) ;
77
79
ReactDOM . unmountComponentAtNode ( node ) ;
78
80
ariaAppHider . resetForTesting ( ) ;
79
81
} ) ;
@@ -102,13 +104,13 @@ describe('Modal', function () {
102
104
103
105
it ( 'supports custom className' , function ( ) {
104
106
var modal = renderModal ( { isOpen : true , className : 'myClass' } ) ;
105
- equal ( modal . portal . refs . content . className . contains ( 'myClass' ) , true ) ;
107
+ notEqual ( modal . portal . refs . content . className . indexOf ( 'myClass' ) , - 1 ) ;
106
108
unmountModal ( ) ;
107
109
} ) ;
108
110
109
111
it ( 'supports overlayClassName' , function ( ) {
110
112
var modal = renderModal ( { isOpen : true , overlayClassName : 'myOverlayClass' } ) ;
111
- equal ( modal . portal . refs . overlay . className . contains ( 'myOverlayClass' ) , true ) ;
113
+ notEqual ( modal . portal . refs . overlay . className . indexOf ( 'myOverlayClass' ) , - 1 ) ;
112
114
unmountModal ( ) ;
113
115
} ) ;
114
116
@@ -164,6 +166,55 @@ describe('Modal', function () {
164
166
unmountModal ( ) ;
165
167
} ) ;
166
168
169
+ describe ( 'should close on overlay click' , function ( ) {
170
+ afterEach ( 'Unmount modal' , function ( ) {
171
+ unmountModal ( ) ;
172
+ } ) ;
173
+
174
+ describe ( 'verify props' , function ( ) {
175
+ it ( 'verify default prop of shouldCloseOnOverlayClick' , function ( ) {
176
+ var modal = renderModal ( { isOpen : true } ) ;
177
+ equal ( modal . props . shouldCloseOnOverlayClick , true ) ;
178
+ } ) ;
179
+
180
+ it ( 'verify prop of shouldCloseOnOverlayClick' , function ( ) {
181
+ var modal = renderModal ( { isOpen : true , shouldCloseOnOverlayClick : false } ) ;
182
+ equal ( modal . props . shouldCloseOnOverlayClick , false ) ;
183
+ } ) ;
184
+ } ) ;
185
+
186
+ describe ( 'verify clicks' , function ( ) {
187
+ it ( 'verify overlay click when shouldCloseOnOverlayClick sets to false' , function ( ) {
188
+ var requestCloseCallback = sinon . spy ( ) ;
189
+ var modal = renderModal ( {
190
+ isOpen : true ,
191
+ shouldCloseOnOverlayClick : false
192
+ } ) ;
193
+ equal ( modal . props . isOpen , true ) ;
194
+ var overlay = TestUtils . scryRenderedDOMComponentsWithClass ( modal . portal , 'ReactModal__Overlay' ) ;
195
+ equal ( overlay . length , 1 ) ;
196
+ Simulate . click ( overlay [ 0 ] ) ; // click the overlay
197
+ ok ( ! requestCloseCallback . called )
198
+ } ) ;
199
+
200
+ it ( 'verify overlay click when shouldCloseOnOverlayClick sets to true' , function ( ) {
201
+ var requestCloseCallback = sinon . spy ( ) ;
202
+ var modal = renderModal ( {
203
+ isOpen : true ,
204
+ shouldCloseOnOverlayClick : true ,
205
+ onRequestClose : function ( ) {
206
+ requestCloseCallback ( ) ;
207
+ }
208
+ } ) ;
209
+ equal ( modal . props . isOpen , true ) ;
210
+ var overlay = TestUtils . scryRenderedDOMComponentsWithClass ( modal . portal , 'ReactModal__Overlay' ) ;
211
+ equal ( overlay . length , 1 ) ;
212
+ Simulate . click ( overlay [ 0 ] ) ; // click the overlay
213
+ ok ( requestCloseCallback . called )
214
+ } ) ;
215
+ } ) ;
216
+ } ) ;
217
+
167
218
//it('adds --before-close for animations', function() {
168
219
//var node = document.createElement('div');
169
220
0 commit comments