diff --git a/src/layouts/service-location/helpers/service-location-helper/service-location-helper.js b/src/layouts/service-location/helpers/service-location-helper/service-location-helper.js index b100a50b5..19758bd07 100644 --- a/src/layouts/service-location/helpers/service-location-helper/service-location-helper.js +++ b/src/layouts/service-location/helpers/service-location-helper/service-location-helper.js @@ -62,27 +62,10 @@ export async function getAvailabilityRating( false ); - // Rate the availability for the shop - let numberOfAppointmentsPerDay = []; - for (let i = 0; i < shopTimeSlots.data.days.length; i++) { - numberOfAppointmentsPerDay.push(shopTimeSlots.data.days[i].timeSlots.length); - } - - const dateRange = 7; - const minimumNumberOfAppointmentsPerDay = 1; const numberOfDaysToEvaluate = 2; - - let daysWithMinimalAppointmentsCount = 0; - for (let i = 0; i < dateRange; i++) { - if (numberOfAppointmentsPerDay[i] >= minimumNumberOfAppointmentsPerDay) { - daysWithMinimalAppointmentsCount++; - if (daysWithMinimalAppointmentsCount >= numberOfDaysToEvaluate) { - break; - } - } - } - - const isGoodAvailability = daysWithMinimalAppointmentsCount >= numberOfDaysToEvaluate; + const isGoodAvailability = + shopTimeSlots.data.days.filter((x) => x.timeSlots.length > 0).length >= + numberOfDaysToEvaluate; const shopStatus = isGoodAvailability ? "high" : "low"; diff --git a/src/layouts/service-location/helpers/service-location-helper/service-location-helper.spec.js b/src/layouts/service-location/helpers/service-location-helper/service-location-helper.spec.js index c89ddf973..676541784 100644 --- a/src/layouts/service-location/helpers/service-location-helper/service-location-helper.spec.js +++ b/src/layouts/service-location/helpers/service-location-helper/service-location-helper.spec.js @@ -93,94 +93,54 @@ const mockStoreActionGetServiceabilityDetails = storeActions.GET_SERVICEABILITY_ const mockStoreActionGetShopTimeSlots = storeActions.GET_SHOP_TIME_SLOTS; const mockGetShopTimeSlotsGoodAvailability = { - estimatedServiceMinutesMinimum: 0, - estimatedServiceMinutesMaximimum: 0, - days: [ - { - date: "string", - timeSlots: [ - { - id: "string", - startTime: "", - endTime: "", - offerPremium: true, - }, - ], - }, - { - date: "string", - timeSlots: [], - }, - { - date: "string", - timeSlots: [], - }, - { - date: "string", - timeSlots: [], - }, - { - date: "string", - timeSlots: [], - }, - { - date: "string", - timeSlots: [], - }, - { - date: "string", - timeSlots: [ - { - id: "string", - startTime: "", - endTime: "", - offerPremium: true, - }, - ], - }, - ], + data: { + estimatedServiceMinutesMinimum: 0, + estimatedServiceMinutesMaximimum: 0, + days: [ + { + date: "string", + timeSlots: [ + { + id: "string", + startTime: "", + endTime: "", + offerPremium: true, + }, + ], + }, + { + date: "string", + timeSlots: [ + { + id: "string", + startTime: "", + endTime: "", + offerPremium: true, + }, + ], + }, + ], + }, }; const mockGetShopTimeSlotsLowAvailability = { - estimatedServiceMinutesMinimum: 0, - estimatedServiceMinutesMaximimum: 0, - days: [ - { - date: "string", - timeSlots: [], - }, - { - date: "string", - timeSlots: [], - }, - { - date: "string", - timeSlots: [], - }, - { - date: "string", - timeSlots: [], - }, - { - date: "string", - timeSlots: [], - }, - { - date: "string", - timeSlots: [], - }, - { - date: "string", - timeSlots: [ - { - id: "string", - startTime: "", - endTime: "", - offerPremium: true, - }, - ], - }, - ], + data: { + estimatedServiceMinutesMinimum: 0, + estimatedServiceMinutesMaximimum: 0, + days: [ + { + date: "string", + timeSlots: [ + { + id: "string", + startTime: "", + endTime: "", + offerPremium: true, + }, + ], + }, + ], + }, }; jest.mock("@/mixins/base-mixin.js", () => ({ @@ -229,6 +189,7 @@ jest.mock("@/mixins/base-mixin.js", () => ({ } if (actionName === mockStoreActionGetShopTimeSlots) { + console.log(request); if (request.providerNumber == "0000001") { return Promise.resolve(mockGetShopTimeSlotsGoodAvailability); } @@ -311,23 +272,36 @@ describe("service-location-helper.js", () => { }); describe("getAvailabilityRating", () => { - // it("Should return a 'Good' rating", async () => { - // // Arrange - // const providerNumber = "0000001"; - // const expected = "Good"; - // // Act - // const result = await getAvailabilityRating(providerNumber); - // // Assert - // expect(result).toEqual(expected); - // }); - // it("Should return a 'Low' rating", async () => { - // // Arrange - // const providerNumber = "0000000"; - // const expected = "Low"; - // // Act - // const result = await getAvailabilityRating(providerNumber); - // // Assert - // expect(result).toEqual(expected); - // }); + it("Should return a 'high' rating", async () => { + // Arrange + const providerNumber = "0000001"; + const expected = "high"; + // Act + const result = await getAvailabilityRating( + "2023-06-30", + "2023-07-06", + "Inshop", + providerNumber + ); + + // Assert + expect(result).toEqual(expected); + }); + + it("Should return a 'low' rating", async () => { + // Arrange + const providerNumber = "0000000"; + const expected = "low"; + // Act + const result = await getAvailabilityRating( + "2023-06-30", + "2023-07-06", + "Inshop", + providerNumber + ); + + // Assert + expect(result).toEqual(expected); + }); }); }); diff --git a/src/layouts/service-location/shop-question/shop-list-button/shop-list-button.vue b/src/layouts/service-location/shop-question/shop-list-button/shop-list-button.vue index df80fdffa..6eb34382e 100644 --- a/src/layouts/service-location/shop-question/shop-list-button/shop-list-button.vue +++ b/src/layouts/service-location/shop-question/shop-list-button/shop-list-button.vue @@ -73,10 +73,11 @@ export default { }, computed: { displayAvailabilityIndicators() { - return experimentMixin.methods.hasSettingEqualTo( - experimentSettings.DISPLAY_AVAILABILITY_INDICATORS, - "true" - ); + return true; //TODO: REMOVE THIS + // return experimentMixin.methods.hasSettingEqualTo( + // experimentSettings.DISPLAY_AVAILABILITY_INDICATORS, + // "true" + // ); }, isLoaderDisplayed() { return this.availabilityRating == null;