Merge pull request #1198 from Safelite/defect/CSR-1494

Defect/csr 1494
This commit is contained in:
Leah Schumann 2023-06-30 08:40:56 -04:00 committed by GitHub
commit ad2df4e765
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 85 additions and 127 deletions

View file

@ -62,27 +62,10 @@ export async function getAvailabilityRating(
false 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; const numberOfDaysToEvaluate = 2;
const isGoodAvailability =
let daysWithMinimalAppointmentsCount = 0; shopTimeSlots.data.days.filter((x) => x.timeSlots.length > 0).length >=
for (let i = 0; i < dateRange; i++) { numberOfDaysToEvaluate;
if (numberOfAppointmentsPerDay[i] >= minimumNumberOfAppointmentsPerDay) {
daysWithMinimalAppointmentsCount++;
if (daysWithMinimalAppointmentsCount >= numberOfDaysToEvaluate) {
break;
}
}
}
const isGoodAvailability = daysWithMinimalAppointmentsCount >= numberOfDaysToEvaluate;
const shopStatus = isGoodAvailability ? "high" : "low"; const shopStatus = isGoodAvailability ? "high" : "low";

View file

@ -93,94 +93,54 @@ const mockStoreActionGetServiceabilityDetails = storeActions.GET_SERVICEABILITY_
const mockStoreActionGetShopTimeSlots = storeActions.GET_SHOP_TIME_SLOTS; const mockStoreActionGetShopTimeSlots = storeActions.GET_SHOP_TIME_SLOTS;
const mockGetShopTimeSlotsGoodAvailability = { const mockGetShopTimeSlotsGoodAvailability = {
estimatedServiceMinutesMinimum: 0, data: {
estimatedServiceMinutesMaximimum: 0, estimatedServiceMinutesMinimum: 0,
days: [ estimatedServiceMinutesMaximimum: 0,
{ days: [
date: "string", {
timeSlots: [ date: "string",
{ timeSlots: [
id: "string", {
startTime: "", id: "string",
endTime: "", startTime: "",
offerPremium: true, endTime: "",
}, offerPremium: true,
], },
}, ],
{ },
date: "string", {
timeSlots: [], date: "string",
}, timeSlots: [
{ {
date: "string", id: "string",
timeSlots: [], startTime: "",
}, endTime: "",
{ offerPremium: true,
date: "string", },
timeSlots: [], ],
}, },
{ ],
date: "string", },
timeSlots: [],
},
{
date: "string",
timeSlots: [],
},
{
date: "string",
timeSlots: [
{
id: "string",
startTime: "",
endTime: "",
offerPremium: true,
},
],
},
],
}; };
const mockGetShopTimeSlotsLowAvailability = { const mockGetShopTimeSlotsLowAvailability = {
estimatedServiceMinutesMinimum: 0, data: {
estimatedServiceMinutesMaximimum: 0, estimatedServiceMinutesMinimum: 0,
days: [ estimatedServiceMinutesMaximimum: 0,
{ days: [
date: "string", {
timeSlots: [], date: "string",
}, timeSlots: [
{ {
date: "string", id: "string",
timeSlots: [], startTime: "",
}, endTime: "",
{ offerPremium: true,
date: "string", },
timeSlots: [], ],
}, },
{ ],
date: "string", },
timeSlots: [],
},
{
date: "string",
timeSlots: [],
},
{
date: "string",
timeSlots: [],
},
{
date: "string",
timeSlots: [
{
id: "string",
startTime: "",
endTime: "",
offerPremium: true,
},
],
},
],
}; };
jest.mock("@/mixins/base-mixin.js", () => ({ jest.mock("@/mixins/base-mixin.js", () => ({
@ -229,6 +189,7 @@ jest.mock("@/mixins/base-mixin.js", () => ({
} }
if (actionName === mockStoreActionGetShopTimeSlots) { if (actionName === mockStoreActionGetShopTimeSlots) {
console.log(request);
if (request.providerNumber == "0000001") { if (request.providerNumber == "0000001") {
return Promise.resolve(mockGetShopTimeSlotsGoodAvailability); return Promise.resolve(mockGetShopTimeSlotsGoodAvailability);
} }
@ -311,23 +272,36 @@ describe("service-location-helper.js", () => {
}); });
describe("getAvailabilityRating", () => { describe("getAvailabilityRating", () => {
// it("Should return a 'Good' rating", async () => { it("Should return a 'high' rating", async () => {
// // Arrange // Arrange
// const providerNumber = "0000001"; const providerNumber = "0000001";
// const expected = "Good"; const expected = "high";
// // Act // Act
// const result = await getAvailabilityRating(providerNumber); const result = await getAvailabilityRating(
// // Assert "2023-06-30",
// expect(result).toEqual(expected); "2023-07-06",
// }); "Inshop",
// it("Should return a 'Low' rating", async () => { providerNumber
// // Arrange );
// const providerNumber = "0000000";
// const expected = "Low"; // Assert
// // Act expect(result).toEqual(expected);
// 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(
"2023-06-30",
"2023-07-06",
"Inshop",
providerNumber
);
// Assert
expect(result).toEqual(expected);
});
}); });
}); });

View file

@ -73,10 +73,11 @@ export default {
}, },
computed: { computed: {
displayAvailabilityIndicators() { displayAvailabilityIndicators() {
return experimentMixin.methods.hasSettingEqualTo( return true; //TODO: REMOVE THIS
experimentSettings.DISPLAY_AVAILABILITY_INDICATORS, // return experimentMixin.methods.hasSettingEqualTo(
"true" // experimentSettings.DISPLAY_AVAILABILITY_INDICATORS,
); // "true"
// );
}, },
isLoaderDisplayed() { isLoaderDisplayed() {
return this.availabilityRating == null; return this.availabilityRating == null;