CSR-120: updates to move CMS logic into parent vehicle-year layout

This commit is contained in:
Adam Caouette 2021-12-02 11:39:13 -05:00
parent e3a2ff431e
commit b248a3169a
5 changed files with 8 additions and 61 deletions

View file

@ -5,11 +5,6 @@ import { storeActions } from "@/constants/store-actions";
import { nextTick } from 'vue'; import { nextTick } from 'vue';
import { settleAllPromises } from "@/helpers/layout-helper"; import { settleAllPromises } from "@/helpers/layout-helper";
// Mock our module for promises.
jest.mock("@/helpers/layout-helper.js", () => ({
settleAllPromises: jest.fn()
}));
describe('vehicleBanner', () => { describe('vehicleBanner', () => {
const $store = { const $store = {
state: { state: {
@ -51,17 +46,6 @@ describe('vehicleBanner', () => {
] ]
}; };
// Our mock data for our call to settleAllPromises
const mockData = {
getPageContent: {
VehicleBannerWidget: [{ GenericVehicleImage: "testurl" }],
isCmsContentReady: true,
}
}
// our mock implementation of settleAllPromises
settleAllPromises.mockImplementation(() => { return Promise.resolve(mockData);});
test('renders the blurrycar image when vehicleImageSrc is not present', () => { test('renders the blurrycar image when vehicleImageSrc is not present', () => {
// Arrange // Arrange
const mountOptions = getMountOptions(actionList); const mountOptions = getMountOptions(actionList);
@ -158,23 +142,4 @@ describe('vehicleBanner', () => {
wrapper.unmount(); wrapper.unmount();
}); });
test("vehicle-banner.vue should render data from CMS", async () => {
// Arrange
const mountOptions = getMountOptions(actionList);
mountOptions.global.mocks = {
...mountOptions.global.mocks,
$store
}
// Act
const wrapper = shallowMount(vehicleBanner, {
...mountOptions
});
// Call method getGenericVehicleImage on the component.
await wrapper.vm.getGenericVehicleImage();
// Wait for the DOM to update.
await nextTick();
// Assert
expect(wrapper.vm.genericVehicleImageSrc).toEqual("testurl");
});
}); });

View file

@ -16,9 +16,6 @@
</template> </template>
<script> <script>
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
import { settleAllPromises } from "@/helpers/layout-helper";
export default { export default {
name: "vehicle-banner", name: "vehicle-banner",
computed: { computed: {
@ -35,19 +32,17 @@ export default {
}, },
}, },
props: { props: {
passedCarId: String passedCarId: String,
genericVehicleImageSrc: String
}, },
data() { data() {
return { return {
years: [], years: [],
carId: '', carId: '',
vehicleImageSrc: '', vehicleImageSrc: '',
genericVehicleImageSrc: '',
}; };
}, },
created() { created() {
this.getGenericVehicleImage();
if (this.passedCarId && this.passedCarId.length > 0) { if (this.passedCarId && this.passedCarId.length > 0) {
this.getVehicleImage(this.passedCarId) this.getVehicleImage(this.passedCarId)
} else if (this.vin && this.vin.length > 0) { } else if (this.vin && this.vin.length > 0) {
@ -76,18 +71,6 @@ export default {
} }
}); });
}, },
getGenericVehicleImage() { // retrieve generic blurry vehicle image
const contentPromise = fetchCmsContentForPage("vehicle-year");
const promiseResultMap = [
{
resultKey: "getPageContent",
promise: contentPromise,
}
];
settleAllPromises(promiseResultMap).then((resultMap) => {
this.genericVehicleImageSrc = resultMap.getPageContent.VehicleBannerWidget[0].GenericVehicleImage;
});
}
}, },
} }
</script> </script>

View file

@ -314,12 +314,8 @@
</div> </div>
<div class="row my-3"> <div class="row my-3">
<div class="col"> <div class="col">
<vehicleBanner <vehicleBanner genericVehicleImageSrc="https://digitalconsumercms-dev.safelite.com/images/default-source/default-album/blurred-image.jpg?sfvrsn=a6ce3034_3" />
passedCarId="" <vehicleBanner passedCarId="CR00068434" />
/>
<vehicleBanner
passedCarId="CR00068434"
/>
</div> </div>
</div> </div>
</div> </div>

View file

@ -19,6 +19,7 @@ describe("vehicle-year.vue", () => {
getPageContent: { getPageContent: {
PageHeaderWidget: [{ HeaderText: "Select a year to get started" }], PageHeaderWidget: [{ HeaderText: "Select a year to get started" }],
RadioQuestionWidget: [{ QuestionText: "What year is your vehicle?" }], RadioQuestionWidget: [{ QuestionText: "What year is your vehicle?" }],
VehicleBannerWidget: [{ GenericVehicleImage: "https://digitalconsumercms-dev.safelite.com/images/default-source/default-album/blurred-image.jpg?sfvrsn=a6ce3034_3" }],
isCmsContentReady: true, isCmsContentReady: true,
}, },
getVehicleYear: [2023, 2022, 2021] getVehicleYear: [2023, 2022, 2021]

View file

@ -1,7 +1,7 @@
<template v-if="isCmsContentReady"> <template v-if="isCmsContentReady">
<div class="select-car"> <div class="select-car">
<div class="select-car-form rounded text-center"> <div class="select-car-form rounded text-center">
<vehicleBanner /> <vehicleBanner :genericVehicleImageSrc="vehicleBannerWidget.GenericVehicleImage" />
<pageHeader :text="pageHeaderWidgets.HeaderText" class="Header" /> <pageHeader :text="pageHeaderWidgets.HeaderText" class="Header" />
<yearQuestion :questionText="radioQuestionWidgets.QuestionText" :years="vehicleYears" /> <yearQuestion :questionText="radioQuestionWidgets.QuestionText" :years="vehicleYears" />
</div> </div>
@ -27,6 +27,7 @@ export default {
pageHeaderWidgets: {}, pageHeaderWidgets: {},
radioQuestionWidgets: {}, radioQuestionWidgets: {},
vehicleYears: [], vehicleYears: [],
vehicleBannerWidget: {}
}; };
}, },
computed: {}, computed: {},
@ -54,6 +55,7 @@ export default {
next((vm) => { next((vm) => {
vm.pageHeaderWidgets = resultMap.getPageContent.PageHeaderWidget[0]; vm.pageHeaderWidgets = resultMap.getPageContent.PageHeaderWidget[0];
vm.radioQuestionWidgets = resultMap.getPageContent.RadioQuestionWidget[0]; vm.radioQuestionWidgets = resultMap.getPageContent.RadioQuestionWidget[0];
vm.vehicleBannerWidget = resultMap.getPageContent.VehicleBannerWidget[0];
vm.vehicleYears = resultMap.getVehicleYear; vm.vehicleYears = resultMap.getVehicleYear;
}); });
}); });