/* 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); });