-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest-setup.ts
More file actions
81 lines (72 loc) · 2.35 KB
/
Copy pathtest-setup.ts
File metadata and controls
81 lines (72 loc) · 2.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import '@angular/compiler';
import '@testing-library/jest-dom';
import { vi } from 'vitest';
// Initialize Angular TestBed with zoneless change detection
import { getTestBed } from '@angular/core/testing';
import { NgModule, provideZonelessChangeDetection } from '@angular/core';
import { BrowserTestingModule, platformBrowserTesting } from '@angular/platform-browser/testing';
import { provideEtyma } from '@etyma/angular';
import { appI18n } from './src/app/i18n/i18n';
@NgModule({
providers: [provideZonelessChangeDetection(), provideEtyma(appI18n)],
})
class ZonelessTestModule {}
getTestBed().initTestEnvironment(
[BrowserTestingModule, ZonelessTestModule],
platformBrowserTesting()
);
// Mock matchMedia for tests
Object.defineProperty(window, 'matchMedia', {
writable: true,
value: vi.fn().mockImplementation((query: string) => ({
matches: false,
media: query,
onchange: null,
addListener: vi.fn(),
removeListener: vi.fn(),
addEventListener: vi.fn(),
removeEventListener: vi.fn(),
dispatchEvent: vi.fn(),
})),
});
// Mock ResizeObserver
class ResizeObserverMock {
observe() {}
unobserve() {}
disconnect() {}
}
Object.defineProperty(window, 'ResizeObserver', {
writable: true,
value: ResizeObserverMock,
});
// Mock IntersectionObserver — jsdom does not implement it, and scroll-reveal directives
// construct one during afterNextRender. Without this every render that mounts one logs a
// ReferenceError to stderr. Specs that assert on observation stub their own richer version.
class IntersectionObserverMock {
readonly root = null;
readonly rootMargin = '';
readonly thresholds: readonly number[] = [];
constructor(_callback: IntersectionObserverCallback, _options?: IntersectionObserverInit) {}
observe() {}
unobserve() {}
disconnect() {}
takeRecords(): IntersectionObserverEntry[] {
return [];
}
}
Object.defineProperty(window, 'IntersectionObserver', {
writable: true,
configurable: true,
value: IntersectionObserverMock,
});
Object.defineProperty(globalThis, 'IntersectionObserver', {
writable: true,
configurable: true,
value: IntersectionObserverMock,
});
// Mock Element.prototype.getAnimations for jsdom (used by ng-primitives overlay animations)
Object.defineProperty(Element.prototype, 'getAnimations', {
writable: true,
configurable: true,
value: vi.fn().mockReturnValue([]),
});