DigitalConsumer.ISS/src/helpers/event-bus/event-bus.spec.js
2023-08-28 08:59:37 -04:00

72 lines
2.3 KiB
JavaScript

import { globalEvents, globalEventTypes } from '@/constants/events';
import eventBus from '@/helpers/event-bus/event-bus';
import { useMainStore } from '@/store';
import { createTestingPinia } from '@pinia/testing';
const pinia = createTestingPinia();
useMainStore(pinia);
useMainStore().addEventToBus = jest.fn();
useMainStore().removeEventFromBus = jest.fn();
useMainStore().eventBusItem = jest.fn();
describe('event-bus.js', () => {
const event = {
isDismissible: true,
messageCopy: 'You can get a quote by starting on this page.',
messageHeadline: "We're sorry, something went wrong.",
type: globalEventTypes.Danger
};
afterEach(() => {
jest.resetAllMocks();
});
it('removes items when readandpop is called', () => {
useMainStore().eventBusItem.mockReturnValueOnce(event);
// TODO: Use or remove
const eventValue = eventBus.readAndPopEventFromBus(
globalEvents.Categories.GLOBAL_ALERT,
globalEvents.SubCategories.PAGE_NOT_FOUND
);
expect(useMainStore().eventBusItem).toBeCalledTimes(1);
expect(useMainStore().removeEventFromBus).toBeCalledTimes(1);
});
it("doesn't try to remove items when readandpop is called and item doesn't exist", () => {
useMainStore().eventBusItem.mockReturnValueOnce(undefined);
// TODO: Use or remove
const eventValue = eventBus.readAndPopEventFromBus(
globalEvents.Categories.GLOBAL_ALERT,
globalEvents.SubCategories.PAGE_NOT_FOUND
);
expect(useMainStore().eventBusItem).toBeCalledTimes(1);
expect(useMainStore().removeEventFromBus).toBeCalledTimes(0);
});
it('returns event from bus', () => {
useMainStore().eventBusItem.mockReturnValueOnce(event);
const eventValue = eventBus.readEventFromBus(
globalEvents.Categories.GLOBAL_ALERT,
globalEvents.SubCategories.PAGE_NOT_FOUND
);
expect(eventValue).toBe(event);
});
it('Reads event from bus, should have event value.', () => {
// Arrange / Act
eventBus.addEventToBus(
globalEvents.Categories.GLOBAL_ALERT,
globalEvents.SubCategories.PAGE_NOT_FOUND,
event
);
expect(useMainStore().addEventToBus).toHaveBeenCalled();
});
});