Skip to content

Commit ca169d3

Browse files
test(popover): adiciona testes para branch cornerAligned no método open
Adiciona testes unitários cobrindo o trecho de código que calcula a largura dinâmica do popover quando cornerAligned é true e width não é definido via input. Cobre o requestAnimationFrame e a atribuição de widthPopover. Fixes DTHFUI-12554 Co-Authored-By: arthur.polidorio <arthur.polidorio@totvs.com.br>
1 parent 0503566 commit ca169d3

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

projects/ui/src/lib/components/po-popover/po-popover.component.spec.ts

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)