@@ -352,6 +352,83 @@ describe('PoPopoverComponent:', () => {
352352 expect ( fakeThis . cd . detectChanges ) . toHaveBeenCalled ( ) ;
353353 } ) ) ;
354354
355+ it ( 'open: should set widthPopover and call requestAnimationFrame when cornerAligned is true and width is undefined' , fakeAsync ( ( ) => {
356+ const fakeNativeElement = {
357+ style : { width : '' , opacity : 0 } ,
358+ scrollWidth : 250
359+ } ;
360+
361+ const fakeThis : any = {
362+ addScrollEventListener : ( ) => { } ,
363+ isHidden : true ,
364+ cornerAligned : true ,
365+ width : undefined ,
366+ widthPopover : undefined ,
367+ popoverElement : { nativeElement : fakeNativeElement } ,
368+ openPopover : { emit : ( ) => { } } ,
369+ setPopoverPosition : jasmine . createSpy ( 'setPopoverPosition' ) ,
370+ setElementsControlPosition : ( ) => { } ,
371+ setOpacity : ( ) => { } ,
372+ observeContentResize : ( ) => { } ,
373+ cd : { detectChanges : ( ) => { } }
374+ } ;
375+
376+ spyOn ( window , 'requestAnimationFrame' ) . and . callFake ( ( cb : FrameRequestCallback ) => {
377+ cb ( 0 ) ;
378+ return 0 ;
379+ } ) ;
380+
381+ component . open . call ( fakeThis ) ;
382+ tick ( 300 ) ;
383+
384+ expect ( fakeNativeElement . style . width ) . toBe ( 'auto' ) ;
385+ expect ( fakeThis . widthPopover ) . toBe ( 250 ) ;
386+ expect ( window . requestAnimationFrame ) . toHaveBeenCalled ( ) ;
387+ expect ( fakeThis . setPopoverPosition ) . toHaveBeenCalled ( ) ;
388+ } ) ) ;
389+
390+ it ( 'open: should NOT set widthPopover when cornerAligned is false' , fakeAsync ( ( ) => {
391+ const fakeThis : any = {
392+ addScrollEventListener : ( ) => { } ,
393+ isHidden : true ,
394+ cornerAligned : false ,
395+ width : undefined ,
396+ widthPopover : undefined ,
397+ openPopover : { emit : ( ) => { } } ,
398+ setPopoverPosition : ( ) => { } ,
399+ setElementsControlPosition : ( ) => { } ,
400+ setOpacity : ( ) => { } ,
401+ observeContentResize : ( ) => { } ,
402+ cd : { detectChanges : ( ) => { } }
403+ } ;
404+
405+ component . open . call ( fakeThis ) ;
406+ tick ( 300 ) ;
407+
408+ expect ( fakeThis . widthPopover ) . toBeUndefined ( ) ;
409+ } ) ) ;
410+
411+ it ( 'open: should NOT set widthPopover when width input is defined' , fakeAsync ( ( ) => {
412+ const fakeThis : any = {
413+ addScrollEventListener : ( ) => { } ,
414+ isHidden : true ,
415+ cornerAligned : true ,
416+ width : 300 ,
417+ widthPopover : undefined ,
418+ openPopover : { emit : ( ) => { } } ,
419+ setPopoverPosition : ( ) => { } ,
420+ setElementsControlPosition : ( ) => { } ,
421+ setOpacity : ( ) => { } ,
422+ observeContentResize : ( ) => { } ,
423+ cd : { detectChanges : ( ) => { } }
424+ } ;
425+
426+ component . open . call ( fakeThis ) ;
427+ tick ( 300 ) ;
428+
429+ expect ( fakeThis . widthPopover ) . toBeUndefined ( ) ;
430+ } ) ) ;
431+
355432 it ( 'open: should set clickoutListener when trigger is function' , ( ) => {
356433 const fakeListener = jasmine . createSpy ( 'listener' ) ;
357434
0 commit comments