@kiwicom/smart-faq
Version:
96 lines (82 loc) • 2.83 kB
JavaScript
// @flow
import * as React from 'react';
import { render, shallow } from 'enzyme';
import { LanguageContext } from '../../context/Language';
import * as dateUtils from '../dateUtils';
describe('date utils', () => {
describe('formatCountDown', () => {
it('should return number of remaining days if hoursLeft > 24', () => {
const result = dateUtils.formatCountDown({ hoursLeft: 100.423 });
expect(result).toEqual({
format: 'days',
daysLeft: 4,
});
});
it('should return remaining time in minutes', () => {
const result = dateUtils.formatCountDown({ hoursLeft: 20.423 });
expect(result).toEqual({
format: 'hours_minutes',
hoursLeft: 20,
minutesLeft: 25,
});
});
it('should return remaining time in hours', () => {
const result = dateUtils.formatCountDown({ hoursLeft: 20.001 });
expect(result).toEqual({
format: 'hours',
hoursLeft: 20,
});
});
});
describe('formatDate', () => {
it('should format datestring', () => {
const wrapper = render(
<LanguageContext.Provider value="us">
<div>
<dateUtils.FormatDate dateString="2018-05-04T15:02:02.511Z" />
</div>
</LanguageContext.Provider>,
);
expect(wrapper.text()).toContain('Fri, May 4');
});
});
describe('formatDepartureDate', () => {
it('should format UTC string to DD/MM/YYYY', () => {
const departureDate = '2017-11-23T20:40:00.000Z';
expect(dateUtils.formatDepartureDate(departureDate)).toBe('23/11/2017');
});
});
describe('formatTimeDuration', () => {
it('should format duration', () => {
const hoursAndMinutes = shallow(
<dateUtils.formatTimeDuration mins={90} isLayover />,
);
expect(hoursAndMinutes.props().values.numberHours).toBe(1);
expect(hoursAndMinutes.props().values.numberMins).toBe(30);
const onlyMinutes = shallow(
<dateUtils.formatTimeDuration mins={32} isLayover />,
);
expect(onlyMinutes.props().values.numberMins).toBe(32);
});
});
describe('timeDurationTranslationData', () => {
it('should return object with translation key and translation variables', () => {
const duration = {
mins: 102,
isLayover: false,
};
const expected = {
translationKey:
'smartfaq.single_booking_page.segment.more_than_one_hour',
translationVariables: { numberHours: 1, numberMins: 42 },
};
expect(dateUtils.timeDurationTranslationData(duration)).toEqual(expected);
});
});
describe('formatHour', () => {
it('should format duration', () => {
const myDate = '2018-05-14T15:31:27.464Z';
expect(dateUtils.formatHour(myDate)).toBe('3:31 PM');
});
});
});