import 'reflect-metadata'; import { requiredMocks, } from './../../../../test-mocks'; requiredMocks(jest); import { TrackingDirective, } from './tracking.directive'; import { DefaultTrackingService, } from './../../services/index'; const itCallsTrackingServiceWithData = ( functionName: string, eventType: string, ) => { const defaultTrackingService = {} as DefaultTrackingService; defaultTrackingService.sendEvent = jest.fn(); const trackingDirective = new TrackingDirective( defaultTrackingService, ); trackingDirective.tracking = { test: '123', }; trackingDirective[functionName](); expect(defaultTrackingService.sendEvent) .toHaveBeenCalledWith({ name: 'test', properties: { type: eventType, value: '123', }, }); }; describe('onClick', () => { // tslint:disable-next-line test('It calls trackingDefaultService.sendEvent with the correct arguments', () => { itCallsTrackingServiceWithData( 'onClick', 'click', ); }); }); describe('onDrop', () => { // tslint:disable-next-line test('It calls trackingDefaultService.sendEvent with the correct arguments', () => { itCallsTrackingServiceWithData( 'onDrop', 'drop', ); }); }); describe('onDragStart', () => { // tslint:disable-next-line test('It calls trackingDefaultService.sendEvent with the correct arguments', () => { itCallsTrackingServiceWithData( 'onDragStart', 'dragstart', ); }); }); describe('onDragEnd', () => { // tslint:disable-next-line test('It calls trackingDefaultService.sendEvent with the correct arguments', () => { itCallsTrackingServiceWithData( 'onDragEnd', 'dragend', ); }); });