Skip to content

Commit 69ac546

Browse files
committed
feat(tooltip): test for target defined before toggle action on host
1 parent 5a70555 commit 69ac546

File tree

2 files changed

+51
-2
lines changed

2 files changed

+51
-2
lines changed

projects/igniteui-angular/src/lib/directives/tooltip/tooltip.directive.spec.ts

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { fakeAsync, TestBed, tick, flush, waitForAsync } from '@angular/core/testing';
22
import { By } from '@angular/platform-browser';
33
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
4-
import { IgxTooltipSingleTargetComponent, IgxTooltipMultipleTargetsComponent, IgxTooltipPlainStringComponent } from '../../test-utils/tooltip-components.spec';
4+
import { IgxTooltipSingleTargetComponent, IgxTooltipMultipleTargetsComponent, IgxTooltipPlainStringComponent, IgxTooltipWithToggleActionComponent } from '../../test-utils/tooltip-components.spec';
55
import { UIInteractions } from '../../test-utils/ui-interactions.spec';
66
import { configureTestSuite } from '../../test-utils/configure-suite';
77
import { HorizontalAlignment, VerticalAlignment, AutoPositionStrategy } from '../../services/public_api';
@@ -24,7 +24,8 @@ describe('IgxTooltip', () => {
2424
NoopAnimationsModule,
2525
IgxTooltipSingleTargetComponent,
2626
IgxTooltipMultipleTargetsComponent,
27-
IgxTooltipPlainStringComponent
27+
IgxTooltipPlainStringComponent,
28+
IgxTooltipWithToggleActionComponent
2829
]
2930
}).compileComponents();
3031
UIInteractions.clearOverlay();
@@ -554,6 +555,36 @@ describe('IgxTooltip', () => {
554555
verifyTooltipPosition(tooltipNativeElement, buttonOne, false);
555556
}));
556557
});
558+
559+
describe('Tooltip integration', () => {
560+
beforeEach(waitForAsync(() => {
561+
fix = TestBed.createComponent(IgxTooltipWithToggleActionComponent);
562+
fix.detectChanges();
563+
tooltipNativeElement = fix.debugElement.query(By.directive(IgxTooltipDirective)).nativeElement;
564+
tooltipTarget = fix.componentInstance.tooltipTarget as IgxTooltipTargetDirective;
565+
button = fix.debugElement.query(By.directive(IgxTooltipTargetDirective));
566+
}));
567+
568+
it('Correctly sets tooltip target when defined before igxToggleAction directive on same host - issue #14196', fakeAsync(() => {
569+
expect(tooltipTarget.target.element).toBe(tooltipNativeElement);
570+
expect(fix.componentInstance.toggleDir.collapsed).toBe(true);
571+
572+
hoverElement(button);
573+
flush();
574+
575+
verifyTooltipVisibility(tooltipNativeElement, tooltipTarget, true);
576+
577+
UIInteractions.simulateClickEvent(button.nativeElement);
578+
fix.detectChanges();
579+
580+
verifyTooltipVisibility(tooltipNativeElement, tooltipTarget, false);
581+
582+
UIInteractions.simulateClickEvent(button.nativeElement);
583+
fix.detectChanges();
584+
585+
expect(fix.componentInstance.toggleDir.collapsed).toBe(false);
586+
}));
587+
});
557588
});
558589

559590
const hoverElement = (element) => element.nativeElement.dispatchEvent(new MouseEvent('mouseenter'));

projects/igniteui-angular/src/lib/test-utils/tooltip-components.spec.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Component, ViewChild } from '@angular/core';
22
import { IgxTooltipDirective } from '../directives/tooltip/tooltip.directive';
33
import { ITooltipHideEventArgs, ITooltipShowEventArgs, IgxTooltipTargetDirective } from '../directives/tooltip/tooltip-target.directive';
4+
import { IgxToggleActionDirective, IgxToggleDirective } from '../directives/toggle/toggle.directive';
45

56
@Component({
67
template: `
@@ -72,3 +73,20 @@ export class IgxTooltipMultipleTargetsComponent {
7273
export class IgxTooltipPlainStringComponent {
7374
@ViewChild(IgxTooltipTargetDirective, { static: true }) public tooltipTarget: IgxTooltipTargetDirective;
7475
}
76+
77+
@Component({
78+
template: `
79+
<button [igxTooltipTarget]="tooltipRef" [igxToggleAction]="toggleDiv">
80+
Options
81+
</button>
82+
<div #toggleDiv="toggle" class="toggle-content" igxToggle>Toggle content</div>
83+
<div #tooltipRef="tooltip" igxTooltip>Test</div>
84+
`,
85+
standalone: true,
86+
imports: [IgxTooltipDirective, IgxTooltipTargetDirective, IgxToggleActionDirective, IgxToggleDirective]
87+
})
88+
export class IgxTooltipWithToggleActionComponent {
89+
@ViewChild(IgxTooltipDirective, { static: true }) public tooltip: IgxTooltipDirective;
90+
@ViewChild(IgxTooltipTargetDirective, { static: true }) public tooltipTarget: IgxTooltipTargetDirective;
91+
@ViewChild(IgxToggleDirective, { static: true }) public toggleDir: IgxToggleDirective;
92+
}

0 commit comments

Comments
 (0)