DigitalConsumer.FixMyGlass/src/digital-components/sierra-webchat/sierra-webchat.spec.js
2026-01-22 15:24:26 -05:00

80 lines
2.5 KiB
JavaScript

import { shallowMount } from "@vue/test-utils";
import sierraWebchat from "./sierra-webchat.vue";
jest.mock("@/mixins/analytics-mixin");
// Mock router for analytics-mixin
jest.mock("@/router", () => ({
currentRoute: {
value: {
name: "mockedPageName",
},
},
default: {
currentRoute: {
value: {
name: "mockedPageName",
},
},
},
}));
describe("sierraWebchat.vue", () => {
let wrapper;
beforeEach(() => {
wrapper = shallowMount(sierraWebchat);
// Mock global window properties
window.sierraChat = { openChatModal: jest.fn(), closeChatModal: jest.fn() };
window.sierra = undefined;
window.SierraChat = undefined;
window.embedded_svc = {
bootstrapEmbeddedService: jest.fn(),
liveAgentAPI: { startChat: jest.fn() },
settings: {},
};
});
afterEach(() => {
wrapper.unmount();
jest.clearAllMocks();
delete window.sierraChat;
delete window.embedded_svc;
});
it("should mount the component", () => {
expect(wrapper.exists()).toBe(true);
});
it("calls openSierraChatModal when launchSierraChat is called and script is loaded", () => {
const spy = jest.spyOn(wrapper.vm, "openSierraChatModal");
// Simulate script already loaded
document.body.appendChild(document.createElement("script")).id = "sierra-chat-embed";
wrapper.vm.launchSierraChat();
expect(spy).toHaveBeenCalled();
document.getElementById("sierra-chat-embed").remove();
});
it("calls closeSierraChat when invoked", () => {
wrapper.vm.closeSierraChat();
expect(window.sierraChat.closeChatModal).toHaveBeenCalled();
});
it("dispatches sierra-chat-closed on handleSierraOnClose", () => {
const eventSpy = jest.spyOn(window, "dispatchEvent");
wrapper.vm.createSierraConfig().onClose();
expect(eventSpy).toHaveBeenCalledWith(
expect.objectContaining({ type: "sierra-chat-closed" })
);
});
it("dispatches sierra-chat-transfer on handleSierraOnTransfer", () => {
const eventSpy = jest.spyOn(window, "dispatchEvent");
const transfer = {
data: { first_name: "A", last_name: "B", email: "a@b.com", chat_summary: "summary" },
};
wrapper.vm.createSierraConfig().onTransfer(transfer);
expect(eventSpy).toHaveBeenCalledWith(
expect.objectContaining({ type: "sierra-chat-transfer" })
);
});
});