From 41a27cc427a75702dfbb187731b8301c2f596e9b Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Wed, 5 Oct 2022 23:29:33 -0400 Subject: [PATCH] update unit test coverage --- src/mixins/vehicle-questions-mixin.spec.js | 230 ++++++++++++++++++++- 1 file changed, 229 insertions(+), 1 deletion(-) diff --git a/src/mixins/vehicle-questions-mixin.spec.js b/src/mixins/vehicle-questions-mixin.spec.js index 306aa60ce..e5a579f02 100644 --- a/src/mixins/vehicle-questions-mixin.spec.js +++ b/src/mixins/vehicle-questions-mixin.spec.js @@ -155,6 +155,126 @@ describe("vehicle-questions-mixin", () => { }); }); + describe("hasChildPartQuestions", () => { + test("has no child part questions => return false", () => { + // Arrange + const { wrapper } = setupMocks({}); + + // Act + const hasChildPartQuestions = wrapper.vm.hasChildPartQuestions([ + { + parts: [ + { + childPartQuestions: [] + } + ] + } + ]) + + // Assert + expect(hasChildPartQuestions).toBe(false); + }); + + test("has undefined child part questions => return false", () => { + // Arrange + const { wrapper } = setupMocks({}); + + // Act + const hasChildPartQuestions = wrapper.vm.hasChildPartQuestions([]) + + // Assert + expect(hasChildPartQuestions).toBe(false); + + }); + + test("has child part questions => return true", () => { + // Arrange + const { wrapper } = setupMocks({}); + + // Act + const hasChildPartQuestions = wrapper.vm.hasChildPartQuestions([ + { + parts: [ + { + childPartQuestions: [ + { + "questionSequence": 1, + "questionText": "Does the rubber seal around your windshield have a chrome strip running through it?", + "answers": [ + { + "answerResult": "WKT D1106 C", + "answerText": "Yes", + "nextQuestionSequence": null + }, + { + "answerResult": "WKT D1106 B", + "answerText": "No", + "nextQuestionSequence": null + } + ] + } + ] + } + ] + } + ]) + + // Assert + expect(hasChildPartQuestions).toBe(true); + }); + }); + + describe("hasCapabilityQuestions", () => { + test("has no capability questions => return false", () => { + // Arrange + const { wrapper } = setupMocks({}); + + // Act + const hasCapabilityQuestions = wrapper.vm.hasCapabilityQuestions([ + { + parts: [ + { + requiresCapabilityQuestions: false + } + ] + } + ]) + + // Assert + expect(hasCapabilityQuestions).toBe(false); + }); + + test("has undefined capability questions => return false", () => { + // Arrange + const { wrapper } = setupMocks({}); + + // Act + const hasCapabilityQuestions = wrapper.vm.hasCapabilityQuestions([]) + + // Assert + expect(hasCapabilityQuestions).toBe(false); + }); + + test("has capability questions => return true", () => { + // Arrange + const { wrapper } = setupMocks({}); + + // Act + const hasCapabilityQuestions = wrapper.vm.hasCapabilityQuestions([ + { + parts: [ + { + requiresCapabilityQuestions: true + } + ] + } + ]) + + // Assert + expect(hasCapabilityQuestions).toBe(true); + }); + }); + describe("currentPageComesBeforePage", () => { const testCases = [[fmgPageValues.PART_QUESTIONS, fmgPageValues.VEHICLE_PARTS, true], [fmgPageValues.VEHICLE_PARTS, fmgPageValues.VEHICLE_PARTS, false], @@ -195,6 +315,94 @@ describe("vehicle-questions-mixin", () => { }) }); + describe("setupInitialData", () => { + describe("should always", () => { + test("return glass with new key attribute", async () => { + // Arrange + const { wrapper } = setupMocks({}); + const glass = { + "glassName": "Single", + "glassLocation": "Windshield", + }; + const i = 0; + + // Act + const returnedGlass = await wrapper.vm.setupInitialData(glass, i); + + // Assert + expect(returnedGlass).toMatchObject({"key": "Windshield-Single"}); + }); + }); + + describe("if no alreadyAnsweredQuestions", () => { + test("should return glass with answerData of null", async () => { + // Arrange + const glass = { + "glassName": "Single", + "glassLocation": "Windshield" + }; + const i = 0; + const { wrapper } = setupMocks({}); + + // Act + const returnedGlass = await wrapper.vm.setupInitialData(glass, i); + + // Assert + expect(returnedGlass).toMatchObject({"answerData": null}); + }); + }); + + describe("if alreadyAnsweredQuestions", () => { + test("should return glass with answerResult within answerData", async () => { + // Arrange + const glass = { + "glassName": "Single", + "glassLocation": "Windshield", + "questions": [ + { + "questionSequence": 1, + "questionText": "Does the rubber seal around your windshield have a chrome strip running through it?", + "answers": [ + { + "answerResult": "WKT D1106 C", + "answerText": "Yes", + "nextQuestionSequence": null + }, + { + "answerResult": "WKT D1106 B", + "answerText": "No", + "nextQuestionSequence": null + } + ] + } + ], + }; + const i = 0; + const alreadyAnsweredQuestions = [ + { + "glassLocation": "Windshield", + "glassName": "Single", + "partNum": "WKT D1106 C", + "answeredQuestions": [ + { + "questionText": "Does the rubber seal around your windshield have a chrome strip running through it?", + "selectedAnswerText": "Yes", + "questionNum": 1 + } + ] + } + ]; + const { wrapper } = setupMocks({}); + + // Act + const returnedGlass = await wrapper.vm.setupInitialData(glass, i, alreadyAnsweredQuestions); + + // Assert + expect(returnedGlass.answerData).toMatchObject({"answerResult": "WKT D1106 C"}); + }); + }); + }); + describe("navigateForward", () => { describe("should go to parts-questions", () => { test("single glass location has part question => go to parts-questions", async () => { @@ -1160,6 +1368,18 @@ describe("vehicle-questions-mixin", () => { expect(wrapper.vm.$router.navigateWithoutSaving).toHaveBeenCalledWith(navigationScenarios.CLICKED_BACK_WITH_NO_QUESTIONS, {"query": {"fmgPage": fmgPageValues.QUOTE}}) }) + test("current page is quote and there are capability questions => go to capability questions", () => { + // Arrange + const { wrapper } = setupMocks({ fmgPage: fmgPageValues.QUOTE }); + wrapper.vm.hasCapabilityQuestions = jest.fn().mockReturnValue(true); + + // Act + wrapper.vm.backButtonAction(); + + // Assert + expect(wrapper.vm.$router.navigateWithoutSaving).toHaveBeenCalledWith(navigationScenarios.CLICKED_BACK_WITH_CAPABILITY_QUESTIONS, {"query": {"fmgPage": fmgPageValues.QUOTE}}) + }) + test("current page is quote and there are part questions and molding questions => go to molding questions", () => { // Arrange const { wrapper } = setupMocks({ fmgPage: fmgPageValues.QUOTE }); @@ -1209,7 +1429,15 @@ function setupMocks({ fmgPage = fmgPageValues.VIN_LOOKUP }) { const baseMixin = setupMocksForJsFiles({ actionList: [{ actionName: storeActions.GET_CAPABILITY_QUESTIONS, - data: [], + data: [ + { + answers: [ + { + answerResult1: "testing" + } + ] + } + ], }] });