From 0965ed1207e86d750472db32f94f33b7b8264273 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Wed, 23 Apr 2025 10:30:10 -0400 Subject: [PATCH 1/5] 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/5] 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/5] 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"); + }); + }); +}); From be213ef7d6614d2d3cdcae116a37e396c79ea513 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Wed, 23 Apr 2025 11:11:44 -0400 Subject: [PATCH 4/5] Revert "Merge pull request #2421 from Safelite/feature/CASH-188" This reverts commit 6fe56a56f26a27ba5332e44fe5c241b840272581, reversing changes made to 9c2a35f896fd496e1169a39da095f9dae2c4f200. --- jest.config.js | 2 +- .../salesforce-helper-dev.js | 66 ------------------ .../salesforce-helper-prod.js | 63 ----------------- .../salesforce-helper-qa.js | 67 ------------------- .../salesforce-webchat/salesforce-webchat.vue | 57 ---------------- .../funnel-header/funnel-header.vue | 7 -- src/layouts/confirmation/confirmation.vue | 5 +- 7 files changed, 2 insertions(+), 265 deletions(-) delete mode 100644 src/digital-components/salesforce-webchat/salesforce-helper-dev.js delete mode 100644 src/digital-components/salesforce-webchat/salesforce-helper-prod.js delete mode 100644 src/digital-components/salesforce-webchat/salesforce-helper-qa.js delete mode 100644 src/digital-components/salesforce-webchat/salesforce-webchat.vue diff --git a/jest.config.js b/jest.config.js index e534b3e3f..905e907dc 100644 --- a/jest.config.js +++ b/jest.config.js @@ -35,7 +35,7 @@ module.exports = { testMatch: ["**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)"], coverageThreshold: { global: { - statements: 72, + statements: 74, }, }, // Uncomment this to avoid the massive amount of warnings we are getting for onSubmit and onInvalidSubmit diff --git a/src/digital-components/salesforce-webchat/salesforce-helper-dev.js b/src/digital-components/salesforce-webchat/salesforce-helper-dev.js deleted file mode 100644 index fb29bc9eb..000000000 --- a/src/digital-components/salesforce-webchat/salesforce-helper-dev.js +++ /dev/null @@ -1,66 +0,0 @@ -/* -The code below is generated from salesforce but modified in the following ways: - * Only the javascript inside the second - - diff --git a/src/fmg-components/funnel-header/funnel-header.vue b/src/fmg-components/funnel-header/funnel-header.vue index 4862b5205..c6cbb8727 100644 --- a/src/fmg-components/funnel-header/funnel-header.vue +++ b/src/fmg-components/funnel-header/funnel-header.vue @@ -2,7 +2,6 @@
- Safelite logo @@ -27,7 +26,6 @@ import alert from "@/ux-components/alert/alert"; import eventBus from "@/helpers/event-bus/event-bus"; import { globalEvents } from "@/constants/events"; import menuModal from "@/fmg-components/funnel-header/menu-modal/menu-modal"; -import salesforceWebchat from "../../digital-components/salesforce-webchat/salesforce-webchat.vue"; // Constants const ALERT_DURATION = 3000; // millisecond time to display alert before dismissal @@ -41,10 +39,6 @@ export default { }, props: { cmsWidgetName: String, - hideSalesforceWebchatLaunchButton: { - type: Boolean, - default: false, - }, }, computed: { imageSrc() { @@ -68,7 +62,6 @@ export default { components: { alert, menuModal, - salesforceWebchat, }, mounted() { // Check if alert event is on the bus diff --git a/src/layouts/confirmation/confirmation.vue b/src/layouts/confirmation/confirmation.vue index 40736b2c2..3b3ead4c1 100644 --- a/src/layouts/confirmation/confirmation.vue +++ b/src/layouts/confirmation/confirmation.vue @@ -5,10 +5,7 @@
- +
From cc380d29bbe881977a77a253b1aa476b7cd5d4f4 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Thu, 24 Apr 2025 10:37:18 -0400 Subject: [PATCH 5/5] Reapply "Merge pull request #2421 from Safelite/feature/CASH-188" This reverts commit be213ef7d6614d2d3cdcae116a37e396c79ea513. --- jest.config.js | 2 +- .../salesforce-helper-dev.js | 66 ++++++++++++++++++ .../salesforce-helper-prod.js | 63 +++++++++++++++++ .../salesforce-helper-qa.js | 67 +++++++++++++++++++ .../salesforce-webchat/salesforce-webchat.vue | 57 ++++++++++++++++ .../funnel-header/funnel-header.vue | 7 ++ src/layouts/confirmation/confirmation.vue | 5 +- 7 files changed, 265 insertions(+), 2 deletions(-) create mode 100644 src/digital-components/salesforce-webchat/salesforce-helper-dev.js create mode 100644 src/digital-components/salesforce-webchat/salesforce-helper-prod.js create mode 100644 src/digital-components/salesforce-webchat/salesforce-helper-qa.js create mode 100644 src/digital-components/salesforce-webchat/salesforce-webchat.vue diff --git a/jest.config.js b/jest.config.js index 905e907dc..e534b3e3f 100644 --- a/jest.config.js +++ b/jest.config.js @@ -35,7 +35,7 @@ module.exports = { testMatch: ["**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)"], coverageThreshold: { global: { - statements: 74, + statements: 72, }, }, // Uncomment this to avoid the massive amount of warnings we are getting for onSubmit and onInvalidSubmit diff --git a/src/digital-components/salesforce-webchat/salesforce-helper-dev.js b/src/digital-components/salesforce-webchat/salesforce-helper-dev.js new file mode 100644 index 000000000..fb29bc9eb --- /dev/null +++ b/src/digital-components/salesforce-webchat/salesforce-helper-dev.js @@ -0,0 +1,66 @@ +/* +The code below is generated from salesforce but modified in the following ways: + * Only the javascript inside the second + + diff --git a/src/fmg-components/funnel-header/funnel-header.vue b/src/fmg-components/funnel-header/funnel-header.vue index 092224551..bf4f17ec1 100644 --- a/src/fmg-components/funnel-header/funnel-header.vue +++ b/src/fmg-components/funnel-header/funnel-header.vue @@ -2,6 +2,7 @@
+ Safelite logo @@ -27,6 +28,7 @@ import alert from "@/ux-components/alert/alert"; import eventBus from "@/helpers/event-bus/event-bus"; import { globalEvents } from "@/constants/events"; import menuModal from "@/fmg-components/funnel-header/menu-modal/menu-modal"; +import salesforceWebchat from "../../digital-components/salesforce-webchat/salesforce-webchat.vue"; import progressBar from "@/fmg-components/funnel-header/progress-bar/progress-bar"; // Constants @@ -41,6 +43,10 @@ export default { }, props: { cmsWidgetName: String, + hideSalesforceWebchatLaunchButton: { + type: Boolean, + default: false, + }, }, computed: { imageSrc() { @@ -64,6 +70,7 @@ export default { components: { alert, menuModal, + salesforceWebchat, progressBar, }, mounted() { diff --git a/src/layouts/confirmation/confirmation.vue b/src/layouts/confirmation/confirmation.vue index 3b3ead4c1..40736b2c2 100644 --- a/src/layouts/confirmation/confirmation.vue +++ b/src/layouts/confirmation/confirmation.vue @@ -5,7 +5,10 @@
- +