UNPKG

@availity/analytics-core

Version:
101 lines (90 loc) 2.99 kB
import { AvTelemetryAnalytics } from '..'; describe('AvTelemetryAnalytics', () => { let mockLog: { info: () => void; test: () => void }; let mockAvTelemetryAnalytics: AvTelemetryAnalytics; beforeEach(() => { mockLog = { info: jest.fn(), test: jest.fn(), }; mockAvTelemetryAnalytics = new AvTelemetryAnalytics(mockLog, false, 'testApp', 'AVOSS@availity.com', '555', '1234'); }); test('AvTelemetryAnalytics should be defined', () => { expect(mockAvTelemetryAnalytics).toBeDefined(); }); test('trackEvent should call AvLogMessages[level]', () => { let level = 'info'; mockAvTelemetryAnalytics.trackEvent({ level }); expect(mockLog.info).toHaveBeenCalledTimes(1); expect(mockLog.test).toHaveBeenCalledTimes(0); level = 'test'; mockAvTelemetryAnalytics.trackEvent({ level }); expect(mockLog.info).toHaveBeenCalledTimes(1); expect(mockLog.test).toHaveBeenCalledTimes(1); }); test("trackEvent should default level to 'info'", () => { mockAvTelemetryAnalytics.trackEvent({}); expect(mockLog.info).toHaveBeenCalledTimes(1); expect(mockLog.test).toHaveBeenCalledTimes(0); }); test("trackEvent should default properties.url to location.href or 'N/A'", () => { let startingObject: { message: string; url: string; level?: string; customerId: string } = { message: 'hello world', url: window.location.href || 'N/A', customerId: '0000', }; let expectedCall = { contact: 'AVOSS@availity.com', customerId: '0000', owner: '555', sessionId: '1234', source_system: 'testApp', telemetryBody: { entries: { message: startingObject.message, url: window.location.href || 'N/A', }, level: 'info', }, version: 'v1', }; mockAvTelemetryAnalytics.trackEvent(startingObject); expect(mockLog.info).toHaveBeenCalledWith(expectedCall); startingObject = { message: 'hello world', url: 'testUrl', level: 'test', customerId: '0000', }; expectedCall = { contact: 'AVOSS@availity.com', customerId: '0000', owner: '555', sessionId: '1234', source_system: 'testApp', telemetryBody: { entries: { message: 'hello world', url: 'testUrl', }, level: 'test', }, version: 'v1', }; mockAvTelemetryAnalytics.trackEvent(startingObject); expect(mockLog.test).toHaveBeenCalledWith(expectedCall); }); test("trackPageView should call trackEvent with event 'page' and passed in url", () => { const testUrl = 'testUrl'; mockAvTelemetryAnalytics.trackEvent = jest.fn(); mockAvTelemetryAnalytics.trackPageView(testUrl); expect(mockAvTelemetryAnalytics.trackEvent).toHaveBeenCalledWith({ action: 'load', category: 'testApp', customerId: '0000', event: 'page', label: 'page-load', url: testUrl, }); }); });