From bd7be85511a465028694557dba95e1710959db3c Mon Sep 17 00:00:00 2001 From: hiteshkumar87 Date: Mon, 16 Oct 2023 17:03:57 +0530 Subject: [PATCH 1/3] CSR-1417 remove getFullDayName and getFullMonthName from date-helper and use from schedule helper --- src/helpers/date-helper.js | 16 --------------- src/helpers/date-helper.spec.js | 19 +----------------- .../add-to-calendar/add-to-calendar.vue | 2 +- src/layouts/confirmation/confirmation.vue | 20 +++++++++---------- 4 files changed, 12 insertions(+), 45 deletions(-) diff --git a/src/helpers/date-helper.js b/src/helpers/date-helper.js index d42ad326f..7a8c3e71d 100644 --- a/src/helpers/date-helper.js +++ b/src/helpers/date-helper.js @@ -7,22 +7,6 @@ export function getDateDifferenceInDays(startDate, endDate) { // Convert milliseconds to days and return the result return difference / (1000 * 3600 * 24); } -export function getFullDayName(date) { - // Use a ternary operator to check if the input is a valid date object - return date instanceof Date - ? // Use the built-in method toLocaleDateString() to get the full day name in the current locale - date.toLocaleDateString(undefined, { weekday: "long" }) - : // Return undefined if the input is not a valid date object - undefined; -} -export function getFullMonthName(date) { - // Use a ternary operator to check if the input is a valid date object - return date instanceof Date - ? // Use the built-in method toLocaleDateString() to get the full month name in the current locale - date.toLocaleDateString(undefined, { month: "long" }) - : // Return undefined if the input is not a valid date object - undefined; -} export function get12HourTimeFormat(time) { // Check correct time format and split into components time = time.toString().match(/^([01]\d|2[0-3])(:)([0-5]\d)?$/) || [time]; diff --git a/src/helpers/date-helper.spec.js b/src/helpers/date-helper.spec.js index 4ea2157f5..b78397e0f 100644 --- a/src/helpers/date-helper.spec.js +++ b/src/helpers/date-helper.spec.js @@ -1,6 +1,4 @@ import { - getFullDayName, - getFullMonthName, get12HourTimeFormat, get12HourTimeMobileFormat, getDateFormat, @@ -49,22 +47,6 @@ describe("date-helper.js", () => { expect(result).toEqual(testCase.expected); } }); - it("getFullMonthName should return full month format.", () => { - // Arrange / Act - const date = new Date("2023-10-01"); - const monthName = getFullMonthName(date); - - // Assert - expect(monthName).toEqual("October"); - }); - it("getFullDayName should return full Day Name format.", () => { - // Arrange / Act - const date = new Date("2023-10-01"); - const dayName = getFullDayName(date); - - // Assert - expect(dayName).toEqual("Sunday"); - }); it("getDateFormat should return date in the given format.", () => { // Arrange / Act const date = new Date("2023-10-01"); @@ -74,6 +56,7 @@ describe("date-helper.js", () => { // Assert expect(formattedDate).toEqual("2023-10-01"); }); + it("should return the correct difference in days", function () { // Define some sample dates and their expected differences const testCases = [ diff --git a/src/layouts/add-to-calendar/add-to-calendar.vue b/src/layouts/add-to-calendar/add-to-calendar.vue index b0306b5d0..0b856e72d 100644 --- a/src/layouts/add-to-calendar/add-to-calendar.vue +++ b/src/layouts/add-to-calendar/add-to-calendar.vue @@ -127,7 +127,7 @@ export default { serviceType() { const isRepair = store.getters.order.damage.isRepair; const funnelHasRecalibrationPart = store.getters.funnelHasRecalibrationPart; - if (isRepair) { + if (!isRepair) { if (funnelHasRecalibrationPart) { return "replacement and recalibration"; } else { diff --git a/src/layouts/confirmation/confirmation.vue b/src/layouts/confirmation/confirmation.vue index cb7ca43c1..5fa24856d 100644 --- a/src/layouts/confirmation/confirmation.vue +++ b/src/layouts/confirmation/confirmation.vue @@ -55,15 +55,11 @@ import { fetchCmsContentForPage } from "@/helpers/cms-content-helper"; import { AppointmentTypeStrings } from "@/constants/schedule-constants"; import { settleAllPromises } from "@/helpers/layout-helper"; import { applicationConfig } from "@/constants/application-config.js"; +import { convertDateStringToDate } from "@/layouts/schedule/helpers/schedule-helper"; import { Form } from "vee-validate"; import store from "@/store"; -import { - getFullDayName, - getFullMonthName, - get12HourTimeFormat, - get12HourTimeMobileFormat, -} from "@/helpers/date-helper"; +import { get12HourTimeFormat, get12HourTimeMobileFormat } from "@/helpers/date-helper"; export default { name: "confirmation", async beforeRouteEnter(to, from, next) { @@ -174,10 +170,14 @@ export default { return `${this.ProviderAddress},
${this.ProviderCity}, ${this.ProviderState} ${this.ProviderZipCode}`; }, ScheduleDateFormatted() { - const scheduleDate = new Date(this.ScheduleDate); - return `${getFullDayName(scheduleDate)}, ${getFullMonthName( - scheduleDate - )} ${scheduleDate.getDate()}`; + // This conversion ensures we don't get get GMT induced date changes + const dateObject = convertDateStringToDate(this.ScheduleDate); + // Ex: Tuesday, April 22 + return dateObject.toLocaleDateString("en-us", { + weekday: "long", + month: "long", + day: "numeric", + }); }, ScheduleTimeFormatted() { if (this.AppointmentType == AppointmentTypeStrings.MOBILE) { From 1c48dc856a678108b17ca8b9c6fe0a92066131e4 Mon Sep 17 00:00:00 2001 From: hiteshkumar87 Date: Mon, 16 Oct 2023 17:54:54 +0530 Subject: [PATCH 2/3] service-type constant file service-type constant file added --- src/constants/service-type.js | 6 +++++ .../add-to-calendar/add-to-calendar.spec.js | 24 +++++++------------ .../add-to-calendar/add-to-calendar.vue | 7 +++--- 3 files changed, 19 insertions(+), 18 deletions(-) create mode 100644 src/constants/service-type.js diff --git a/src/constants/service-type.js b/src/constants/service-type.js new file mode 100644 index 000000000..5cb6a277a --- /dev/null +++ b/src/constants/service-type.js @@ -0,0 +1,6 @@ +const serviceType = { + REPLACEMENT: "replacement", + REPAIR: "repair", + REPLACEMENT_AND_RECALIBRATION: "replacement and recalibration", +}; +export { serviceType }; diff --git a/src/layouts/add-to-calendar/add-to-calendar.spec.js b/src/layouts/add-to-calendar/add-to-calendar.spec.js index 1e3e5ae4e..645e3b12f 100644 --- a/src/layouts/add-to-calendar/add-to-calendar.spec.js +++ b/src/layouts/add-to-calendar/add-to-calendar.spec.js @@ -77,9 +77,9 @@ describe("Add-to-calendar methods...", () => { //Assert expect(wrapper.vm.$refs.calendarModalQuestion.openModal).toBeCalled(); }); - test("serviceType should return 'replacement and recalibration' when isRepair and funnelHasRecalibrationPart true.", () => { + test("serviceType should return 'replacement and recalibration' when isRepair is false and funnelHasRecalibrationPart true.", () => { //Arrange - store.getters.order.damage.isRepair = true; + store.getters.order.damage.isRepair = false; store.getters.funnelHasRecalibrationPart = true; const { wrapper } = setupMocks({}); @@ -89,9 +89,9 @@ describe("Add-to-calendar methods...", () => { //Assert expect(testValue).toEqual("replacement and recalibration"); }); - test("serviceType should return 'replacement' when isRepair is true and funnelHasRecalibrationPart is false.", () => { + test("serviceType should return 'replacement' when isRepair is false and funnelHasRecalibrationPart is false.", () => { //Arrange - store.getters.order.damage.isRepair = true; + store.getters.order.damage.isRepair = false; store.getters.funnelHasRecalibrationPart = false; const { wrapper } = setupMocks({}); @@ -101,9 +101,9 @@ describe("Add-to-calendar methods...", () => { //Assert expect(testValue).toEqual("replacement"); }); - test("serviceType should return 'repair' when isRepair is false.", () => { + test("serviceType should return 'repair' when isRepair is true.", () => { //Arrange - store.getters.order.damage.isRepair = false; + store.getters.order.damage.isRepair = true; const { wrapper } = setupMocks({}); //Act @@ -126,7 +126,7 @@ describe("Add-to-calendar methods...", () => { test("getappointmentData should return expected model value for appointmentType mobile.", () => { //Arrange store.getters.order.serviceLocation.appointmentType = AppointmentTypeStrings.MOBILE; - store.getters.order.damage.isRepair = true; + store.getters.order.damage.isRepair = false; store.getters.funnelHasRecalibrationPart = true; const { wrapper } = setupMocks({}); @@ -176,7 +176,7 @@ describe("Add-to-calendar methods...", () => { test("getappointmentData should return expected model value for appointmentType DROP_OFF.", () => { //Arrange store.getters.order.serviceLocation.appointmentType = AppointmentTypeStrings.DROP_OFF; - store.getters.order.damage.isRepair = false; + store.getters.order.damage.isRepair = true; const { wrapper } = setupMocks({}); //Act @@ -188,7 +188,7 @@ describe("Add-to-calendar methods...", () => { test("getappointmentData should return expected model value for appointmentType IN_SHOP.", () => { //Arrange store.getters.order.serviceLocation.appointmentType = AppointmentTypeStrings.IN_SHOP; - store.getters.order.damage.isRepair = false; + store.getters.order.damage.isRepair = true; const { wrapper } = setupMocks({}); //Act @@ -239,12 +239,6 @@ function setupMocks({ customMountOptions }) { }); const wrapper = shallowMount(addToCalendar, mountOptions); - - //wrapper.vm.setCmsContent = jest.fn(); - //wrapper.vm.$refs.datePicker.initializeComponent = jest.fn(); - //wrapper.vm.$refs.locationAlerts.initializeComponent = jest.fn(); - //wrapper.vm.$refs.funnelFooter.updateButtonText = jest.fn(); wrapper.vm.$refs.calendarModalQuestion.openModal = jest.fn(); - return { wrapper }; } diff --git a/src/layouts/add-to-calendar/add-to-calendar.vue b/src/layouts/add-to-calendar/add-to-calendar.vue index 0b856e72d..3f32a525b 100644 --- a/src/layouts/add-to-calendar/add-to-calendar.vue +++ b/src/layouts/add-to-calendar/add-to-calendar.vue @@ -32,6 +32,7 @@ import { import { getCalendarFile, download } from "@/helpers/add-to-calendar-helper"; import { AppointmentTypeStrings, RouteCodeFlags } from "@/constants/schedule-constants"; import store from "@/store"; +import { serviceType } from "@/constants/service-type"; export default { name: "add-to-calendar", @@ -129,12 +130,12 @@ export default { const funnelHasRecalibrationPart = store.getters.funnelHasRecalibrationPart; if (!isRepair) { if (funnelHasRecalibrationPart) { - return "replacement and recalibration"; + return serviceType.REPLACEMENT_AND_RECALIBRATION; } else { - return "replacement"; + return serviceType.REPLACEMENT; } } - return "repair"; + return serviceType.REPAIR; }, routeCode() { return store.getters.order.schedule.routeCode; From fcbbf298d5bff79a2320fa469bfba7b8cc17bf24 Mon Sep 17 00:00:00 2001 From: hiteshkumar87 Date: Mon, 16 Oct 2023 18:48:47 +0530 Subject: [PATCH 3/3] getDateFormat getDateFormat unit test cases --- src/helpers/date-helper.js | 2 +- src/helpers/date-helper.spec.js | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/helpers/date-helper.js b/src/helpers/date-helper.js index 7a8c3e71d..756863765 100644 --- a/src/helpers/date-helper.js +++ b/src/helpers/date-helper.js @@ -96,7 +96,7 @@ export function shortTimeString(date) { // Use a ternary operator to check if the input is a valid date object return date instanceof Date ? // Use the built-in method toLocaleTimeString() to get the short time string in the current locale - date.toLocaleTimeString(undefined, { hour: "numeric", minute: "numeric", hour12: true }) + date.toLocaleTimeString("en-us", { hour: "numeric", minute: "numeric", hour12: true }) : // Return undefined if the input is not a valid date object undefined; } diff --git a/src/helpers/date-helper.spec.js b/src/helpers/date-helper.spec.js index aa8839663..a61af9977 100644 --- a/src/helpers/date-helper.spec.js +++ b/src/helpers/date-helper.spec.js @@ -52,7 +52,9 @@ describe("date-helper.js", () => { it("getDateFormat should return date in the given format.", () => { // Arrange / Act - const date = new Date("2023-10-01"); + const dateString = "2023-10-01"; + const dateParts = dateString.split("-"); + const date = new Date(dateParts[0], parseInt(dateParts[1]) - 1, dateParts[2]); const format = "yyyy-MM-dd"; const formattedDate = getDateFormat(date, format);