import { AnalyticsService, DataLayerWindow, AnalyticsEvent } from './AnalyticsService'; import { Mock, IMock, It, Times } from 'typemoq'; import { expect } from 'chai'; describe('Analytics service', () => { let dataLayer: AnalyticsEvent[]; let service: AnalyticsService; beforeEach(() => { dataLayer = []; let $window = Mock.ofType(); $window.setup(x => x.dataLayer).returns(() => dataLayer); service = new AnalyticsService($window.object); }); it('should add an event to the data layer', () => { const event: AnalyticsEvent = { event: 'ViewQuoteForm', postcode: 'AB12CD' }; service.push(event); expect(dataLayer).to.contain(event); }); it('should clear the data layer', () => { dataLayer.push( { event: 'ViewQuoteForm', postcode: 'AB12CD', paymentMethod: 'Paym' }, { event: 'ViewQuoteForm', fuel: 'Electricity' } ); service.clear(); expect(dataLayer).to.contain({ postcode: undefined, paymentMethod: undefined, fuel: undefined }); }); });