From 0965ed1207e86d750472db32f94f33b7b8264273 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Wed, 23 Apr 2025 10:30:10 -0400 Subject: [PATCH 1/3] CASH-188 | Update unit tests --- .../salesforce-helper.spec.js | 38 ++++++++++++++++ .../salesforce-webchat.spec.js | 45 +++++++++++++++++++ .../salesforce-webchat/salesforce-webchat.vue | 10 +++-- 3 files changed, 89 insertions(+), 4 deletions(-) create mode 100644 src/digital-components/salesforce-webchat/salesforce-helper.spec.js create mode 100644 src/digital-components/salesforce-webchat/salesforce-webchat.spec.js diff --git a/src/digital-components/salesforce-webchat/salesforce-helper.spec.js b/src/digital-components/salesforce-webchat/salesforce-helper.spec.js new file mode 100644 index 000000000..ae7712c49 --- /dev/null +++ b/src/digital-components/salesforce-webchat/salesforce-helper.spec.js @@ -0,0 +1,38 @@ +import * as salesforceWebchatHelperdev from './salesforce-helper-dev'; +import * as salesforceWebchatHelperqa from './salesforce-helper-qa'; +import * as salesforceWebchatHelperprod from './salesforce-helper-prod'; + +const mockEmbeddedSvc = { + settings: {}, + init: jest.fn(), + testFlag: true, +} + +describe("Salesforce Webchat Helper Tests", () => { + describe("Files and exposed methods exist", () => { + it("exposes initialization methods", () => { + expect(typeof salesforceWebchatHelperdev.initializeSalesforceWebchatForDev).toBe("function"); + expect(typeof salesforceWebchatHelperqa.initializeSalesforceWebchatForQa).toBe("function"); + expect(typeof salesforceWebchatHelperprod.initializeSalesforceWebchatForProd).toBe("function"); + + }) + }), + describe("Custom code added correctly", ()=> { + it("defines a local variable 'embedded_svc' in the initESW method", ()=> { + mockEmbeddedSvc.testFlag = "dev"; + window.embedded_svc = mockEmbeddedSvc; + salesforceWebchatHelperdev.initializeSalesforceWebchatForDev(); + expect(embedded_svc.testFlag).toBe("dev"); + + mockEmbeddedSvc.testFlag = "qa"; + window.embedded_svc = mockEmbeddedSvc; + salesforceWebchatHelperqa.initializeSalesforceWebchatForQa(); + expect(embedded_svc.testFlag).toBe("qa"); + + mockEmbeddedSvc.testFlag = "prod"; + window.embedded_svc = mockEmbeddedSvc; + salesforceWebchatHelperprod.initializeSalesforceWebchatForProd(); + expect(embedded_svc.testFlag).toBe("prod"); + }) + }) +}) \ No newline at end of file diff --git a/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js b/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js new file mode 100644 index 000000000..0b368b6f0 --- /dev/null +++ b/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js @@ -0,0 +1,45 @@ +import { shallowMount } from "@vue/test-utils"; +import salesforceWebchat from "./salesforce-webchat.vue"; +import * as devHelper from "./salesforce-helper-dev"; +import * as qaHelper from "./salesforce-helper-qa"; +import * as prodHelper from "./salesforce-helper-prod"; + +describe("salesforceWebchat.vue", () => { + it("renders correctly", () => { + const wrapper = shallowMount(salesforceWebchat); + expect(wrapper.exists()).toBe(true); + }); + + it("has the correct default data", () => { + const wrapper = shallowMount(salesforceWebchat); + expect(wrapper.vm.$data).toEqual({}); + }); + + it("has the correct default props", () => { + const wrapper = shallowMount(salesforceWebchat); + expect(wrapper.props().hideSalesforceWebchatLaunchButton).toBe(false); + }); + + it("appends script to document body on mount", () => { + }); + + it("calls the correct initialization function based on environment", () => { + process.env.VUE_APP_CURRENT_ENVIRONMENT = "Prod"; + let wrapper = shallowMount(salesforceWebchat); + mockProd = jest.spyOn(prodHelper, "initializeSalesforceWebchatForProd"); + wrapper.vm.initializeSalesforceWebchat(); + expect(mockProd).toHaveBeenCalled(); + + process.env.VUE_APP_CURRENT_ENVIRONMENT = "QA"; + wrapper = shallowMount(salesforceWebchat); + mockQa = jest.spyOn(qaHelper, "initializeSalesforceWebchatForQa"); + wrapper.vm.initializeSalesforceWebchat(); + expect(mockQa).toHaveBeenCalled(); + + process.env.VUE_APP_CURRENT_ENVIRONMENT = "Dev"; + wrapper = shallowMount(salesforceWebchat); + mockDev = jest.spyOn(devHelper, "initializeSalesforceWebchatForDev"); + wrapper.vm.initializeSalesforceWebchat(); + expect(mockDev).toHaveBeenCalled(); + }); +}); diff --git a/src/digital-components/salesforce-webchat/salesforce-webchat.vue b/src/digital-components/salesforce-webchat/salesforce-webchat.vue index 58da503fa..75f689d10 100644 --- a/src/digital-components/salesforce-webchat/salesforce-webchat.vue +++ b/src/digital-components/salesforce-webchat/salesforce-webchat.vue @@ -23,7 +23,11 @@ export default { // Load in script from salesforce CDN const script = document.createElement("script"); script.src = "https://service.force.com/embeddedservice/5.0/esw.min.js"; - script.onload = () => { + script.onload = this.initializeSalesforceWebchat; + document.body.appendChild(script); + }, + methods: { + initializeSalesforceWebchat() { switch (process.env.VUE_APP_CURRENT_ENVIRONMENT) { case "Prod": initializeSalesforceWebchatForProd(); @@ -37,10 +41,8 @@ export default { initializeSalesforceWebchatForDev(); break; } - }; - document.body.appendChild(script); + }, }, - methods: {}, computed: {}, components: {}, }; From 4a178f50092c5ab5cf8d657ce19148f4a2ed0ab7 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Wed, 23 Apr 2025 10:31:06 -0400 Subject: [PATCH 2/3] CASH-188 | Unit tests --- .../salesforce-webchat/salesforce-webchat.spec.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js b/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js index 0b368b6f0..178e431cc 100644 --- a/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js +++ b/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js @@ -20,9 +20,6 @@ describe("salesforceWebchat.vue", () => { expect(wrapper.props().hideSalesforceWebchatLaunchButton).toBe(false); }); - it("appends script to document body on mount", () => { - }); - it("calls the correct initialization function based on environment", () => { process.env.VUE_APP_CURRENT_ENVIRONMENT = "Prod"; let wrapper = shallowMount(salesforceWebchat); From 1a4c90fc3f1277fc7bbdfb8663a1e02f06d56a90 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Wed, 23 Apr 2025 11:02:25 -0400 Subject: [PATCH 3/3] CASH-188 | Formatting --- .../salesforce-helper.spec.js | 57 ++++++++++--------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/src/digital-components/salesforce-webchat/salesforce-helper.spec.js b/src/digital-components/salesforce-webchat/salesforce-helper.spec.js index ae7712c49..aac2869f1 100644 --- a/src/digital-components/salesforce-webchat/salesforce-helper.spec.js +++ b/src/digital-components/salesforce-webchat/salesforce-helper.spec.js @@ -1,38 +1,43 @@ -import * as salesforceWebchatHelperdev from './salesforce-helper-dev'; -import * as salesforceWebchatHelperqa from './salesforce-helper-qa'; -import * as salesforceWebchatHelperprod from './salesforce-helper-prod'; +import * as salesforceWebchatHelperdev from "./salesforce-helper-dev"; +import * as salesforceWebchatHelperqa from "./salesforce-helper-qa"; +import * as salesforceWebchatHelperprod from "./salesforce-helper-prod"; const mockEmbeddedSvc = { settings: {}, init: jest.fn(), testFlag: true, -} +}; describe("Salesforce Webchat Helper Tests", () => { describe("Files and exposed methods exist", () => { it("exposes initialization methods", () => { - expect(typeof salesforceWebchatHelperdev.initializeSalesforceWebchatForDev).toBe("function"); - expect(typeof salesforceWebchatHelperqa.initializeSalesforceWebchatForQa).toBe("function"); - expect(typeof salesforceWebchatHelperprod.initializeSalesforceWebchatForProd).toBe("function"); - - }) + expect(typeof salesforceWebchatHelperdev.initializeSalesforceWebchatForDev).toBe( + "function" + ); + expect(typeof salesforceWebchatHelperqa.initializeSalesforceWebchatForQa).toBe( + "function" + ); + expect(typeof salesforceWebchatHelperprod.initializeSalesforceWebchatForProd).toBe( + "function" + ); + }); }), - describe("Custom code added correctly", ()=> { - it("defines a local variable 'embedded_svc' in the initESW method", ()=> { - mockEmbeddedSvc.testFlag = "dev"; - window.embedded_svc = mockEmbeddedSvc; - salesforceWebchatHelperdev.initializeSalesforceWebchatForDev(); - expect(embedded_svc.testFlag).toBe("dev"); + describe("Custom code added correctly", () => { + it("defines a local variable 'embedded_svc' in the initESW method", () => { + mockEmbeddedSvc.testFlag = "dev"; + window.embedded_svc = mockEmbeddedSvc; + salesforceWebchatHelperdev.initializeSalesforceWebchatForDev(); + expect(embedded_svc.testFlag).toBe("dev"); - mockEmbeddedSvc.testFlag = "qa"; - window.embedded_svc = mockEmbeddedSvc; - salesforceWebchatHelperqa.initializeSalesforceWebchatForQa(); - expect(embedded_svc.testFlag).toBe("qa"); + mockEmbeddedSvc.testFlag = "qa"; + window.embedded_svc = mockEmbeddedSvc; + salesforceWebchatHelperqa.initializeSalesforceWebchatForQa(); + expect(embedded_svc.testFlag).toBe("qa"); - mockEmbeddedSvc.testFlag = "prod"; - window.embedded_svc = mockEmbeddedSvc; - salesforceWebchatHelperprod.initializeSalesforceWebchatForProd(); - expect(embedded_svc.testFlag).toBe("prod"); - }) - }) -}) \ No newline at end of file + mockEmbeddedSvc.testFlag = "prod"; + window.embedded_svc = mockEmbeddedSvc; + salesforceWebchatHelperprod.initializeSalesforceWebchatForProd(); + expect(embedded_svc.testFlag).toBe("prod"); + }); + }); +});