application-amicale/__tests__/utils/EquipmentBooking.test.js

320 lines
11 KiB
JavaScript
Raw Normal View History

import React from 'react';
import * as EquipmentBooking from "../../src/utils/EquipmentBooking";
import i18n from "i18n-js";
test('getISODate', () => {
let date = new Date("2020-03-05 12:00");
expect(EquipmentBooking.getISODate(date)).toBe("2020-03-05");
date = new Date("2020-03-05");
expect(EquipmentBooking.getISODate(date)).toBe("2020-03-05");
date = new Date("2020-03-05 00:00"); // Treated as local time
expect(EquipmentBooking.getISODate(date)).toBe("2020-03-04"); // Treated as UTC
});
test('getCurrentDay', () => {
jest.spyOn(Date, 'now')
.mockImplementation(() =>
new Date('2020-01-14 14:50:35').getTime()
);
expect(EquipmentBooking.getCurrentDay().getTime()).toBe(new Date("2020-01-14").getTime());
});
test('isEquipmentAvailable', () => {
jest.spyOn(Date, 'now')
.mockImplementation(() =>
new Date('2020-07-09').getTime()
);
let testDevice = {
id: 1,
name: "Petit barbecue",
caution: 100,
booked_at: [{begin: "2020-07-07", end: "2020-07-10"}]
};
expect(EquipmentBooking.isEquipmentAvailable(testDevice)).toBeFalse();
testDevice.booked_at = [{begin: "2020-07-07", end: "2020-07-09"}];
expect(EquipmentBooking.isEquipmentAvailable(testDevice)).toBeFalse();
testDevice.booked_at = [{begin: "2020-07-09", end: "2020-07-10"}];
expect(EquipmentBooking.isEquipmentAvailable(testDevice)).toBeFalse();
testDevice.booked_at = [
{begin: "2020-07-07", end: "2020-07-8"},
{begin: "2020-07-10", end: "2020-07-12"},
];
expect(EquipmentBooking.isEquipmentAvailable(testDevice)).toBeTrue();
});
test('getFirstEquipmentAvailability', () => {
jest.spyOn(Date, 'now')
.mockImplementation(() =>
new Date('2020-07-09').getTime()
);
let testDevice = {
id: 1,
name: "Petit barbecue",
caution: 100,
booked_at: [{begin: "2020-07-07", end: "2020-07-10"}]
};
expect(EquipmentBooking.getFirstEquipmentAvailability(testDevice).getTime()).toBe(new Date("2020-07-11").getTime());
testDevice.booked_at = [{begin: "2020-07-07", end: "2020-07-09"}];
expect(EquipmentBooking.getFirstEquipmentAvailability(testDevice).getTime()).toBe(new Date("2020-07-10").getTime());
testDevice.booked_at = [
{begin: "2020-07-07", end: "2020-07-09"},
{begin: "2020-07-10", end: "2020-07-16"},
];
expect(EquipmentBooking.getFirstEquipmentAvailability(testDevice).getTime()).toBe(new Date("2020-07-17").getTime());
testDevice.booked_at = [
{begin: "2020-07-07", end: "2020-07-09"},
{begin: "2020-07-10", end: "2020-07-12"},
{begin: "2020-07-14", end: "2020-07-16"},
];
expect(EquipmentBooking.getFirstEquipmentAvailability(testDevice).getTime()).toBe(new Date("2020-07-13").getTime());
});
test('getRelativeDateString', () => {
jest.spyOn(Date, 'now')
.mockImplementation(() =>
new Date('2020-07-09').getTime()
);
jest.spyOn(i18n, 't')
.mockImplementation((translationString: string) => {
2020-07-12 16:40:37 +02:00
const prefix = "screens.equipment.";
if (translationString === prefix + "otherYear")
return "0";
else if (translationString === prefix + "otherMonth")
return "1";
else if (translationString === prefix + "thisMonth")
return "2";
else if (translationString === prefix + "tomorrow")
return "3";
else if (translationString === prefix + "today")
return "4";
else
return null;
}
);
expect(EquipmentBooking.getRelativeDateString(new Date("2020-07-09"))).toBe("4");
expect(EquipmentBooking.getRelativeDateString(new Date("2020-07-10"))).toBe("3");
expect(EquipmentBooking.getRelativeDateString(new Date("2020-07-11"))).toBe("2");
expect(EquipmentBooking.getRelativeDateString(new Date("2020-07-30"))).toBe("2");
expect(EquipmentBooking.getRelativeDateString(new Date("2020-08-30"))).toBe("1");
expect(EquipmentBooking.getRelativeDateString(new Date("2020-11-10"))).toBe("1");
expect(EquipmentBooking.getRelativeDateString(new Date("2021-11-10"))).toBe("0");
});
test('getValidRange', () => {
let testDevice = {
id: 1,
name: "Petit barbecue",
caution: 100,
booked_at: [{begin: "2020-07-07", end: "2020-07-10"}]
};
let start = new Date("2020-07-11");
let end = new Date("2020-07-15");
let result = [
"2020-07-11",
"2020-07-12",
"2020-07-13",
"2020-07-14",
"2020-07-15",
];
expect(EquipmentBooking.getValidRange(start, end, testDevice)).toStrictEqual(result);
testDevice.booked_at = [
{begin: "2020-07-07", end: "2020-07-10"},
{begin: "2020-07-13", end: "2020-07-15"},
];
result = [
"2020-07-11",
"2020-07-12",
];
expect(EquipmentBooking.getValidRange(start, end, testDevice)).toStrictEqual(result);
testDevice.booked_at = [{begin: "2020-07-12", end: "2020-07-13"}];
result = ["2020-07-11"];
expect(EquipmentBooking.getValidRange(start, end, testDevice)).toStrictEqual(result);
testDevice.booked_at = [{begin: "2020-07-07", end: "2020-07-12"},];
result = [
"2020-07-13",
"2020-07-14",
"2020-07-15",
];
expect(EquipmentBooking.getValidRange(end, start, testDevice)).toStrictEqual(result);
start = new Date("2020-07-14");
end = new Date("2020-07-14");
result = [
"2020-07-14",
];
expect(EquipmentBooking.getValidRange(start, start, testDevice)).toStrictEqual(result);
expect(EquipmentBooking.getValidRange(end, start, testDevice)).toStrictEqual(result);
expect(EquipmentBooking.getValidRange(start, end, null)).toStrictEqual(result);
start = new Date("2020-07-14");
end = new Date("2020-07-17");
result = [
"2020-07-14",
"2020-07-15",
"2020-07-16",
"2020-07-17",
];
expect(EquipmentBooking.getValidRange(start, end, null)).toStrictEqual(result);
testDevice.booked_at = [{begin: "2020-07-17", end: "2020-07-17"}];
result = [
"2020-07-14",
"2020-07-15",
"2020-07-16",
];
expect(EquipmentBooking.getValidRange(start, end, testDevice)).toStrictEqual(result);
testDevice.booked_at = [
{begin: "2020-07-12", end: "2020-07-13"},
{begin: "2020-07-15", end: "2020-07-20"},
];
start = new Date("2020-07-11");
end = new Date("2020-07-23");
result = [
"2020-07-21",
"2020-07-22",
"2020-07-23",
];
expect(EquipmentBooking.getValidRange(end, start, testDevice)).toStrictEqual(result);
});
test('generateMarkedDates', () => {
let theme = {
colors: {
primary: "primary",
danger: "primary",
textDisabled: "primary",
}
}
let testDevice = {
id: 1,
name: "Petit barbecue",
caution: 100,
booked_at: [{begin: "2020-07-07", end: "2020-07-10"}]
};
let start = new Date("2020-07-11");
let end = new Date("2020-07-13");
let range = EquipmentBooking.getValidRange(start, end, testDevice);
let result = {
"2020-07-11": {
startingDay: true,
endingDay: false,
color: theme.colors.primary
},
"2020-07-12": {
startingDay: false,
endingDay: false,
color: theme.colors.danger
},
"2020-07-13": {
startingDay: false,
endingDay: true,
color: theme.colors.primary
},
};
expect(EquipmentBooking.generateMarkedDates(true, theme, range)).toStrictEqual(result);
result = {
"2020-07-11": {
startingDay: true,
endingDay: false,
color: theme.colors.textDisabled
},
"2020-07-12": {
startingDay: false,
endingDay: false,
color: theme.colors.textDisabled
},
"2020-07-13": {
startingDay: false,
endingDay: true,
color: theme.colors.textDisabled
},
};
expect(EquipmentBooking.generateMarkedDates(false, theme, range)).toStrictEqual(result);
result = {
"2020-07-11": {
startingDay: true,
endingDay: false,
color: theme.colors.textDisabled
},
"2020-07-12": {
startingDay: false,
endingDay: false,
color: theme.colors.textDisabled
},
"2020-07-13": {
startingDay: false,
endingDay: true,
color: theme.colors.textDisabled
},
};
range = EquipmentBooking.getValidRange(end, start, testDevice);
expect(EquipmentBooking.generateMarkedDates(false, theme, range)).toStrictEqual(result);
testDevice.booked_at = [{begin: "2020-07-13", end: "2020-07-15"},];
result = {
"2020-07-11": {
startingDay: true,
endingDay: false,
color: theme.colors.primary
},
"2020-07-12": {
startingDay: false,
endingDay: true,
color: theme.colors.primary
},
};
range = EquipmentBooking.getValidRange(start, end, testDevice);
expect(EquipmentBooking.generateMarkedDates(true, theme, range)).toStrictEqual(result);
testDevice.booked_at = [{begin: "2020-07-12", end: "2020-07-13"},];
result = {
"2020-07-11": {
startingDay: true,
endingDay: true,
color: theme.colors.primary
},
};
range = EquipmentBooking.getValidRange(start, end, testDevice);
expect(EquipmentBooking.generateMarkedDates(true, theme, range)).toStrictEqual(result);
testDevice.booked_at = [
{begin: "2020-07-12", end: "2020-07-13"},
{begin: "2020-07-15", end: "2020-07-20"},
];
start = new Date("2020-07-11");
end = new Date("2020-07-23");
result = {
"2020-07-11": {
startingDay: true,
endingDay: true,
color: theme.colors.primary
},
};
range = EquipmentBooking.getValidRange(start, end, testDevice);
expect(EquipmentBooking.generateMarkedDates(true, theme, range)).toStrictEqual(result);
result = {
"2020-07-21": {
startingDay: true,
endingDay: false,
color: theme.colors.primary
},
"2020-07-22": {
startingDay: false,
endingDay: false,
color: theme.colors.danger
},
"2020-07-23": {
startingDay: false,
endingDay: true,
color: theme.colors.primary
},
};
range = EquipmentBooking.getValidRange(end, start, testDevice);
expect(EquipmentBooking.generateMarkedDates(true, theme, range)).toStrictEqual(result);
});