@@ -16,10 +16,10 @@ describe('Popover', () => {
1616 container = document . createElement ( 'div' ) ;
1717 element . innerHTML = '<p id="outerTarget">This is the popover <span id="innerTarget">target</span>.</p>' ;
1818 container . setAttribute ( 'id' , 'container' ) ;
19- outerTarget = document . getElementById ( 'outerTarget' ) ;
20- innerTarget = document . getElementById ( 'innerTarget' ) ;
2119 element . appendChild ( container ) ;
2220 document . body . appendChild ( element ) ;
21+ outerTarget = document . getElementById ( 'outerTarget' ) ;
22+ innerTarget = document . getElementById ( 'innerTarget' ) ;
2323 isOpen = false ;
2424 toggle = ( ) => { isOpen = ! isOpen ; } ;
2525 placement = 'top' ;
@@ -221,7 +221,7 @@ describe('Popover', () => {
221221 wrapper . detach ( ) ;
222222 } ) ;
223223
224- it ( 'should NOT handle inner target clicks' , ( ) => {
224+ it ( 'should NOT handle inner target clicks when isOpen is false (user is responsible) ' , ( ) => {
225225 const wrapper = mount (
226226 < Popover target = "innerTarget" isOpen = { isOpen } toggle = { toggle } >
227227 Popover Content
@@ -238,6 +238,42 @@ describe('Popover', () => {
238238 wrapper . detach ( ) ;
239239 } ) ;
240240
241+ it ( 'should NOT handle inner target clicks when isOpen is true (user is responsible)' , ( ) => {
242+ isOpen = true ;
243+ const wrapper = mount (
244+ < Popover target = "innerTarget" isOpen = { isOpen } toggle = { toggle } >
245+ Popover Content
246+ </ Popover > ,
247+ { attachTo : container }
248+ ) ;
249+ const instance = wrapper . instance ( ) ;
250+
251+ expect ( isOpen ) . toBe ( true ) ;
252+ instance . handleDocumentClick ( { target : innerTarget } ) ;
253+ jest . runTimersToTime ( 0 ) ; // toggle is still async
254+ expect ( isOpen ) . toBe ( true ) ;
255+
256+ wrapper . detach ( ) ;
257+ } ) ;
258+
259+ it ( 'should NOT handle popover target clicks' , ( ) => {
260+ isOpen = true ;
261+ const wrapper = mount (
262+ < Popover target = "innerTarget" isOpen = { isOpen } toggle = { toggle } >
263+ Popover Content
264+ </ Popover > ,
265+ { attachTo : container }
266+ ) ;
267+ const instance = wrapper . instance ( ) ;
268+
269+ expect ( isOpen ) . toBe ( true ) ;
270+ instance . handleDocumentClick ( { target : instance . _popover } ) ;
271+ jest . runTimersToTime ( 0 ) ; // toggle is still async
272+ expect ( isOpen ) . toBe ( true ) ;
273+
274+ wrapper . detach ( ) ;
275+ } ) ;
276+
241277 it ( 'should not do anything when document click outside of target' , ( ) => {
242278 const wrapper = mount (
243279 < Popover target = "innerTarget" isOpen = { isOpen } toggle = { toggle } >
0 commit comments