From 674bcf0d4bd5bd17cba373476ea7e972b909fa22 Mon Sep 17 00:00:00 2001 From: Galina Edinakova Date: Fri, 9 May 2025 11:11:47 +0300 Subject: [PATCH 1/3] test(Tooltip): Adding a test for destroying the target. --- .../tooltip/tooltip.directive.spec.ts | 15 +++++++++++++- .../lib/test-utils/tooltip-components.spec.ts | 20 +++++++++++-------- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/projects/igniteui-angular/src/lib/directives/tooltip/tooltip.directive.spec.ts b/projects/igniteui-angular/src/lib/directives/tooltip/tooltip.directive.spec.ts index b4305593956..a153bdc6ec6 100644 --- a/projects/igniteui-angular/src/lib/directives/tooltip/tooltip.directive.spec.ts +++ b/projects/igniteui-angular/src/lib/directives/tooltip/tooltip.directive.spec.ts @@ -271,6 +271,19 @@ describe('IgxTooltip', () => { verifyTooltipVisibility(tooltipNativeElement, tooltipTarget, false); })); + it('IgxTooltip is hidden when its target is destroyed', fakeAsync(() => { + hoverElement(button); + flush(); + + verifyTooltipVisibility(tooltipNativeElement, tooltipTarget, true); + debugger + fix.componentInstance.showButton = false; + fix.detectChanges(); + flush(); + + verifyTooltipVisibility(tooltipNativeElement, tooltipTarget, false); + })); + describe('Tooltip events', () => { // configureTestSuite(); it('should emit the proper events when hovering/unhovering target', fakeAsync(() => { @@ -596,7 +609,7 @@ const touchElement = (element) => element.nativeElement.dispatchEvent(new TouchE const verifyTooltipVisibility = (tooltipNativeElement, tooltipTarget, shouldBeVisible: boolean) => { expect(tooltipNativeElement.classList.contains(TOOLTIP_CLASS)).toBe(shouldBeVisible); expect(tooltipNativeElement.classList.contains(HIDDEN_TOOLTIP_CLASS)).not.toBe(shouldBeVisible); - expect(tooltipTarget.tooltipHidden).not.toBe(shouldBeVisible); + expect(tooltipTarget?.tooltipHidden).not.toBe(shouldBeVisible); }; const verifyTooltipPosition = (tooltipNativeElement, actualTarget, shouldBeAligned: boolean) => { diff --git a/projects/igniteui-angular/src/lib/test-utils/tooltip-components.spec.ts b/projects/igniteui-angular/src/lib/test-utils/tooltip-components.spec.ts index c70a0776ffc..f721b06d0e7 100644 --- a/projects/igniteui-angular/src/lib/test-utils/tooltip-components.spec.ts +++ b/projects/igniteui-angular/src/lib/test-utils/tooltip-components.spec.ts @@ -6,11 +6,14 @@ import { IgxToggleActionDirective, IgxToggleDirective } from '../directives/togg @Component({ template: `
dummy div for touch tests
- + + @if (showButton) { + + }
Hello, I am a tooltip!
@@ -23,6 +26,7 @@ export class IgxTooltipSingleTargetComponent { @ViewChild(IgxTooltipTargetDirective, { static: true }) public tooltipTarget: IgxTooltipTargetDirective; public cancelShowing = false; public cancelHiding = false; + public showButton = true; public showing(args: ITooltipShowEventArgs) { if (this.cancelShowing) { @@ -39,9 +43,9 @@ export class IgxTooltipSingleTargetComponent { @Component({ template: ` - + +