import analyticsMixin from "@/mixins/analytics-mixin"; import { setupMocksForJsFiles } from "@/helpers/unit-test-helper.js"; import { storeActions } from "@/constants/store-actions"; describe("analyticsMixin.js", () => { test("logEvent: calls dispatch with type and payload", () => { const type = ""; const payload = {}; const mockData = { actionList: [{ actionName: storeActions.LOG_ACTIVITY }], } const mocks = setupMocksForJsFiles(mockData); analyticsMixin.methods.logEvent(type, payload); expect(mocks.baseMixin.methods.dispatchStoreAction).toBeCalled(); }); test("pushEventToGA, should call logEvent too", () => { // Arrange const mockData = { actionList: [{ actionName: storeActions.LOG_ACTIVITY }], } const mocks = setupMocksForJsFiles(mockData); // Act analyticsMixin.methods.pushEventToGA('category', 'action', 'label', true); // Assert expect(mocks.baseMixin.methods.dispatchStoreAction).toBeCalled(); }); test("Experiments, should push to dataLayer with default Google Custom Dimension Index", () => { // Arrange window.dataLayer = []; const mockExperimentData = { data: [ { settings: {}, variationName: 'test', universeName: 'testUniverse' } ] } // Act analyticsMixin.methods.pushExperimentsToDataLayer(mockExperimentData); // Assert expect(window.dataLayer).toEqual([ { settings_99: {}, variationName_99: 'test', universeName_99: 'testUniverse' } ]); }); test("Experiments, should push to dataLayer with custom Google Custom Dimension Index", () => { // Arrange window.dataLayer = []; const mockExperimentData = { data: [ { settings: { "Google Custom Dimension Index": "5"}, variationName: 'test', universeName: 'testUniverse' } ] } // Act analyticsMixin.methods.pushExperimentsToDataLayer(mockExperimentData); // Assert expect(window.dataLayer).toEqual([ { settings_5: {"Google Custom Dimension Index": "5"}, variationName_5: 'test', universeName_5: 'testUniverse' } ]); }); });