import 'reflect-metadata'; jest.mock('universal-ga', () => { return { event: jest.fn(), initialize: jest.fn(), }; }); import * as analytics from 'universal-ga'; import { UniversalAnalyticsTrackingService, } from './universal-analytics-tracking.service'; import { BrandSettingsInterface, } from './../../../models/index'; const initUniversalAnalyticsTrackingService = ( brandSettings?: BrandSettingsInterface, ) => { return new UniversalAnalyticsTrackingService(brandSettings); }; describe('constructor', () => { test('Initializes the analytics service', () => { initUniversalAnalyticsTrackingService({ universalAnalyticsToken: 'testAnalytics', } as BrandSettingsInterface); expect(analytics.initialize).toHaveBeenCalledWith( 'testAnalytics', ); }); }); describe('sendEvent', () => { test('Sends an event through the analytics service', () => { const universalAnalyticsTrackingService = initUniversalAnalyticsTrackingService({ universalAnalyticsToken: 'testAnalytics', } as BrandSettingsInterface); const eventProperties: {[key: string]: string} = { abc: '123', }; universalAnalyticsTrackingService.sendEvent({ name: 'test', properties: eventProperties, }); expect(analytics.event).toHaveBeenCalledWith( 'test', 'action', JSON.stringify(eventProperties), ); }); });