Merge pull request #1148 from Safelite/feature/CSR-1369
Feature/csr 1369
This commit is contained in:
commit
23e2b547eb
7 changed files with 139 additions and 1 deletions
|
|
@ -46,5 +46,8 @@ export default {
|
||||||
&.bold {
|
&.bold {
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
&.dark {
|
||||||
|
color: $black;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
<div class="d-flex">
|
<div class="d-flex">
|
||||||
<textBlock
|
<textBlock
|
||||||
:cmsWidgetName="headerCmsWidgetName"
|
:cmsWidgetName="headerCmsWidgetName"
|
||||||
typeStyle="body small bold"
|
typeStyle="body small bold dark"
|
||||||
margin="mt-0" />
|
margin="mt-0" />
|
||||||
<textLink linkType="textSmall" text="Edit" class="ml-auto" @click-event="linkClicked" />
|
<textLink linkType="textSmall" text="Edit" class="ml-auto" @click-event="linkClicked" />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,72 @@
|
||||||
|
import { shallowMount } from "@vue/test-utils";
|
||||||
|
import { getMountOptions } from "@/helpers/unit-test-helper.js";
|
||||||
|
import damageReview from "@/layouts/review/review-sections/damage-review/damage-review";
|
||||||
|
|
||||||
|
jest.mock("@/helpers/cms-content-helper", () => ({
|
||||||
|
fetchCmsContentForPage: () => Promise.resolve("content"),
|
||||||
|
}));
|
||||||
|
|
||||||
|
describe("Damage Review Block", () => {
|
||||||
|
describe("Correctly assembles damage info into a display string", () => {
|
||||||
|
test("Basic Replace", async () => {
|
||||||
|
// Arrange
|
||||||
|
const { wrapper } = setupMocks({
|
||||||
|
propsData: {
|
||||||
|
damage: {
|
||||||
|
isRepair: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
await wrapper.vm.$nextTick();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(wrapper.vm.displayContent).toStrictEqual(["Windshield crack"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Basic Repair", async () => {
|
||||||
|
// Arrange
|
||||||
|
const { wrapper } = setupMocks({
|
||||||
|
propsData: {
|
||||||
|
damage: {
|
||||||
|
isRepair: true,
|
||||||
|
numberOfChips: 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
await wrapper.vm.$nextTick();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(wrapper.vm.displayContent).toStrictEqual(["Windshield repair - 2 chips"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Basic Repair - no s with 1 chip", async () => {
|
||||||
|
// Arrange
|
||||||
|
const { wrapper } = setupMocks({
|
||||||
|
propsData: {
|
||||||
|
damage: {
|
||||||
|
isRepair: true,
|
||||||
|
numberOfChips: 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
await wrapper.vm.$nextTick();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(wrapper.vm.displayContent).toStrictEqual(["Windshield repair - 1 chip"]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
function setupMocks(customMountOptions) {
|
||||||
|
const mountOptions = getMountOptions(customMountOptions);
|
||||||
|
|
||||||
|
const wrapper = shallowMount(damageReview, mountOptions);
|
||||||
|
wrapper.vm.setCmsContent = jest.fn();
|
||||||
|
return { wrapper };
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
<template>
|
||||||
|
<reviewBlock
|
||||||
|
:headerCmsWidgetName="cmsWidgetName"
|
||||||
|
:content="displayContent"
|
||||||
|
@edit-clicked="editClicked" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import reviewBlock from "@/layouts/review/review-block/review-block";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "damage-review",
|
||||||
|
props: {
|
||||||
|
cmsWidgetName: String,
|
||||||
|
damage: Object,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
editClicked() {
|
||||||
|
this.$emit("edit-clicked");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
displayContent() {
|
||||||
|
return [
|
||||||
|
this.damage.isRepair
|
||||||
|
? `Windshield repair - ${this.damage.numberOfChips} chip${
|
||||||
|
this.damage.numberOfChips !== 1 ? "s" : ""
|
||||||
|
}`
|
||||||
|
: "Windshield crack",
|
||||||
|
];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
reviewBlock,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
@ -41,6 +41,13 @@
|
||||||
cmsWidgetName="VehicleReviewWidget"
|
cmsWidgetName="VehicleReviewWidget"
|
||||||
:vehicle="vehicleInfo"
|
:vehicle="vehicleInfo"
|
||||||
@edit-clicked="editVehicle" />
|
@edit-clicked="editVehicle" />
|
||||||
|
|
||||||
|
<hr class="my-0" />
|
||||||
|
|
||||||
|
<damageReview
|
||||||
|
cmsWidgetName="DamageReviewWidget"
|
||||||
|
:damage="damageInfo"
|
||||||
|
@edit-clicked="editDamage" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<hr class="my-0" />
|
<hr class="my-0" />
|
||||||
|
|
@ -60,6 +67,7 @@ import vehicleBanner from "@/fmg-components/vehicle-banner/vehicle-banner";
|
||||||
import buttonMain from "@/ux-components/button-main/button-main";
|
import buttonMain from "@/ux-components/button-main/button-main";
|
||||||
import textBlock from "@/digital-components/text-block/text-block";
|
import textBlock from "@/digital-components/text-block/text-block";
|
||||||
import vehicleReview from "@/layouts/review/review-sections/vehicle-review/vehicle-review";
|
import vehicleReview from "@/layouts/review/review-sections/vehicle-review/vehicle-review";
|
||||||
|
import damageReview from "@/layouts/review/review-sections/damage-review/damage-review";
|
||||||
|
|
||||||
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
||||||
import { settleAllPromises } from "@/helpers/layout-helper";
|
import { settleAllPromises } from "@/helpers/layout-helper";
|
||||||
|
|
@ -99,6 +107,12 @@ export default {
|
||||||
this.$route
|
this.$route
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
editDamage() {
|
||||||
|
this.$router.navigateWithoutSaving(
|
||||||
|
this.navigationScenarios.CLICKED_DAMAGE_EDIT,
|
||||||
|
this.$route
|
||||||
|
);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
subHeaderTitle() {
|
subHeaderTitle() {
|
||||||
|
|
@ -113,6 +127,9 @@ export default {
|
||||||
vehicleInfo() {
|
vehicleInfo() {
|
||||||
return this.$store.getters.vehicle;
|
return this.$store.getters.vehicle;
|
||||||
},
|
},
|
||||||
|
damageInfo() {
|
||||||
|
return this.$store.getters.damage;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
funnelHeader,
|
funnelHeader,
|
||||||
|
|
@ -121,6 +138,7 @@ export default {
|
||||||
buttonMain,
|
buttonMain,
|
||||||
textBlock,
|
textBlock,
|
||||||
vehicleReview,
|
vehicleReview,
|
||||||
|
damageReview,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ const navigationScenarios = {
|
||||||
|
|
||||||
// Review
|
// Review
|
||||||
CLICKED_VEHICLE_EDIT: "CLICKED_VEHICLE_EDIT",
|
CLICKED_VEHICLE_EDIT: "CLICKED_VEHICLE_EDIT",
|
||||||
|
CLICKED_DAMAGE_EDIT: "CLICKED_DAMAGE_EDIT",
|
||||||
};
|
};
|
||||||
|
|
||||||
export { navigationScenarios };
|
export { navigationScenarios };
|
||||||
|
|
|
||||||
|
|
@ -442,6 +442,10 @@ const routingTable = function (store) {
|
||||||
scenario: navigationScenarios.CLICKED_VEHICLE_EDIT,
|
scenario: navigationScenarios.CLICKED_VEHICLE_EDIT,
|
||||||
destinationFmgPageValue: fmgPageValues.VEHICLE_YEAR,
|
destinationFmgPageValue: fmgPageValues.VEHICLE_YEAR,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
scenario: navigationScenarios.CLICKED_DAMAGE_EDIT,
|
||||||
|
destinationFmgPageValue: fmgPageValues.VEHICLE_DAMAGE,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue