import * as helper from "@/helpers/heritage-integration-helper"; import { cookieNames } from "@/constants/cookie-names"; import { setupMocksForJsFiles } from "@/helpers/unit-test-helper.js"; import { storeActions } from "@/constants/store-actions"; import { storeMutations } from "@/constants/store-mutations"; import store from "@/store"; describe("saveOrder", () => { // afterEach(() => { // removeAllTestCookies(); // }); function getMockOrderInfo(mockReferralNumber, mockCorrelationId, mockReferralDate ) { return { referralNumber: mockReferralNumber, referralCorrelationId: mockCorrelationId, referralDate: mockReferralDate } } describe("loadOrderIfPresent", () => { // test("ShouldResetState == true => heritage cookie is deleted", () => { // // Arrange // // TODO CSR-98 Can we not mock this?? // const testShouldResetState = true; // const testCookieValue = { // ShouldResetState: testShouldResetState // } // console.log(cookieNames.CONCEPT_SESSION_INFO); // console.log(testCookieValue) // console.log(JSON.stringify(testCookieValue)); // console.log(location.hostname) // let myString = `${cookieNames.CONCEPT_SESSION_INFO}=${JSON.stringify(testCookieValue)};domain=${location.hostname};path=/;`; // console.log(myString) // document.cookie = 'OrderInfo={"Hahahah":true};domain=localhost;path=/;'; // console.log(document.cookie) // document.cookie = "Ahhh=AHHH;" // document.cookie = `${cookieNames.CONCEPT_SESSION_INFO}=; Max-Age=0; domain=${location.hostname};`; // console.log(document.cookie) // // Act // helper.loadOrderIfPresent(); // // Assert // console.log(document.cookie) // // expect(document.cookie).toBe(); // }); // test("ShouldResetState == true => reset store", () => { // // Arrange // helper.getHeritageCookieValue = jest.fn(x => x.ShouldResetState = false); // // Act // helper.loadOrderIfPresent(); // // Assert // expect(helper.getHeritageCookieValue).toHaveBeenCalled(); // }); // test("Heritage cookie is null => store is unchanged", () => { // // Arrange // helper.getHeritageCookieValue = jest.fn(x => x.ShouldResetState = true); // // Act // helper.loadOrderIfPresent(); // // Assert // expect(helper.getHeritageCookieValue).toHaveBeenCalled(); // }); }); test("saveOrder => should set state order values", async () => { // Arrange const mockReferralNumber = 2; const mockCorrelationId = "55"; const mockReferralDate = "2022"; const mockOrderInfo = getMockOrderInfo(mockReferralNumber, mockCorrelationId, mockReferralDate); const mockData = { actionList: [{ actionName: storeActions.SAVE_ORDER, data: mockOrderInfo, }], } setupMocksForJsFiles(mockData); // Act await helper.saveOrder(); // Assert expect(store.commit).toHaveBeenCalledTimes(3); expect(store.commit).toHaveBeenCalledWith(storeMutations.UPDATE_REFERRAL_NUMBER, mockReferralNumber); expect(store.commit).toHaveBeenCalledWith(storeMutations.UPDATE_REFERRAL_CORRELATION_ID, mockCorrelationId); expect(store.commit).toHaveBeenCalledWith(storeMutations.UPDATE_REFERRAL_DATE, mockReferralDate); }); // test("saveOrder => should update DidHeritageFunnelUpdateLast cookie value", async () => { // // Arrange // const mockReferralNumber = 2; // const mockCorrelationId = "55"; // const mockReferralDate = "2022"; // const mockOrderInfo = getMockOrderInfo(mockReferralNumber, mockCorrelationId, mockReferralDate); // const mockData = { // actionList: [{ // actionName: storeActions.SAVE_ORDER, // data: mockOrderInfo, // }], // } // setupMocksForJsFiles(mockData); // // Act // await helper.saveOrder(); // // Assert // }); }); describe("navigateToHeritageFunnel", () => { test("should go to external link", () => { // Arrange // Act helper.navigateToHeritageFunnel(); // Assert expect(router.navigate).toHaveBeenCalled(); expect(window.location.assign).toHaveBeenCalled(); }) }); // TODO CSR-98 Remove skip describe.skip("cookies", () => { afterEach(() => { removeAllTestCookies(); }) describe("getHeritageCookieValue method", () => { test("gets correct value when cookie is present", () => { // Arrange const testReferralNumber = 1566818; const testReferralDate = "2022-03-15T10:56:24.597"; const testReferralCorrelationId = "404d2b04-f86e-45c3-b373-127b6217b060"; const testShouldResetState = false; const testDidHeritageFunnelUpdateLast = true; const testCookieValue = { ReferralNumber: testReferralNumber, ReferralDate: testReferralDate, ReferralCorrelationId: testReferralCorrelationId, ShouldResetState: testShouldResetState, DidHeritageFunnelUpdateLast: testDidHeritageFunnelUpdateLast } setupCookies({ heritageCookieValue: JSON.stringify(testCookieValue) }); // Act var result = helper.getHeritageCookieValue(); // Assert expect(result).toEqual(testCookieValue); expect(typeof result).toEqual("object"); expect(result.ReferralNumber).toEqual(testReferralNumber); expect(result.ReferralDate).toEqual(testReferralDate); expect(result.ReferralCorrelationId).toEqual(testReferralCorrelationId); expect(result.ShouldResetState).toEqual(testShouldResetState); expect(result.DidHeritageFunnelUpdateLast).toEqual(testDidHeritageFunnelUpdateLast); }) test("returns empty object when value is empty object", () => { // Arrange const testCookieValue = {}; setupCookies({ heritageCookieValue: JSON.stringify(testCookieValue) }); // Act var result = helper.getHeritageCookieValue(); // Assert expect(result).toEqual(testCookieValue); expect(typeof result).toEqual("object"); expect(Object.keys(result)).toHaveLength(0); }) test("returns null when value is empty string", () => { // Arrange const testCookieValue = ""; setupCookies({ heritageCookieValue: testCookieValue }); // Act var result = helper.getHeritageCookieValue(); // Assert expect(result).toEqual(null); }) test("returns null when heritage cookie doesn't exist", () => { // Arrange setupCookies({ includeHeritageCookie: false }); // Act var result = helper.getHeritageCookieValue(); // Assert expect(result).toEqual(null); }) }) }) // document.cookie is not just a string, needs to be added individually const cookies = { "orderconfirmation": 1565980, "optimizelyEndUserId": "oeu1610051865958r0.07937134272718804", [cookieNames.CONCEPT_SESSION_INFO]: `{"ReferralNumber":"1566818","ReferralDate":"2022-03-15T10:56:24.597","ReferralCorrelationId":"404d2b04-f86e-45c3-b373-127b6217b060","ShouldResetState":false,"DidHeritageFunnelUpdateLast":true}`, "UNIQUE_SESSION_ID": "33756020-b58e-4ec7-b8b8-3f1576719c40", "_ga": "GA1.1.1631274579.1622658999", "da_lid": "B10847599A73EA95861EBB99009A283E27|0|0|0 clientTag=null", "addshoppers.com": "2%7C1%3A0%7C10%3A1646681050%7C15%3Aaddshoppers.com%7C44%3AODM1OTczNWI0MmFjNGNmMmExNDY3OWRlNTQ1NmM5MGY%3D%7Cef2a50fafe40fc5abf641a14ee5541c70bef2950666f59d3a809fd9352c7b963" }; function setupCookies({ heritageCookieValue = "", includeHeritageCookie = true }) { console.log(heritageCookieValue) Object.keys(cookies).forEach(key => { const cookieValue = key == cookieNames.CONCEPT_SESSION_INFO ? heritageCookieValue : cookies[key]; if (includeHeritageCookie || key != cookieNames.CONCEPT_SESSION_INFO) document.cookie = `${key}=${cookieValue}`; }); } function removeAllTestCookies() { Object.keys(cookies).forEach(key => { document.cookie = `${key}=;Max-Age=0;`; }); } // test("getCookieValue: Gets correct cookie value", () => { // // Arrange // const mixIn = getMixInInstance({}); // const testCookieName = "testCookie"; // const testCookieValue = "testCookieValue"; // document.cookie = `yearMakeModel=2020 ACURA MDX;`; // document.cookie = `SavedQuoteID=d2770645-0680-4852-9649-6170659b1bd6;`; // document.cookie = `${testCookieName}=${testCookieValue};`; // document.cookie = `EMBEDDEDPAYMENTPAGE_PAYPAL_SUBMITBUTTON=COMPLETED;`; // document.cookie = `orderconfirmation=7411543;`; // console.log(document.cookie) // // Act // const actualCookieValue = mixIn.methods.getCookieValue(testCookieName); // // Assert // expect(actualCookieValue).toEqual(testCookieValue); // expect(document.cookie).toEqual(`yearMakeModel=2020 ACURA MDX; SavedQuoteID=d2770645-0680-4852-9649-6170659b1bd6; ${testCookieName}=${testCookieValue}; EMBEDDEDPAYMENTPAGE_PAYPAL_SUBMITBUTTON=COMPLETED; orderconfirmation=7411543`); // clearCookies(); // }); // test("getCookieValue: Gets undefined cookie value", () => { // // Arrange // const mixIn = getMixInInstance({}); // const testCookieName = "testCookie"; // document.cookie = `yearMakeModel=2020 ACURA MDX;`; // document.cookie = `SavedQuoteID=d2770645-0680-4852-9649-6170659b1bd6;`; // document.cookie = `EMBEDDEDPAYMENTPAGE_PAYPAL_SUBMITBUTTON=COMPLETED;`; // document.cookie = `orderconfirmation=7411543;`; // // Act // const actualCookieValue = mixIn.methods.getCookieValue(testCookieName); // // Assert // expect(actualCookieValue).toEqual(undefined); // expect(document.cookie).toEqual(`yearMakeModel=2020 ACURA MDX; SavedQuoteID=d2770645-0680-4852-9649-6170659b1bd6; EMBEDDEDPAYMENTPAGE_PAYPAL_SUBMITBUTTON=COMPLETED; orderconfirmation=7411543;`); // });