From 4f91f9fff527d9c88c19e03092fc9660ddad7528 Mon Sep 17 00:00:00 2001 From: Jason Wheeler Date: Wed, 26 Oct 2022 17:17:57 -0400 Subject: [PATCH] Created vehicle-banner and added to vehicle-year for testing --- .../site-sub-header/site-sub-header.spec.js | 2 +- .../vehicle-banner/vehicle-banner.spec.js | 127 ++++++++++++++++++ .../vehicle-banner/vehicle-banner.vue | 82 +++++++++++ src/layouts/vehicle-year/vehicle-year.vue | 3 + 4 files changed, 213 insertions(+), 1 deletion(-) create mode 100644 src/common-components/vehicle-banner/vehicle-banner.spec.js create mode 100644 src/common-components/vehicle-banner/vehicle-banner.vue diff --git a/src/common-components/site-sub-header/site-sub-header.spec.js b/src/common-components/site-sub-header/site-sub-header.spec.js index ff5f2d5e..fd35c00c 100644 --- a/src/common-components/site-sub-header/site-sub-header.spec.js +++ b/src/common-components/site-sub-header/site-sub-header.spec.js @@ -7,7 +7,7 @@ describe("site sub header", () => { const mockMixin = { methods: { getCmsContent: jest.fn().mockImplementation(()=> { - return subHeaderText; + return subHeaderText; }) } } diff --git a/src/common-components/vehicle-banner/vehicle-banner.spec.js b/src/common-components/vehicle-banner/vehicle-banner.spec.js new file mode 100644 index 00000000..14c5a318 --- /dev/null +++ b/src/common-components/vehicle-banner/vehicle-banner.spec.js @@ -0,0 +1,127 @@ +import { shallowMount } from "@vue/test-utils"; +import { vehicleCategories } from "@/constants/vehicle-categories.js"; +import vehicleBanner from "./vehicle-banner"; +import { useMainStore } from "@/store"; +import { createApp } from 'vue'; +import { createPinia } from "pinia"; +import { mapStores } from "pinia"; +import App from '@/App.vue'; + + +const cmsData = { VehicleBannerWidget: + { + "GenericVehicleImage": "blurred-image.jpg", + "GenericVehicleImageFilePath": "images/default-source/default-album/blurred-image.jpg", + "CarUnmatchedVehicleIcon": "car-placeholder.jpg", + "TruckUnmatchedVehicleIcon": "truck-placeholder.jpg", + "VanUnmatchedVehicleIcon": "van-placeholder.jpg", + "CommercialVanUnmatchedVehicleIcon": "commercial-placeholder.jpg", + "SuvUnmatchedVehicleIcon": "suv-placeholder.jpg" + } +} + +const vueApp = createApp(App); +const pinia = createPinia(); +vueApp.use(pinia); +const store = useMainStore(); + +const mockMixin = { + + methods: { + getCmsContent(widgetName, fieldName) { + return cmsData[widgetName][fieldName]; + }, + }, + computed: { + ...mapStores(useMainStore), + vehicleCategories() { + return vehicleCategories; + }, + } +} + +describe("vehicleBanner", () => { + + test("renders the blurrycar image", async () => { + + const wrapper = shallowMount(vehicleBanner, { + propsData: { + displayGenericVehicleImage: true, + cmsWidgetName: "VehicleBannerWidget", + }, + mixins: [mockMixin] + }); + + expect(wrapper.vm.vehicleImageToDisplay).toEqual(wrapper.vm.genericVehicleImage); + expect(wrapper.find("img").attributes("class")).toContain("vehicle-image"); + wrapper.unmount(); + }); + + test("renders expected vehicle image", async () => { + + store.order.vehicle.imageUrl = "url_to_vehicle_image"; + + const wrapper = shallowMount(vehicleBanner, { + propsData: { + displayGenericVehicleImage: false, + cmsWidgetName: "VehicleBannerWidget", + }, + mixins: [mockMixin] + }); + + expect(wrapper.vm.vehicleImageToDisplay).toEqual( "url_to_vehicle_image"); + expect(wrapper.find("img").attributes("class")).toContain("vehicle-image"); + wrapper.unmount(); + + }); + + test("should render car icon when imageUrl is null and category is default", async () => { + + store.order.vehicle.imageUrl = null; + + const wrapper = shallowMount(vehicleBanner, { + propsData: { + displayGenericVehicleImage: false, + cmsWidgetName: "VehicleBannerWidget", + }, + mixins: [mockMixin] + }); + + var iconUrl = wrapper.vm.vehicleImageToDisplay; + + expect(iconUrl).toEqual("car-placeholder.jpg"); + wrapper.unmount(); + }); + + + const params = [["CAR", "car-placeholder.jpg"], + ["TRUCK", "truck-placeholder.jpg"], + ["VAN", "van-placeholder.jpg"], + ["COMMERCIAL VAN", "commercial-placeholder.jpg"], + ["SUV", "suv-placeholder.jpg"], + ["OTHER", "car-placeholder.jpg"]]; + + test.each(params)("renders an icon instead of an image for %s and %s", async (category, expectedIcon) => { + + store.order.vehicle.imageUrl = null; + store.order.vehicle.category = category; + + const wrapper = shallowMount(vehicleBanner, { + propsData: { + displayGenericVehicleImage: false, + cmsWidgetName: "VehicleBannerWidget", + }, + mixins: [mockMixin] + }); + + var vehicleIcon = wrapper.vm.getUnmatchedVehicleIcon(); + + expect(vehicleIcon).toEqual(expectedIcon); + expect(wrapper.find("img").attributes("class")).toContain("vehicle-image"); + wrapper.unmount(); + }); + +}); + + + diff --git a/src/common-components/vehicle-banner/vehicle-banner.vue b/src/common-components/vehicle-banner/vehicle-banner.vue new file mode 100644 index 00000000..534313df --- /dev/null +++ b/src/common-components/vehicle-banner/vehicle-banner.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/src/layouts/vehicle-year/vehicle-year.vue b/src/layouts/vehicle-year/vehicle-year.vue index b3253139..676c1e33 100644 --- a/src/layouts/vehicle-year/vehicle-year.vue +++ b/src/layouts/vehicle-year/vehicle-year.vue @@ -3,6 +3,7 @@
+