55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
import '@angular/compiler';
|
|
import { signal } from '@angular/core';
|
|
import { TestBed } from '@angular/core/testing';
|
|
import { afterEach, describe, expect, it } from 'vitest';
|
|
|
|
import { GlobalLoadingService } from '../../../core/services/global-loading/global-loading.service';
|
|
import { GlobalLoadingComponent } from './global-loading.component';
|
|
|
|
describe('GlobalLoadingComponent', () => {
|
|
afterEach(() => {
|
|
TestBed.resetTestingModule();
|
|
});
|
|
|
|
it('renders an accessible overlay while the app is loading', async () => {
|
|
const loadingState = signal(true);
|
|
|
|
await TestBed.configureTestingModule({
|
|
imports: [GlobalLoadingComponent],
|
|
providers: [
|
|
{
|
|
provide: GlobalLoadingService,
|
|
useValue: { isLoading: loadingState.asReadonly() }
|
|
}
|
|
]
|
|
}).compileComponents();
|
|
|
|
const fixture = TestBed.createComponent(GlobalLoadingComponent);
|
|
fixture.detectChanges();
|
|
|
|
const overlay = fixture.nativeElement.querySelector('.global-loading');
|
|
expect(overlay).not.toBeNull();
|
|
expect(overlay.getAttribute('role')).toBe('status');
|
|
expect(overlay.getAttribute('aria-label')).toBe('Cargando');
|
|
});
|
|
|
|
it('does not render the overlay while the app is idle', async () => {
|
|
const loadingState = signal(false);
|
|
|
|
await TestBed.configureTestingModule({
|
|
imports: [GlobalLoadingComponent],
|
|
providers: [
|
|
{
|
|
provide: GlobalLoadingService,
|
|
useValue: { isLoading: loadingState.asReadonly() }
|
|
}
|
|
]
|
|
}).compileComponents();
|
|
|
|
const fixture = TestBed.createComponent(GlobalLoadingComponent);
|
|
fixture.detectChanges();
|
|
|
|
expect(fixture.nativeElement.querySelector('.global-loading')).toBeNull();
|
|
});
|
|
});
|