From 4fcff0d03b724b6573fec9ff087ae089740a8675 Mon Sep 17 00:00:00 2001 From: Bastien Caudan Date: Fri, 4 Jun 2021 16:35:03 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20avoid=20to=20execute=20view=20te?= =?UTF-8?q?sts=20twice?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/trackViewMetrics.spec.ts | 3 +- .../view/trackViews.spec.ts | 50 +------------------ packages/rum-core/test/specHelper.ts | 49 +++++++++++++++++- 3 files changed, 51 insertions(+), 51 deletions(-) diff --git a/packages/rum-core/src/domain/rumEventsCollection/view/trackViewMetrics.spec.ts b/packages/rum-core/src/domain/rumEventsCollection/view/trackViewMetrics.spec.ts index 054f3b2390..fe90c46625 100644 --- a/packages/rum-core/src/domain/rumEventsCollection/view/trackViewMetrics.spec.ts +++ b/packages/rum-core/src/domain/rumEventsCollection/view/trackViewMetrics.spec.ts @@ -1,6 +1,6 @@ import { Context, RelativeTime, Duration } from '@datadog/browser-core' import { LifeCycleEventType, RumEvent } from '@datadog/browser-rum-core' -import { TestSetupBuilder, setup } from '../../../../test/specHelper' +import { TestSetupBuilder, setup, setupViewTest, ViewTest } from '../../../../test/specHelper' import { RumPerformanceNavigationTiming } from '../../../browser/performanceCollection' import { RumEventType } from '../../../rawRumEvent.types' import { @@ -9,7 +9,6 @@ import { PAGE_ACTIVITY_VALIDATION_DELAY, } from '../../trackPageActivities' import { THROTTLE_VIEW_UPDATE_PERIOD } from './trackViews' -import { setupViewTest, ViewTest } from './trackViews.spec' const BEFORE_PAGE_ACTIVITY_VALIDATION_DELAY = (PAGE_ACTIVITY_VALIDATION_DELAY * 0.8) as Duration diff --git a/packages/rum-core/src/domain/rumEventsCollection/view/trackViews.spec.ts b/packages/rum-core/src/domain/rumEventsCollection/view/trackViews.spec.ts index 3db351c2d6..6157477648 100644 --- a/packages/rum-core/src/domain/rumEventsCollection/view/trackViews.spec.ts +++ b/packages/rum-core/src/domain/rumEventsCollection/view/trackViews.spec.ts @@ -1,5 +1,5 @@ import { Duration, RelativeTime, timeStampNow, display, relativeToClocks } from '@datadog/browser-core' -import { setup, TestSetupBuilder, BuildContext } from '../../../../test/specHelper' +import { setup, TestSetupBuilder, setupViewTest, ViewTest } from '../../../../test/specHelper' import { RumLargestContentfulPaintTiming, RumPerformanceNavigationTiming, @@ -7,7 +7,7 @@ import { } from '../../../browser/performanceCollection' import { ViewLoadingType } from '../../../rawRumEvent.types' import { LifeCycleEventType } from '../../lifeCycle' -import { THROTTLE_VIEW_UPDATE_PERIOD, trackViews, ViewEvent } from './trackViews' +import { THROTTLE_VIEW_UPDATE_PERIOD, ViewEvent } from './trackViews' const FAKE_PAINT_ENTRY: RumPerformancePaintTiming = { entryType: 'paint', @@ -26,52 +26,6 @@ const FAKE_NAVIGATION_ENTRY: RumPerformanceNavigationTiming = { loadEventEnd: 567 as RelativeTime, } -export type ViewTest = ReturnType - -export function setupViewTest( - { lifeCycle, location, domMutationObservable, configuration }: BuildContext, - initialViewName?: string -) { - const { handler: viewUpdateHandler, getViewEvent: getViewUpdate, getHandledCount: getViewUpdateCount } = spyOnViews( - 'view update' - ) - lifeCycle.subscribe(LifeCycleEventType.VIEW_UPDATED, viewUpdateHandler) - const { handler: viewCreateHandler, getViewEvent: getViewCreate, getHandledCount: getViewCreateCount } = spyOnViews( - 'view create' - ) - lifeCycle.subscribe(LifeCycleEventType.VIEW_CREATED, viewCreateHandler) - const { stop, startView, addTiming } = trackViews( - location, - lifeCycle, - domMutationObservable, - !configuration.trackViewsManually, - initialViewName - ) - return { - stop, - startView, - addTiming, - getViewUpdate, - getViewUpdateCount, - getViewCreate, - getViewCreateCount, - } -} - -function spyOnViews(name?: string) { - const handler = jasmine.createSpy(name) - - function getViewEvent(index: number) { - return handler.calls.argsFor(index)[0] as ViewEvent - } - - function getHandledCount() { - return handler.calls.count() - } - - return { handler, getViewEvent, getHandledCount } -} - describe('track views automatically', () => { let setupBuilder: TestSetupBuilder let viewTest: ViewTest diff --git a/packages/rum-core/test/specHelper.ts b/packages/rum-core/test/specHelper.ts index 5d71c247fb..360a972d35 100644 --- a/packages/rum-core/test/specHelper.ts +++ b/packages/rum-core/test/specHelper.ts @@ -10,9 +10,10 @@ import { noop, } from '@datadog/browser-core' import { SPEC_ENDPOINTS, mockClock, Clock } from '../../core/test/specHelper' +import { ForegroundContexts } from '../src/domain/foregroundContexts' import { LifeCycle, LifeCycleEventType } from '../src/domain/lifeCycle' import { ParentContexts } from '../src/domain/parentContexts' -import { ForegroundContexts } from '../src/domain/foregroundContexts' +import { trackViews, ViewEvent } from '../src/domain/rumEventsCollection/view/trackViews' import { RumSession } from '../src/domain/rumSession' import { CommonContext, RawRumEvent, RumContext, ViewContext } from '../src/rawRumEvent.types' import { validateFormat } from './formatValidation' @@ -206,3 +207,49 @@ function validateRumEventFormat(rawRumEvent: RawRumEvent) { } validateFormat(combine(fakeContext, rawRumEvent)) } + +export type ViewTest = ReturnType + +export function setupViewTest( + { lifeCycle, location, domMutationObservable, configuration }: BuildContext, + initialViewName?: string +) { + const { handler: viewUpdateHandler, getViewEvent: getViewUpdate, getHandledCount: getViewUpdateCount } = spyOnViews( + 'view update' + ) + lifeCycle.subscribe(LifeCycleEventType.VIEW_UPDATED, viewUpdateHandler) + const { handler: viewCreateHandler, getViewEvent: getViewCreate, getHandledCount: getViewCreateCount } = spyOnViews( + 'view create' + ) + lifeCycle.subscribe(LifeCycleEventType.VIEW_CREATED, viewCreateHandler) + const { stop, startView, addTiming } = trackViews( + location, + lifeCycle, + domMutationObservable, + !configuration.trackViewsManually, + initialViewName + ) + return { + stop, + startView, + addTiming, + getViewUpdate, + getViewUpdateCount, + getViewCreate, + getViewCreateCount, + } +} + +export function spyOnViews(name?: string) { + const handler = jasmine.createSpy(name) + + function getViewEvent(index: number) { + return handler.calls.argsFor(index)[0] as ViewEvent + } + + function getHandledCount() { + return handler.calls.count() + } + + return { handler, getViewEvent, getHandledCount } +}