From 5535aed424e0071a5f7f472dd760d9cf74b8946e Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Wed, 7 Jun 2023 16:29:59 -0400 Subject: [PATCH 01/25] Initial Blockout --- .../service-package-review.spec.js | 3 ++ .../service-package-review.vue | 37 +++++++++++++++++++ src/layouts/review/review.vue | 10 +++++ 3 files changed, 50 insertions(+) create mode 100644 src/layouts/review/review-sections/service-package-review/service-package-review.spec.js create mode 100644 src/layouts/review/review-sections/service-package-review/service-package-review.vue diff --git a/src/layouts/review/review-sections/service-package-review/service-package-review.spec.js b/src/layouts/review/review-sections/service-package-review/service-package-review.spec.js new file mode 100644 index 000000000..a313de0e7 --- /dev/null +++ b/src/layouts/review/review-sections/service-package-review/service-package-review.spec.js @@ -0,0 +1,3 @@ +describe("Service Package Review Block", () => { + test.todo("Add more tests as specific functionality is added."); +}); diff --git a/src/layouts/review/review-sections/service-package-review/service-package-review.vue b/src/layouts/review/review-sections/service-package-review/service-package-review.vue new file mode 100644 index 000000000..1b1a4e4c0 --- /dev/null +++ b/src/layouts/review/review-sections/service-package-review/service-package-review.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/layouts/review/review.vue b/src/layouts/review/review.vue index e3c173a02..6d7fb8b3c 100644 --- a/src/layouts/review/review.vue +++ b/src/layouts/review/review.vue @@ -48,6 +48,12 @@ cmsWidgetName="DamageReviewWidget" :damage="damageInfo" @edit-clicked="editDamage" /> + +
+ +
@@ -66,8 +72,10 @@ import funnelFooter from "@/fmg-components/funnel-footer/funnel-footer"; import vehicleBanner from "@/fmg-components/vehicle-banner/vehicle-banner"; import buttonMain from "@/ux-components/button-main/button-main"; import textBlock from "@/digital-components/text-block/text-block"; + import vehicleReview from "@/layouts/review/review-sections/vehicle-review/vehicle-review"; import damageReview from "@/layouts/review/review-sections/damage-review/damage-review"; +import servicePackageReview from "@/layouts/review/review-sections/service-package-review/service-package-review"; import { fetchCmsContentForPage } from "@/helpers/cms-content-helper"; import { settleAllPromises } from "@/helpers/layout-helper"; @@ -113,6 +121,7 @@ export default { this.$route ); }, + editServicePackage() {}, }, computed: { subHeaderTitle() { @@ -139,6 +148,7 @@ export default { textBlock, vehicleReview, damageReview, + servicePackageReview, }, }; From e0aad5a1ae8f8a5f589cb541f2e608c346cdae74 Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Wed, 7 Jun 2023 16:31:39 -0400 Subject: [PATCH 02/25] Fix disappearing hr tags --- src/layouts/review/review.vue | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/layouts/review/review.vue b/src/layouts/review/review.vue index 6d7fb8b3c..4620654e4 100644 --- a/src/layouts/review/review.vue +++ b/src/layouts/review/review.vue @@ -27,7 +27,9 @@ class="mb-2" @click-event="forwardButtonAction" /> -
+
+
+
-
+
+
+
Date: Thu, 8 Jun 2023 11:50:36 -0400 Subject: [PATCH 03/25] Change edit links to have proper mouse-hover. --- src/layouts/review/review-block/review-block.vue | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/layouts/review/review-block/review-block.vue b/src/layouts/review/review-block/review-block.vue index 0b1f913c3..e1a8e0128 100644 --- a/src/layouts/review/review-block/review-block.vue +++ b/src/layouts/review/review-block/review-block.vue @@ -5,7 +5,12 @@ :cmsWidgetName="headerCmsWidgetName" typeStyle="body small bold dark" margin="mt-0" /> - +
{{ item }} From 043202a1d4c138786c6a3e9c3793e5c7b17ce64a Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Thu, 8 Jun 2023 13:46:08 -0400 Subject: [PATCH 04/25] Basic CMS add. --- src/layouts/review/review.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/layouts/review/review.vue b/src/layouts/review/review.vue index 4620654e4..85d8d2a06 100644 --- a/src/layouts/review/review.vue +++ b/src/layouts/review/review.vue @@ -54,7 +54,7 @@
From af6809256e966e385b04b02dec26ef5f1210abae Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Thu, 22 Jun 2023 08:57:32 -0400 Subject: [PATCH 05/25] Extract & refactor service package logic to helper class. --- src/helpers/service-package-helper.js | 252 +++++ src/helpers/service-package-helper.spec.js | 1054 ++++++++++++++++++++ 2 files changed, 1306 insertions(+) create mode 100644 src/helpers/service-package-helper.js create mode 100644 src/helpers/service-package-helper.spec.js diff --git a/src/helpers/service-package-helper.js b/src/helpers/service-package-helper.js new file mode 100644 index 000000000..7ce612ce3 --- /dev/null +++ b/src/helpers/service-package-helper.js @@ -0,0 +1,252 @@ +import { partTypeStrings } from "@/constants/part-type-strings"; +import { damageLocationsSelected as glassLocations } from "@/constants/damage-locations-selected"; + +export const packageNames = { + TIER_ONE: "TierOne", + TIER_TWO: "TierTwo", + TIER_THREE: "TierThree", +}; + +export function containsLineItemWithPartType(typeToFind, itemsToSearch) { + const partTypeMatches = findLineItemsWithPartType(typeToFind, itemsToSearch); + return !!partTypeMatches.length; +} + +export function findLineItemsWithPartType(typeToFind, itemsToSearch) { + const partTypeMatches = itemsToSearch.filter( + (lineItem) => lineItem.partType.toUpperCase() === typeToFind.toUpperCase() + ); + + return partTypeMatches; +} + +export function getVapsLineItems(availableLineItems, vapTypes) { + let lineItems = []; + + for (let i = 0; i < vapTypes.length; i++) { + lineItems.push(...findLineItemsWithPartType(vapTypes[i], availableLineItems)); + } + + return lineItems; +} + +export function containsGlassPieceWithLocation(locationToFind, glassPiecesToSearch) { + const glassLocationMatches = glassPiecesToSearch.filter( + (glassPiece) => glassPiece.glassLocation.toUpperCase() === locationToFind.toUpperCase() + ); + + return !!glassLocationMatches.length; +} + +export function getAvailablePackages(glassToReplace, availableLineItems, isRepair) { + let tierOneVaps = getPackageContents( + glassToReplace, + availableLineItems, + isRepair, + packageNames.TIER_ONE + ); + let tierTwoVaps = getPackageContents( + glassToReplace, + availableLineItems, + isRepair, + packageNames.TIER_TWO + ); + let tierThreeVaps = getPackageContents( + glassToReplace, + availableLineItems, + isRepair, + packageNames.TIER_THREE + ); + + if (tierTwoVaps.length === 0) { + return [ + { + packageName: packageNames.TIER_ONE, + vapTypes: tierOneVaps, + }, + { + packageName: packageNames.TIER_THREE, + vapTypes: tierThreeVaps, + }, + ]; + } else { + return [ + { + packageName: packageNames.TIER_ONE, + vapTypes: tierOneVaps, + }, + { + packageName: packageNames.TIER_TWO, + vapTypes: tierTwoVaps, + }, + { + packageName: packageNames.TIER_THREE, + vapTypes: tierThreeVaps, + }, + ]; + } +} + +export function getPackageContents(glassToReplace, availableLineItems, isRepair, targetTier) { + let vaps = []; + + if (shouldFrontWipersBeAvailable(glassToReplace, availableLineItems, isRepair, targetTier)) { + vaps.push(partTypeStrings.FRONT_WIPER); + } + if (shouldRearWipersBeAvailable(glassToReplace, availableLineItems, isRepair, targetTier)) { + vaps.push(partTypeStrings.REAR_WIPER); + } + if (shouldRainDefenseBeAvailable(glassToReplace, availableLineItems, isRepair, targetTier)) { + vaps.push(partTypeStrings.RAIN_DEFENSE); + } + + return vaps; +} + +export function shouldFrontWipersBeAvailable( + glassToReplace, + availableLineItems, + isRepair, + targetTier +) { + const frontWiperIsAvailable = containsLineItemWithPartType( + partTypeStrings.FRONT_WIPER, + availableLineItems + ); + const isFrontWindshieldTask = + isRepair || containsGlassPieceWithLocation(glassLocations.WINDSHIELD, glassToReplace); + + switch (targetTier) { + case packageNames.TIER_TWO: + return frontWiperIsAvailable && isFrontWindshieldTask; + case packageNames.TIER_THREE: + return frontWiperIsAvailable; + default: + return false; + } +} + +export function shouldRearWipersBeAvailable( + glassToReplace, + availableLineItems, + isRepair, + targetTier +) { + const rearWiperIsAvailable = containsLineItemWithPartType( + partTypeStrings.REAR_WIPER, + availableLineItems + ); + const frontWiperIsAvailable = containsLineItemWithPartType( + partTypeStrings.FRONT_WIPER, + availableLineItems + ); + const isRearWindshieldTask = containsGlassPieceWithLocation( + glassLocations.REAR, + glassToReplace + ); + + switch (targetTier) { + case packageNames.TIER_TWO: + return rearWiperIsAvailable && isRearWindshieldTask; + case packageNames.TIER_THREE: + return rearWiperIsAvailable && (isRearWindshieldTask || !frontWiperIsAvailable); + default: + return false; + } +} + +export function shouldRainDefenseBeAvailable( + glassToReplace, + availableLineItems, + isRepair, + targetTier +) { + const isTierThree = targetTier === packageNames.TIER_THREE; + const rainDefenseIsAvailable = containsLineItemWithPartType( + partTypeStrings.RAIN_DEFENSE, + availableLineItems + ); + const frontWipersInTierTwo = shouldFrontWipersBeAvailable( + glassToReplace, + availableLineItems, + isRepair, + packageNames.TIER_TWO + ); + const frontWipersInTierThree = shouldFrontWipersBeAvailable( + glassToReplace, + availableLineItems, + isRepair, + packageNames.TIER_THREE + ); + const rearWipersInTierTwo = shouldRearWipersBeAvailable( + glassToReplace, + availableLineItems, + isRepair, + packageNames.TIER_TWO + ); + + return ( + isTierThree && + rainDefenseIsAvailable && + !(rearWipersInTierTwo && !frontWipersInTierTwo && frontWipersInTierThree) + ); +} + +export function getLowestTierForType(glassToReplace, availableLineItems, isRepair, partType) { + const packages = getAvailablePackages(glassToReplace, availableLineItems, isRepair); + for (let i = 0; i < packages.length; i++) { + for (let j = 0; j < packages[i].vapTypes.length; j++) { + if (packages[i].vapTypes[j].toUpperCase() === partType.toUpperCase()) { + return packages[i].packageName; + } + } + } + + return packageNames.TIER_ONE; +} + +export function getHighestRequiredTier(glassToReplace, availableLineItems, isRepair, vaps) { + let currentHighestTier = packageNames.TIER_ONE; + for (let i = 0; i < vaps.length; i++) { + const lowestTierForItem = getLowestTierForType( + glassToReplace, + availableLineItems, + isRepair, + vaps[i].partType + ); + + currentHighestTier = maxTier(currentHighestTier, lowestTierForItem); + } + + return currentHighestTier; +} + +export function getHighestFullySatisfiedTier(glassToReplace, availableLineItems, isRepair, vaps) { + const packages = getAvailablePackages(glassToReplace, availableLineItems, isRepair); + let highestSatisfiedPackage = packageNames.TIER_ONE; + + for (let i = 0; i < packages.length; i++) { + let isPackageSatisfied = true; + for (let j = 0; j < packages[i].vapTypes.length; j++) { + isPackageSatisfied = + isPackageSatisfied && containsLineItemWithPartType(packages[i].vapTypes[j], vaps); + } + if (isPackageSatisfied) { + highestSatisfiedPackage = packages[i].packageName; + } + } + + return highestSatisfiedPackage; +} + +function maxTier(tierA, tierB) { + if (tierA === packageNames.TIER_THREE || tierB === packageNames.TIER_THREE) { + return packageNames.TIER_THREE; + } + + if (tierA === packageNames.TIER_TWO || tierB === packageNames.TIER_TWO) { + return packageNames.TIER_TWO; + } + + return packageNames.TIER_ONE; +} diff --git a/src/helpers/service-package-helper.spec.js b/src/helpers/service-package-helper.spec.js new file mode 100644 index 000000000..eaf787a96 --- /dev/null +++ b/src/helpers/service-package-helper.spec.js @@ -0,0 +1,1054 @@ +import * as servicePackageHelper from "@/helpers/service-package-helper"; +import { partTypeStrings } from "@/constants/part-type-strings"; +import { damageLocationsSelected as glassLocations } from "@/constants/damage-locations-selected"; + +describe("service-package-helper.js", () => { + describe("containsLineItemWithPartType", () => { + it("Returns true when type is present", () => { + // Arrange + const lineItems = [ + recalLineItem, + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rainDefenseLineItem, + ]; + const partType = partTypeStrings.RAIN_DEFENSE; + + // Act + const result = servicePackageHelper.containsLineItemWithPartType(partType, lineItems); + + // Assert + expect(result).toBe(true); + }); + + it("Returns true when type is present multiple times", () => { + // Arrange + const lineItems = [ + recalLineItem, + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rainDefenseLineItem, + ]; + const partType = partTypeStrings.FRONT_WIPER; + + // Act + const result = servicePackageHelper.containsLineItemWithPartType(partType, lineItems); + + // Assert + expect(result).toBe(true); + }); + + it("Returns false when type is not present", () => { + // Arrange + const lineItems = [ + recalLineItem, + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + ]; + const partType = partTypeStrings.RAIN_DEFENSE; + + // Act + const result = servicePackageHelper.containsLineItemWithPartType(partType, lineItems); + + // Assert + expect(result).toBe(false); + }); + + it("Returns false with empty array", () => { + // Arrange + const lineItems = []; + const partType = partTypeStrings.RAIN_DEFENSE; + + // Act + const result = servicePackageHelper.containsLineItemWithPartType(partType, lineItems); + + // Assert + expect(result).toBe(false); + }); + }); + + describe("findLineItemsWithPartType", () => { + it("Returns an item of the same type when present", () => { + // Arrange + const lineItems = [ + recalLineItem, + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rainDefenseLineItem, + ]; + const partType = partTypeStrings.RAIN_DEFENSE; + + // Act + const result = servicePackageHelper.findLineItemsWithPartType(partType, lineItems); + + // Assert + expect(result.length).toBe(1); + expect(result[0].partType).toEqual(partType); + }); + + it("Returns an empty array when no matching items are present", () => { + // Arrange + const lineItems = [ + recalLineItem, + passengerFrontWiperLineItem, + driverFrontWiperLineItem, + ]; + const partType = partTypeStrings.RAIN_DEFENSE; + + // Act + const result = servicePackageHelper.findLineItemsWithPartType(partType, lineItems); + + // Assert + expect(result.length).toBe(0); + }); + + it("Returns all matching items when multiple are present", () => { + // Arrange + const lineItems = [ + recalLineItem, + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rainDefenseLineItem, + ]; + const partType = partTypeStrings.FRONT_WIPER; + + // Act + const result = servicePackageHelper.findLineItemsWithPartType(partType, lineItems); + + // Assert + expect(result.length).toBe(2); + expect(result[0].partType).toEqual(partType); + expect(result[1].partType).toEqual(partType); + expect(result[0].partNumber).not.toEqual(result[1].partNumber); + }); + + it("Is not case sensitive", () => { + // Arrange + const lineItems = [ + recalLineItem, + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rainDefenseLineItem, + ]; + const partType = "rAin DEfenSe"; + + // Act + const result = servicePackageHelper.findLineItemsWithPartType(partType, lineItems); + + // Assert + expect(result.length).toBe(1); + expect(result[0].partType).toEqual(partTypeStrings.RAIN_DEFENSE); + }); + }); + + describe("getVapsLineItems", () => { + it("Returns line items matching given types", () => { + // Arrange + const lineItems = [ + recalLineItem, + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rainDefenseLineItem, + ]; + + const vapTypes = [partTypeStrings.RAIN_DEFENSE]; + + // Act + const result = servicePackageHelper.getVapsLineItems(lineItems, vapTypes); + + // Assert + expect(result.length).toBe(1); + expect(result[0].partType).toEqual(partTypeStrings.RAIN_DEFENSE); + }); + + it("Returns all matching line items, when multiple match a single type", () => { + // Arrange + const lineItems = [ + recalLineItem, + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rainDefenseLineItem, + ]; + + const vapTypes = [partTypeStrings.FRONT_WIPER]; + + // Act + const result = servicePackageHelper.getVapsLineItems(lineItems, vapTypes); + + // Assert + expect(result.length).toBe(2); + expect(result[0].partType).toEqual(partTypeStrings.FRONT_WIPER); + expect(result[1].partType).toEqual(partTypeStrings.FRONT_WIPER); + expect(result[0].partNumber).not.toEqual(result[1].partNumber); + }); + + it("Returns only line items in the given set", () => { + // Arrange + const lineItems = [recalLineItem, passengerFrontWiperLineItem, rainDefenseLineItem]; + + const vapTypes = [partTypeStrings.FRONT_WIPER]; + + // Act + const result = servicePackageHelper.getVapsLineItems(lineItems, vapTypes); + + // Assert + expect(result.length).toBe(1); + expect(result[0].partType).toEqual(partTypeStrings.FRONT_WIPER); + expect(result[0].partNumber).toEqual(passengerFrontWiperLineItem.partNumber); + }); + + it("Returns all matching items when multiple vap types are requested", () => { + // Arrange + const lineItems = [recalLineItem, passengerFrontWiperLineItem, rainDefenseLineItem]; + + const vapTypes = [partTypeStrings.FRONT_WIPER, partTypeStrings.RAIN_DEFENSE]; + + // Act + const result = servicePackageHelper.getVapsLineItems(lineItems, vapTypes); + + // Assert + expect(result.length).toBe(2); + expect(result[0].partType).not.toEqual(result[1].partType); + }); + }); + + describe("containsGlassPieceWithLocation", () => { + it("Returns true when location is present", () => { + // Arrange + const locations = [frontWindshieldGlass, sideGlass]; + + const locationName = glassLocations.WINDSHIELD; + + // Act + const result = servicePackageHelper.containsGlassPieceWithLocation( + locationName, + locations + ); + + // Assert + expect(result).toBe(true); + }); + + it("Returns true when location is present multiple times", () => { + // Arrange + const locations = [frontWindshieldGlass, frontWindshieldGlass, sideGlass]; + + const locationName = glassLocations.WINDSHIELD; + + // Act + const result = servicePackageHelper.containsGlassPieceWithLocation( + locationName, + locations + ); + + // Assert + expect(result).toBe(true); + }); + + it("Returns false when location is not present", () => { + // Arrange + const locations = [frontWindshieldGlass, sideGlass]; + + const locationName = glassLocations.REAR; + + // Act + const result = servicePackageHelper.containsGlassPieceWithLocation( + locationName, + locations + ); + + // Assert + expect(result).toBe(false); + }); + + it("Returns false with empty array", () => { + // Arrange + const locations = []; + + const locationName = glassLocations.WINDSHIELD; + + // Act + const result = servicePackageHelper.containsGlassPieceWithLocation( + locationName, + locations + ); + + // Assert + expect(result).toBe(false); + }); + + it("Is not case sensitive", () => { + // Arrange + const locations = [frontWindshieldGlass, sideGlass]; + + const locationName = "windShieLd"; + + // Act + const result = servicePackageHelper.containsGlassPieceWithLocation( + locationName, + locations + ); + + // Assert + expect(result).toBe(true); + }); + }); + + describe("getAvailablePackages", () => { + it("Returns two packages when there is not a viable tier-two option.", () => { + // Arrange + const damageLocations = [sideGlass]; + + const availableLineItems = [rainDefenseLineItem]; + + // Act + const results = servicePackageHelper.getAvailablePackages( + damageLocations, + availableLineItems, + false + ); + + // Assert + expect(results.length).toBe(2); + expect(results[0].packageName).toEqual(servicePackageHelper.packageNames.TIER_ONE); + expect(results[1].packageName).toEqual(servicePackageHelper.packageNames.TIER_THREE); + }); + + it("Returns three packages when wipers are available in tier two", () => { + // Arrange + const damageLocations = [rearWindshieldGlass]; + + const availableLineItems = [ + driverFrontWiperLineItem, + rearWiperLineItem, + rainDefenseLineItem, + ]; + + // Act + const results = servicePackageHelper.getAvailablePackages( + damageLocations, + availableLineItems, + true + ); + + // Assert + expect(results.length).toBe(3); + expect(results[0].packageName).toEqual(servicePackageHelper.packageNames.TIER_ONE); + expect(results[1].packageName).toEqual(servicePackageHelper.packageNames.TIER_TWO); + expect(results[2].packageName).toEqual(servicePackageHelper.packageNames.TIER_THREE); + }); + }); + + describe("getPackageContents", () => { + describe("Match figma cases", () => { + test.todo("Implement specific cases."); + }); + }); + + describe("shouldFrontWipersBeAvailable", () => { + it("Should be available in tier 2 and 3 if windshield damage and available", () => { + // Arrange + const damageLocations = [frontWindshieldGlass]; + const availableLineItems = [driverFrontWiperLineItem, passengerFrontWiperLineItem]; + const isRepair = false; + + // Act + const resultTwo = servicePackageHelper.shouldFrontWipersBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_TWO + ); + const resultThree = servicePackageHelper.shouldFrontWipersBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_THREE + ); + + // Assert + expect(resultTwo).toBe(true); + expect(resultThree).toBe(true); + }); + + it("Should be available in tier 2 and 3 if repair and available", () => { + // Arrange + const damageLocations = []; + const availableLineItems = [driverFrontWiperLineItem, passengerFrontWiperLineItem]; + const isRepair = true; + + // Act + const resultTwo = servicePackageHelper.shouldFrontWipersBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_TWO + ); + const resultThree = servicePackageHelper.shouldFrontWipersBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_THREE + ); + + // Assert + expect(resultTwo).toBe(true); + expect(resultThree).toBe(true); + }); + + it("Should not be available in tier 2 if not windshield damage or repair", () => { + // Arrange + const damageLocations = []; + const availableLineItems = [driverFrontWiperLineItem, passengerFrontWiperLineItem]; + const isRepair = false; + + // Act + const result = servicePackageHelper.shouldFrontWipersBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_TWO + ); + + // Assert + expect(result).toBe(false); + }); + + it("Should be available in tier 3 even if not windshield repair or replace", () => { + // Arrange + const damageLocations = []; + const availableLineItems = [driverFrontWiperLineItem, passengerFrontWiperLineItem]; + const isRepair = false; + + // Act + const result = servicePackageHelper.shouldFrontWipersBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_THREE + ); + + // Assert + expect(result).toBe(true); + }); + + it("Should not be available in any tier if not available.", () => { + // Arrange + const damageLocations = [frontWindshieldGlass]; + const availableLineItems = []; + const isRepair = true; + + // Act + const resultOne = servicePackageHelper.shouldFrontWipersBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_ONE + ); + const resultTwo = servicePackageHelper.shouldFrontWipersBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_TWO + ); + const resultThree = servicePackageHelper.shouldFrontWipersBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_THREE + ); + + // Assert + expect(resultOne).toBe(false); + expect(resultTwo).toBe(false); + expect(resultThree).toBe(false); + }); + + it("Should not be available in tier 1", () => { + // Arrange + const damageLocations = [frontWindshieldGlass]; + const availableLineItems = [driverFrontWiperLineItem, passengerFrontWiperLineItem]; + const isRepair = true; + + // Act + const result = servicePackageHelper.shouldFrontWipersBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_ONE + ); + + // Assert + expect(result).toBe(false); + }); + }); + + describe("shouldRearWipersBeAvailable", () => { + it("Should be available in tier 2 and 3 if rear damage and available", () => { + // Arrange + const damageLocations = [rearWindshieldGlass]; + const availableLineItems = [rearWiperLineItem]; + const isRepair = false; + + // Act + const resultTwo = servicePackageHelper.shouldRearWipersBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_TWO + ); + const resultThree = servicePackageHelper.shouldRearWipersBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_THREE + ); + + // Assert + expect(resultTwo).toBe(true); + expect(resultThree).toBe(true); + }); + + it("Should not be available in tier 2 if not rear damage", () => { + // Arrange + const damageLocations = [frontWindshieldGlass]; + const availableLineItems = [rearWiperLineItem]; + const isRepair = false; + + // Act + const result = servicePackageHelper.shouldRearWipersBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_TWO + ); + + // Assert + expect(result).toBe(false); + }); + + it("Should be available in tier 3 without rear damage, if available and no front wipers available", () => { + // Arrange + const damageLocations = [frontWindshieldGlass]; + const availableLineItems = [rearWiperLineItem]; + const isRepair = false; + + // Act + const result = servicePackageHelper.shouldRearWipersBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_THREE + ); + + // Assert + expect(result).toBe(true); + }); + + it("Should not be available in tier 3 without rear damage if front wipers are available", () => { + // Arrange + const damageLocations = []; + const availableLineItems = [ + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rearWiperLineItem, + ]; + const isRepair = false; + + // Act + const result = servicePackageHelper.shouldRearWipersBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_THREE + ); + + // Assert + expect(result).toBe(false); + }); + + it("Should not be available in any tier if not available", () => { + // Arrange + const damageLocations = [rearWindshieldGlass]; + const availableLineItems = []; + const isRepair = false; + + // Act + const resultOne = servicePackageHelper.shouldRearWipersBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_ONE + ); + const resultTwo = servicePackageHelper.shouldRearWipersBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_TWO + ); + const resultThree = servicePackageHelper.shouldRearWipersBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_THREE + ); + + // Assert + expect(resultOne).toBe(false); + expect(resultTwo).toBe(false); + expect(resultThree).toBe(false); + }); + + it("Should not be available in tier 1", () => { + // Arrange + const damageLocations = [rearWindshieldGlass]; + const availableLineItems = [rearWiperLineItem]; + const isRepair = false; + + // Act + const result = servicePackageHelper.shouldRearWipersBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_ONE + ); + + // Assert + expect(result).toBe(false); + }); + }); + + describe("shouldRainDefenseBeAvailable", () => { + it("Should generally be available only in tier 3, if available", () => { + // Arrange + const damageLocations = [frontWindshieldGlass]; + const availableLineItems = [ + rainDefenseLineItem, + driverFrontWiperLineItem, + rearWiperLineItem, + recalLineItem, + ]; + const isRepair = false; + + // Act + const resultOne = servicePackageHelper.shouldRainDefenseBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_ONE + ); + const resultTwo = servicePackageHelper.shouldRainDefenseBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_TWO + ); + const resultThree = servicePackageHelper.shouldRainDefenseBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_THREE + ); + + // Assert + expect(resultOne).toBe(false); + expect(resultTwo).toBe(false); + expect(resultThree).toBe(true); + }); + + it("Should not be available in a specific scenario", () => { + // Arrange + // SPECIFICALLY: no front windshield + const damageLocations = [rearWindshieldGlass]; + const availableLineItems = [ + rainDefenseLineItem, + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rearWiperLineItem, + ]; + // SPECIFICALLY: not repair + const isRepair = false; + + // Act + const result = servicePackageHelper.shouldRainDefenseBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_THREE + ); + + // Assert + expect(result).toBe(false); + }); + + it("Should not be available in any tier if not available", () => { + // Arrange + const damageLocations = [frontWindshieldGlass]; + const availableLineItems = [driverFrontWiperLineItem, rearWiperLineItem, recalLineItem]; + const isRepair = false; + + // Act + const resultOne = servicePackageHelper.shouldRainDefenseBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_ONE + ); + const resultTwo = servicePackageHelper.shouldRainDefenseBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_TWO + ); + const resultThree = servicePackageHelper.shouldRainDefenseBeAvailable( + damageLocations, + availableLineItems, + isRepair, + servicePackageHelper.packageNames.TIER_THREE + ); + + // Assert + expect(resultOne).toBe(false); + expect(resultTwo).toBe(false); + expect(resultThree).toBe(false); + }); + }); + + describe("getLowestTierForType", () => { + it("Should return the tier for items available in one tier only", () => { + // Arrange + const damageLocations = [frontWindshieldGlass, rearWindshieldGlass]; + + const availableLineItems = [ + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rearWiperLineItem, + rainDefenseLineItem, + ]; + + const isRepair = false; + + // Act + const result = servicePackageHelper.getLowestTierForType( + damageLocations, + availableLineItems, + isRepair, + partTypeStrings.RAIN_DEFENSE + ); + + // Assert + expect(result).toEqual(servicePackageHelper.packageNames.TIER_THREE); + }); + + it("Should return tier 2 for items in tier 2 and 3", () => { + // Arrange + const damageLocations = [frontWindshieldGlass, rearWindshieldGlass]; + + const availableLineItems = [ + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rearWiperLineItem, + rainDefenseLineItem, + ]; + + const isRepair = false; + + // Act + const resultFront = servicePackageHelper.getLowestTierForType( + damageLocations, + availableLineItems, + isRepair, + partTypeStrings.FRONT_WIPER + ); + const resultRear = servicePackageHelper.getLowestTierForType( + damageLocations, + availableLineItems, + isRepair, + partTypeStrings.REAR_WIPER + ); + + // Assert + expect(resultFront).toEqual(servicePackageHelper.packageNames.TIER_TWO); + expect(resultRear).toEqual(servicePackageHelper.packageNames.TIER_TWO); + }); + + it("Should return tier 1 for any item not in any tier", () => { + // Arrange + const damageLocations = [frontWindshieldGlass, rearWindshieldGlass]; + + const availableLineItems = [ + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rearWiperLineItem, + ]; + + const isRepair = false; + + // Act + const resultFront = servicePackageHelper.getLowestTierForType( + damageLocations, + availableLineItems, + isRepair, + partTypeStrings.RAIN_DEFENSE + ); + + // Assert + expect(resultFront).toEqual(servicePackageHelper.packageNames.TIER_ONE); + }); + }); + + describe("getHighestRequiredTier", () => { + it("Should return the highest tier among items", () => { + // Arrange + const damageLocations = [frontWindshieldGlass]; + const availableLineItems = [ + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rearWiperLineItem, + rainDefenseLineItem, + ]; + const isRepair = false; + const vaps = [ + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rainDefenseLineItem, + ]; + + // Act + const result = servicePackageHelper.getHighestRequiredTier( + damageLocations, + availableLineItems, + isRepair, + vaps + ); + + // Assert + expect(result).toEqual(servicePackageHelper.packageNames.TIER_THREE); + }); + + it("Should not return a higher tier than items require", () => { + // Arrange + const damageLocations = [frontWindshieldGlass]; + const availableLineItems = [ + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rearWiperLineItem, + rainDefenseLineItem, + ]; + const isRepair = false; + const vaps = [driverFrontWiperLineItem, passengerFrontWiperLineItem]; + + // Act + const result = servicePackageHelper.getHighestRequiredTier( + damageLocations, + availableLineItems, + isRepair, + vaps + ); + + // Assert + expect(result).toEqual(servicePackageHelper.packageNames.TIER_TWO); + }); + + it("Should return tier 1 for empty set", () => { + // Arrange + const damageLocations = [frontWindshieldGlass]; + const availableLineItems = [ + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rearWiperLineItem, + rainDefenseLineItem, + ]; + const isRepair = false; + const vaps = []; + + // Act + const result = servicePackageHelper.getHighestRequiredTier( + damageLocations, + availableLineItems, + isRepair, + vaps + ); + + // Assert + expect(result).toEqual(servicePackageHelper.packageNames.TIER_ONE); + }); + + it("Should return tier 1 if no vaps are part of tiers", () => { + // Arrange + const damageLocations = [frontWindshieldGlass]; + const availableLineItems = [ + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rearWiperLineItem, + rainDefenseLineItem, + ]; + const isRepair = false; + const vaps = [recalLineItem]; + + // Act + const result = servicePackageHelper.getHighestRequiredTier( + damageLocations, + availableLineItems, + isRepair, + vaps + ); + + // Assert + expect(result).toEqual(servicePackageHelper.packageNames.TIER_ONE); + }); + }); + + describe("getHighestSatisfiedTier", () => { + it("Should return the highest tier if multiple are satisfied", () => { + // Arrange + const damageLocations = [frontWindshieldGlass, rearWindshieldGlass]; + const availableLineItems = [ + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rearWiperLineItem, + rainDefenseLineItem, + ]; + const isRepair = false; + const vaps = [ + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rainDefenseLineItem, + rearWiperLineItem, + ]; + + // Act + const result = servicePackageHelper.getHighestFullySatisfiedTier( + damageLocations, + availableLineItems, + isRepair, + vaps + ); + + // Assert + expect(result).toEqual(servicePackageHelper.packageNames.TIER_THREE); + }); + + it("Should only return *satisfied* tier", () => { + // Arrange + const damageLocations = [frontWindshieldGlass]; + const availableLineItems = [ + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rearWiperLineItem, + rainDefenseLineItem, + ]; + const isRepair = false; + const vaps = [driverFrontWiperLineItem, passengerFrontWiperLineItem]; + + // Act + const result = servicePackageHelper.getHighestFullySatisfiedTier( + damageLocations, + availableLineItems, + isRepair, + vaps + ); + + // Assert + expect(result).toEqual(servicePackageHelper.packageNames.TIER_TWO); + }); + + it("Should not return a tier if it is only partially satisfied", () => { + // Arrange + const damageLocations = [frontWindshieldGlass]; + const availableLineItems = [ + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rearWiperLineItem, + rainDefenseLineItem, + ]; + const isRepair = false; + const vaps = [rainDefenseLineItem]; + + // Act + const result = servicePackageHelper.getHighestFullySatisfiedTier( + damageLocations, + availableLineItems, + isRepair, + vaps + ); + + // Assert + expect(result).toEqual(servicePackageHelper.packageNames.TIER_ONE); + }); + + it("Should return tier 1 if no vaps are selected.", () => { + // Arrange + const damageLocations = [frontWindshieldGlass]; + const availableLineItems = [ + driverFrontWiperLineItem, + passengerFrontWiperLineItem, + rearWiperLineItem, + rainDefenseLineItem, + ]; + const isRepair = false; + const vaps = []; + + // Act + const result = servicePackageHelper.getHighestFullySatisfiedTier( + damageLocations, + availableLineItems, + isRepair, + vaps + ); + + // Assert + expect(result).toEqual(servicePackageHelper.packageNames.TIER_ONE); + }); + }); +}); + +// Constants + +const recalLineItem = { + partNumber: "RECAL STATIC", + Description: "Recalibration", + partType: "recalibration", + Quantity: "1", + price: 150.0, +}; + +const driverFrontWiperLineItem = { + partNumber: "SBB16", + description: "SAFELITE BEAM BLADE 16", + partType: "FRONT WIPER", + price: 32.64, +}; + +const passengerFrontWiperLineItem = { + partNumber: "SBB26", + description: "SAFELITE BEAM BLADE 26", + partType: "FRONT WIPER", + price: 53.04, +}; + +const rearWiperLineItem = { + partNumber: "SBBR12A", + description: "SAFELITE REAR BLADE 12A", + partType: "REAR WIPER", + price: 24.48, +}; + +const rainDefenseLineItem = { + partNumber: "RAIN DEFENSE", + description: null, + partType: "RAIN DEFENSE", + price: 35.5, +}; + +const frontWindshieldGlass = { + glassLocation: "Windshield", +}; + +const rearWindshieldGlass = { + glassLocation: "Rear", +}; + +const sideGlass = { + glassLocation: "Driver", +}; From 64ab3afa780a3dd7f08d8eb506d250f4826980d6 Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Thu, 22 Jun 2023 09:08:45 -0400 Subject: [PATCH 06/25] Pull package names out to constants file --- src/constants/package-names.js | 5 ++ src/helpers/service-package-helper.js | 7 +- src/helpers/service-package-helper.spec.js | 87 +++++++++++----------- 3 files changed, 50 insertions(+), 49 deletions(-) create mode 100644 src/constants/package-names.js diff --git a/src/constants/package-names.js b/src/constants/package-names.js new file mode 100644 index 000000000..221a75a49 --- /dev/null +++ b/src/constants/package-names.js @@ -0,0 +1,5 @@ +export const packageNames = { + TIER_ONE: "TierOne", + TIER_TWO: "TierTwo", + TIER_THREE: "TierThree", +}; diff --git a/src/helpers/service-package-helper.js b/src/helpers/service-package-helper.js index 7ce612ce3..b33930b78 100644 --- a/src/helpers/service-package-helper.js +++ b/src/helpers/service-package-helper.js @@ -1,11 +1,6 @@ import { partTypeStrings } from "@/constants/part-type-strings"; import { damageLocationsSelected as glassLocations } from "@/constants/damage-locations-selected"; - -export const packageNames = { - TIER_ONE: "TierOne", - TIER_TWO: "TierTwo", - TIER_THREE: "TierThree", -}; +import { packageNames } from "@/constants/package-names"; export function containsLineItemWithPartType(typeToFind, itemsToSearch) { const partTypeMatches = findLineItemsWithPartType(typeToFind, itemsToSearch); diff --git a/src/helpers/service-package-helper.spec.js b/src/helpers/service-package-helper.spec.js index eaf787a96..f87316d47 100644 --- a/src/helpers/service-package-helper.spec.js +++ b/src/helpers/service-package-helper.spec.js @@ -1,6 +1,7 @@ import * as servicePackageHelper from "@/helpers/service-package-helper"; import { partTypeStrings } from "@/constants/part-type-strings"; import { damageLocationsSelected as glassLocations } from "@/constants/damage-locations-selected"; +import { packageNames } from "@/constants/package-names"; describe("service-package-helper.js", () => { describe("containsLineItemWithPartType", () => { @@ -310,8 +311,8 @@ describe("service-package-helper.js", () => { // Assert expect(results.length).toBe(2); - expect(results[0].packageName).toEqual(servicePackageHelper.packageNames.TIER_ONE); - expect(results[1].packageName).toEqual(servicePackageHelper.packageNames.TIER_THREE); + expect(results[0].packageName).toEqual(packageNames.TIER_ONE); + expect(results[1].packageName).toEqual(packageNames.TIER_THREE); }); it("Returns three packages when wipers are available in tier two", () => { @@ -333,9 +334,9 @@ describe("service-package-helper.js", () => { // Assert expect(results.length).toBe(3); - expect(results[0].packageName).toEqual(servicePackageHelper.packageNames.TIER_ONE); - expect(results[1].packageName).toEqual(servicePackageHelper.packageNames.TIER_TWO); - expect(results[2].packageName).toEqual(servicePackageHelper.packageNames.TIER_THREE); + expect(results[0].packageName).toEqual(packageNames.TIER_ONE); + expect(results[1].packageName).toEqual(packageNames.TIER_TWO); + expect(results[2].packageName).toEqual(packageNames.TIER_THREE); }); }); @@ -357,13 +358,13 @@ describe("service-package-helper.js", () => { damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_TWO + packageNames.TIER_TWO ); const resultThree = servicePackageHelper.shouldFrontWipersBeAvailable( damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_THREE + packageNames.TIER_THREE ); // Assert @@ -382,13 +383,13 @@ describe("service-package-helper.js", () => { damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_TWO + packageNames.TIER_TWO ); const resultThree = servicePackageHelper.shouldFrontWipersBeAvailable( damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_THREE + packageNames.TIER_THREE ); // Assert @@ -407,7 +408,7 @@ describe("service-package-helper.js", () => { damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_TWO + packageNames.TIER_TWO ); // Assert @@ -425,7 +426,7 @@ describe("service-package-helper.js", () => { damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_THREE + packageNames.TIER_THREE ); // Assert @@ -443,19 +444,19 @@ describe("service-package-helper.js", () => { damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_ONE + packageNames.TIER_ONE ); const resultTwo = servicePackageHelper.shouldFrontWipersBeAvailable( damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_TWO + packageNames.TIER_TWO ); const resultThree = servicePackageHelper.shouldFrontWipersBeAvailable( damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_THREE + packageNames.TIER_THREE ); // Assert @@ -475,7 +476,7 @@ describe("service-package-helper.js", () => { damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_ONE + packageNames.TIER_ONE ); // Assert @@ -495,13 +496,13 @@ describe("service-package-helper.js", () => { damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_TWO + packageNames.TIER_TWO ); const resultThree = servicePackageHelper.shouldRearWipersBeAvailable( damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_THREE + packageNames.TIER_THREE ); // Assert @@ -520,7 +521,7 @@ describe("service-package-helper.js", () => { damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_TWO + packageNames.TIER_TWO ); // Assert @@ -538,7 +539,7 @@ describe("service-package-helper.js", () => { damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_THREE + packageNames.TIER_THREE ); // Assert @@ -560,7 +561,7 @@ describe("service-package-helper.js", () => { damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_THREE + packageNames.TIER_THREE ); // Assert @@ -578,19 +579,19 @@ describe("service-package-helper.js", () => { damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_ONE + packageNames.TIER_ONE ); const resultTwo = servicePackageHelper.shouldRearWipersBeAvailable( damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_TWO + packageNames.TIER_TWO ); const resultThree = servicePackageHelper.shouldRearWipersBeAvailable( damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_THREE + packageNames.TIER_THREE ); // Assert @@ -610,7 +611,7 @@ describe("service-package-helper.js", () => { damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_ONE + packageNames.TIER_ONE ); // Assert @@ -635,19 +636,19 @@ describe("service-package-helper.js", () => { damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_ONE + packageNames.TIER_ONE ); const resultTwo = servicePackageHelper.shouldRainDefenseBeAvailable( damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_TWO + packageNames.TIER_TWO ); const resultThree = servicePackageHelper.shouldRainDefenseBeAvailable( damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_THREE + packageNames.TIER_THREE ); // Assert @@ -674,7 +675,7 @@ describe("service-package-helper.js", () => { damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_THREE + packageNames.TIER_THREE ); // Assert @@ -692,19 +693,19 @@ describe("service-package-helper.js", () => { damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_ONE + packageNames.TIER_ONE ); const resultTwo = servicePackageHelper.shouldRainDefenseBeAvailable( damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_TWO + packageNames.TIER_TWO ); const resultThree = servicePackageHelper.shouldRainDefenseBeAvailable( damageLocations, availableLineItems, isRepair, - servicePackageHelper.packageNames.TIER_THREE + packageNames.TIER_THREE ); // Assert @@ -737,7 +738,7 @@ describe("service-package-helper.js", () => { ); // Assert - expect(result).toEqual(servicePackageHelper.packageNames.TIER_THREE); + expect(result).toEqual(packageNames.TIER_THREE); }); it("Should return tier 2 for items in tier 2 and 3", () => { @@ -768,8 +769,8 @@ describe("service-package-helper.js", () => { ); // Assert - expect(resultFront).toEqual(servicePackageHelper.packageNames.TIER_TWO); - expect(resultRear).toEqual(servicePackageHelper.packageNames.TIER_TWO); + expect(resultFront).toEqual(packageNames.TIER_TWO); + expect(resultRear).toEqual(packageNames.TIER_TWO); }); it("Should return tier 1 for any item not in any tier", () => { @@ -793,7 +794,7 @@ describe("service-package-helper.js", () => { ); // Assert - expect(resultFront).toEqual(servicePackageHelper.packageNames.TIER_ONE); + expect(resultFront).toEqual(packageNames.TIER_ONE); }); }); @@ -823,7 +824,7 @@ describe("service-package-helper.js", () => { ); // Assert - expect(result).toEqual(servicePackageHelper.packageNames.TIER_THREE); + expect(result).toEqual(packageNames.TIER_THREE); }); it("Should not return a higher tier than items require", () => { @@ -847,7 +848,7 @@ describe("service-package-helper.js", () => { ); // Assert - expect(result).toEqual(servicePackageHelper.packageNames.TIER_TWO); + expect(result).toEqual(packageNames.TIER_TWO); }); it("Should return tier 1 for empty set", () => { @@ -871,7 +872,7 @@ describe("service-package-helper.js", () => { ); // Assert - expect(result).toEqual(servicePackageHelper.packageNames.TIER_ONE); + expect(result).toEqual(packageNames.TIER_ONE); }); it("Should return tier 1 if no vaps are part of tiers", () => { @@ -895,7 +896,7 @@ describe("service-package-helper.js", () => { ); // Assert - expect(result).toEqual(servicePackageHelper.packageNames.TIER_ONE); + expect(result).toEqual(packageNames.TIER_ONE); }); }); @@ -926,7 +927,7 @@ describe("service-package-helper.js", () => { ); // Assert - expect(result).toEqual(servicePackageHelper.packageNames.TIER_THREE); + expect(result).toEqual(packageNames.TIER_THREE); }); it("Should only return *satisfied* tier", () => { @@ -950,7 +951,7 @@ describe("service-package-helper.js", () => { ); // Assert - expect(result).toEqual(servicePackageHelper.packageNames.TIER_TWO); + expect(result).toEqual(packageNames.TIER_TWO); }); it("Should not return a tier if it is only partially satisfied", () => { @@ -974,7 +975,7 @@ describe("service-package-helper.js", () => { ); // Assert - expect(result).toEqual(servicePackageHelper.packageNames.TIER_ONE); + expect(result).toEqual(packageNames.TIER_ONE); }); it("Should return tier 1 if no vaps are selected.", () => { @@ -998,7 +999,7 @@ describe("service-package-helper.js", () => { ); // Assert - expect(result).toEqual(servicePackageHelper.packageNames.TIER_ONE); + expect(result).toEqual(packageNames.TIER_ONE); }); }); }); From 6b403ac340b17b822904d15029dd18210c08ad4f Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Thu, 22 Jun 2023 17:01:32 -0400 Subject: [PATCH 07/25] Plug into real stored values + new logic --- .../service-package-review.vue | 63 +++++++++++++++++++ src/layouts/review/review.vue | 32 +++++++++- 2 files changed, 94 insertions(+), 1 deletion(-) diff --git a/src/layouts/review/review-sections/service-package-review/service-package-review.vue b/src/layouts/review/review-sections/service-package-review/service-package-review.vue index 1b1a4e4c0..4d9535043 100644 --- a/src/layouts/review/review-sections/service-package-review/service-package-review.vue +++ b/src/layouts/review/review-sections/service-package-review/service-package-review.vue @@ -7,11 +7,17 @@