From 0e387da199721840c559306b7b8dcaeedbf17182 Mon Sep 17 00:00:00 2001 From: Katie Date: Thu, 30 Jun 2022 08:40:09 -0400 Subject: [PATCH 1/5] CSR-343 Add tests --- .../glass-part-question.spec.js | 82 +++++++++++++++++++ .../glass-part-question.vue | 7 +- 2 files changed, 86 insertions(+), 3 deletions(-) diff --git a/src/layouts/vehicle-parts/glass-part-question/glass-part-question.spec.js b/src/layouts/vehicle-parts/glass-part-question/glass-part-question.spec.js index 26a16e78d..1fc27fb52 100644 --- a/src/layouts/vehicle-parts/glass-part-question/glass-part-question.spec.js +++ b/src/layouts/vehicle-parts/glass-part-question/glass-part-question.spec.js @@ -108,9 +108,90 @@ describe("glass-part-question.vue", () => { expect(wrapper.vm.selectedPartNumber).toEqual(null); }); + test("default is selected if only one option", async () => { + // Arrange + store.getters.pageData.mockReset(); + store.getters.pageData.mockReturnValueOnce({ partsOrQuestions: [{glassName: "Stationary", glassLocation: "Rear", parts: [{ partNumber: "DB12209GTYN", color: "Green Tint"}]}] }); + const { wrapper } = setupMocks(featureListData); + + // Act + await wrapper.vm.$nextTick(); + await wrapper.setData({ selectedTint: "Green Tint" }); + // take emitted value, pass down as modelValue + // yes, yes, it's not ideal + await wrapper.setProps({ modelValue: wrapper.emitted()["update:modelValue"][0][0] }) + await wrapper.vm.$nextTick(); + + // Assert + expect(wrapper.vm.selectedPartNumber).toBe("DB12209GTYN"); + }); + + test("default is not selected if more than one option", async () => { + // Arrange + store.getters.pageData.mockReset(); + store.getters.pageData.mockReturnValueOnce({ partsOrQuestions: [{glassName: "Stationary", glassLocation: "Rear", parts: [{ partNumber: "DB12209GTYN", color: "Green Tint"}, { partNumber: "DB12209GTYNXXX", color: "Green Tint"}]}] }); + const { wrapper } = setupMocks(featureListData); + + // Act + await wrapper.vm.$nextTick(); + await wrapper.setData({ selectedTint: "Green Tint" }); + await wrapper.vm.$nextTick(); + + // Assert + expect(wrapper.emitted()["update:modelValue"]).toBeFalsy(); + expect(wrapper.vm.selectedPartNumber).toBeFalsy(); + }) + + const partsForSelectedTintTestCases = [ + ["Rear", "Stationary", "Green Tint", [{ partNumber: "Glass1", color: "Green Tint"}, { partNumber: "Glass3", color: "Green Tint"}, { partNumber: "Glass4", color: "Green Tint"}, { partNumber: "Glass6", color: "Green Tint"} ]], + ["Rear", "Stationary", "Blue Tint", [{ partNumber: "Glass2", color: "Blue Tint"}, { partNumber: "Glass5", color: "Blue Tint"}]], + ["Rear", "Stationary", "Red Tint", [{ partNumber: "Glass7", color: "Red Tint"}]], + ["Windshield", "Single", "Green Tint", [{ partNumber: "Windshield1", color: "Green Tint"}, { partNumber: "Windshield2", color: "Green Tint"}]], + ["Windshield", "Single", "Blue Tint", []], + ["Driver", "Quarter", "Green Tint", []] + ]; + test.each(partsForSelectedTintTestCases)("partsForSelectedTint returns correct parts", async (glassLocation, glassName, selectedTint, expectedResults) => { + // Arrange + store.getters.pageData.mockReset(); + store.getters.pageData.mockReturnValueOnce({ partsOrQuestions: [ + { + glassName: "Stationary", + glassLocation: "Rear", + parts: [ + { partNumber: "Glass1", color: "Green Tint"}, + { partNumber: "Glass2", color: "Blue Tint"}, + { partNumber: "Glass3", color: "Green Tint"}, + { partNumber: "Glass4", color: "Green Tint"}, + { partNumber: "Glass5", color: "Blue Tint"}, + { partNumber: "Glass6", color: "Green Tint"}, + { partNumber: "Glass7", color: "Red Tint"} + ] + }, + { + glassName: "Single", + glassLocation: "Windshield", + parts: [{ partNumber: "Windshield1", color: "Green Tint"}, { partNumber: "Windshield2", color: "Green Tint"}] + } + ]}); + const { wrapper } = setupMocks({ + glassLocationProp: glassLocation, + glassNameProp: glassName, + colorAnswersProp: [], + }); + + // Act + await wrapper.setData({ selectedTint: selectedTint }); + + console.log(expectedResults) + console.log(wrapper.vm.partsForSelectedTint) + + // Assert + expect(expectedResults).toEqual(wrapper.vm.partsForSelectedTint); + }); }); + function setupMocks({ glassNameProp, glassLocationProp, colorAnswersProp, modelValueProp }) { //Mock store store.getters.pageData.mockReturnValueOnce({ partsOrQuestions: [{glassName: "Stationary", glassLocation: "Rear", parts: []}] }); @@ -135,6 +216,7 @@ function setupMocks({ glassNameProp, glassLocationProp, colorAnswersProp, modelV }; const wrapper = shallowMount(glassPartQuestion, mountOptions); + require = jest.fn(); return { wrapper }; } \ No newline at end of file diff --git a/src/layouts/vehicle-parts/glass-part-question/glass-part-question.vue b/src/layouts/vehicle-parts/glass-part-question/glass-part-question.vue index 1c5dd1ae7..608cf55cb 100644 --- a/src/layouts/vehicle-parts/glass-part-question/glass-part-question.vue +++ b/src/layouts/vehicle-parts/glass-part-question/glass-part-question.vue @@ -116,10 +116,11 @@ export default { }, partsForSelectedTint() { - return this.PartDataFromApi.partsOrQuestions?.filter(dataForGlassLocationAndName => + const matchingGlass = this.PartDataFromApi.partsOrQuestions?.filter(dataForGlassLocationAndName => dataForGlassLocationAndName.glassName == this.glassName && - dataForGlassLocationAndName.glassLocation == this.glassLocation)[0] - .parts?.filter(part => part.color == this.selectedTint) ?? []; + dataForGlassLocationAndName.glassLocation == this.glassLocation); + const matchingGlassParts = matchingGlass?.length == 1 ? matchingGlass[0].parts : []; + return matchingGlassParts.filter(part => part.color == this.selectedTint) ?? []; }, // Creates a map of the feature list data in the correct Name/Value From 1f805627653429310c8b53d65fdf1813b161d863 Mon Sep 17 00:00:00 2001 From: Katie Date: Thu, 30 Jun 2022 08:40:32 -0400 Subject: [PATCH 2/5] CSR-343 Cleanup --- .../glass-part-question/glass-part-question.spec.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/layouts/vehicle-parts/glass-part-question/glass-part-question.spec.js b/src/layouts/vehicle-parts/glass-part-question/glass-part-question.spec.js index 1fc27fb52..d46a5c995 100644 --- a/src/layouts/vehicle-parts/glass-part-question/glass-part-question.spec.js +++ b/src/layouts/vehicle-parts/glass-part-question/glass-part-question.spec.js @@ -182,9 +182,6 @@ describe("glass-part-question.vue", () => { // Act await wrapper.setData({ selectedTint: selectedTint }); - console.log(expectedResults) - console.log(wrapper.vm.partsForSelectedTint) - // Assert expect(expectedResults).toEqual(wrapper.vm.partsForSelectedTint); }); From 15edd47d9492c9a1b73d92da640c7abbdbf41d16 Mon Sep 17 00:00:00 2001 From: Katie Date: Thu, 30 Jun 2022 08:41:51 -0400 Subject: [PATCH 3/5] CSR-343 Cleanup --- .../glass-part-question/glass-part-question.spec.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/layouts/vehicle-parts/glass-part-question/glass-part-question.spec.js b/src/layouts/vehicle-parts/glass-part-question/glass-part-question.spec.js index d46a5c995..52471bf34 100644 --- a/src/layouts/vehicle-parts/glass-part-question/glass-part-question.spec.js +++ b/src/layouts/vehicle-parts/glass-part-question/glass-part-question.spec.js @@ -213,7 +213,6 @@ function setupMocks({ glassNameProp, glassLocationProp, colorAnswersProp, modelV }; const wrapper = shallowMount(glassPartQuestion, mountOptions); - require = jest.fn(); return { wrapper }; } \ No newline at end of file From e2af902f4001e90fb2097d9eb412fcd1350bd768 Mon Sep 17 00:00:00 2001 From: Katie Date: Thu, 30 Jun 2022 08:58:21 -0400 Subject: [PATCH 4/5] CSR-343 Fix chip button CSS --- .../list-button-horizontal.vue | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/ux-components/list-button-horizontal/list-button-horizontal.vue b/src/ux-components/list-button-horizontal/list-button-horizontal.vue index dfd322cb3..e60d0d22c 100644 --- a/src/ux-components/list-button-horizontal/list-button-horizontal.vue +++ b/src/ux-components/list-button-horizontal/list-button-horizontal.vue @@ -223,18 +223,26 @@ export default { span { font-size: .875rem; } - } + } +} + +.col { &:first-of-type { - label { - border-bottom-left-radius: 0.5rem; - border-top-left-radius: 0.5rem; - z-index: 2; + .list-button-horizontal { + label { + border-bottom-left-radius: 0.5rem; + border-top-left-radius: 0.5rem; + z-index: 2; + } } } + &:last-of-type { - label { - border-bottom-right-radius: 0.5rem; - border-top-right-radius: 0.5rem; + .list-button-horizontal { + label { + border-bottom-right-radius: 0.5rem; + border-top-right-radius: 0.5rem; + } } } } From a112ef2754bc294f07ee08a4abdc86ed0170b8a6 Mon Sep 17 00:00:00 2001 From: Katie Date: Thu, 30 Jun 2022 09:10:02 -0400 Subject: [PATCH 5/5] CSR-343 Add blank quote page --- src/layouts/quote/quote.vue | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 src/layouts/quote/quote.vue diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue new file mode 100644 index 000000000..158150baf --- /dev/null +++ b/src/layouts/quote/quote.vue @@ -0,0 +1,10 @@ + \ No newline at end of file