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,6 +93,7 @@ const mockStoreActionGetServiceabilityDetails = storeActions.GET_SERVICEABILITY_
const mockStoreActionGetShopTimeSlots = storeActions.GET_SHOP_TIME_SLOTS; const mockStoreActionGetShopTimeSlots = storeActions.GET_SHOP_TIME_SLOTS;
const mockGetShopTimeSlotsGoodAvailability = { const mockGetShopTimeSlotsGoodAvailability = {
data: {
estimatedServiceMinutesMinimum: 0, estimatedServiceMinutesMinimum: 0,
estimatedServiceMinutesMaximimum: 0, estimatedServiceMinutesMaximimum: 0,
days: [ days: [
@ -107,26 +108,6 @@ const mockGetShopTimeSlotsGoodAvailability = {
}, },
], ],
}, },
{
date: "string",
timeSlots: [],
},
{
date: "string",
timeSlots: [],
},
{
date: "string",
timeSlots: [],
},
{
date: "string",
timeSlots: [],
},
{
date: "string",
timeSlots: [],
},
{ {
date: "string", date: "string",
timeSlots: [ timeSlots: [
@ -139,36 +120,14 @@ const mockGetShopTimeSlotsGoodAvailability = {
], ],
}, },
], ],
},
}; };
const mockGetShopTimeSlotsLowAvailability = { const mockGetShopTimeSlotsLowAvailability = {
data: {
estimatedServiceMinutesMinimum: 0, estimatedServiceMinutesMinimum: 0,
estimatedServiceMinutesMaximimum: 0, estimatedServiceMinutesMaximimum: 0,
days: [ days: [
{
date: "string",
timeSlots: [],
},
{
date: "string",
timeSlots: [],
},
{
date: "string",
timeSlots: [],
},
{
date: "string",
timeSlots: [],
},
{
date: "string",
timeSlots: [],
},
{
date: "string",
timeSlots: [],
},
{ {
date: "string", date: "string",
timeSlots: [ timeSlots: [
@ -181,6 +140,7 @@ const mockGetShopTimeSlotsLowAvailability = {
], ],
}, },
], ],
},
}; };
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;