/
githubmirror
/
angular
Обзор
Документация
Войти
/
githubmirror
/
angular
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
devtools/projects/ng-devtools-backend/src/lib/client-event-subscribers.spec.ts
73 строки
2 KB
hawkgs
refactor(devtools): reorganize backend code
20 июл 2026, 12:15
20 июл 2026, 12:15
a7ebf1c
Код
Авторство
О чём код?
/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.dev/license */ import {Events, MessageBus} from '../../../protocol'; import {subscribeToClientEvents} from './client-event-subscribers'; import {appIsAngular, appIsAngularIvy, appIsSupportedAngularVersion} from '../../../shared-utils'; import {Profiler} from './profiling/profiler'; import {NodeArray} from './directive-forest/identity-tracker/identity-tracker'; describe('ClientEventSubscriber', () => { let messageBusMock: MessageBus<Events>; let appNode: HTMLElement | null = null; beforeEach(() => { // mock isAngular et al appNode = mockAngular(); messageBusMock = jasmine.createSpyObj<MessageBus<Events>>('messageBus', [ 'on', 'once', 'emit', 'destroy', ]); }); afterEach(() => { // clearing the dom after each test if (appNode) { document.body.removeChild(appNode); appNode = null; } }); it('is it Angular ready (testing purposed)', () => { expect(appIsAngular()).withContext('isAng').toBe(true); expect(appIsSupportedAngularVersion()).withContext('appIsSupportedAngularVersion').toBe(true); expect(appIsAngularIvy()).withContext('appIsAngularIvy').toBe(true); }); it('should setup inspector', () => { subscribeToClientEvents(messageBusMock, {profiler: MockProfiler}); expect(messageBusMock.on).toHaveBeenCalledWith('inspectorStart', jasmine.any(Function)); expect(messageBusMock.on).toHaveBeenCalledWith('inspectorEnd', jasmine.any(Function)); expect(messageBusMock.on).toHaveBeenCalledWith('createHighlightOverlay', jasmine.any(Function)); expect(messageBusMock.on).toHaveBeenCalledWith('removeHighlightOverlay', jasmine.any(Function)); expect(messageBusMock.on).toHaveBeenCalledWith('createHydrationOverlay', jasmine.any(Function)); expect(messageBusMock.on).toHaveBeenCalledWith('removeHydrationOverlay', jasmine.any(Function)); }); }); function mockAngular() { const appNode = document.createElement('app'); appNode.setAttribute('ng-version', '17.0.0'); (appNode as any).__ngContext__ = true; document.body.appendChild(appNode); (window as any).ng = { getComponent: () => {}, }; return appNode; } class MockProfiler extends Profiler { override destroy(): void {} override onIndexForest(_: NodeArray, __: NodeArray): void {} }