forked from vergnet/application-amicale
		
	
		
			
				
	
	
		
			345 lines
		
	
	
	
		
			9.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			345 lines
		
	
	
	
		
			9.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* eslint-disable */
 | |
| 
 | |
| 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) => {
 | |
|     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);
 | |
| });
 |