import '@angular/compiler';
import 'zone.js';
import 'zone.js/testing';
import { TestBed, ComponentFixture } from '@angular/core/testing';
import { Component } from '@angular/core';
import {
BrowserDynamicTestingModule,
platformBrowserDynamicTesting,
} from '@angular/platform-browser-dynamic/testing';
import { TooltipDirective } from './tooltip.directive';
try {
TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());
} catch {
// already initialized
}
@Component({
standalone: true,
imports: [TooltipDirective],
template: ` `,
})
class TestHostComponent {}
describe('TooltipDirective', () => {
let fixture: ComponentFixture;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [TestHostComponent],
}).compileComponents();
fixture = TestBed.createComponent(TestHostComponent);
fixture.detectChanges();
});
it('should apply tooltip aria attribute to host element', () => {
const button: HTMLButtonElement = fixture.nativeElement.querySelector('button');
expect(button.getAttribute('aria-describedby')).toBeTruthy();
});
it('should render tooltip DOM node', () => {
const tooltipEl = document.querySelector('.mv-tooltip');
expect(tooltipEl).toBeTruthy();
expect(tooltipEl?.textContent?.trim()).toBe('Tooltip text');
});
it('should append bottom placement class', () => {
const tooltipEl = document.querySelector('.mv-tooltip');
expect(tooltipEl?.classList.contains('mv-tooltip--bottom')).toBe(true);
});
});