UNPKG

@kiwicom/smart-faq

Version:

Smart FAQ

128 lines (113 loc) 4.89 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var React = _interopRequireWildcard(require("react")); var _mockdate = _interopRequireDefault(require("mockdate")); var _enzyme = require("enzyme"); var _BookingDetail = require("../BookingDetail"); var _Notification = _interopRequireDefault(require("../bookingItem/Notification")); var _featureToggles = _interopRequireDefault(require("../../../feature-toggles.json")); // @flow beforeEach(function () { return _mockdate.default.set('06/01/2018 00:00:00'); }); afterEach(function () { return _mockdate.default.reset(); }); var createBookingStub = function createBookingStub(outboundDate, inboundDate) { return { inbound: { arrival: { time: new Date(inboundDate) } }, outbound: { arrival: { time: new Date(outboundDate) }, departure: { time: new Date(outboundDate) } }, isPastBooking: new Date() > new Date(inboundDate), directAccessURL: 'https://example.com/asd', type: 'BookingReturn', status: 'CONFIRMED' }; }; var defaults = { onSetFAQSection: jest.fn(), history: { push: jest.fn() }, theme: { orbit: { paletteProductNormal: '#00a991' } } }; describe('BookingDetail >', function () { var booking48HoursAgo = null; var bookingBetweenDepartureAndArrival = null; beforeEach(function () { booking48HoursAgo = createBookingStub('06/02/2018', '06/19/2018'); bookingBetweenDepartureAndArrival = createBookingStub('05/02/2018', '06/19/2018'); }); if (_featureToggles.default.notification) { describe('Notification', function () { it('is displayed before the departure', function () { var booking = createBookingStub('06/12/2018', '06/19/2018'); var wrapper = (0, _enzyme.shallow)(React.createElement(_BookingDetail.RawBookingDetail, (0, _extends2.default)({}, defaults, { booking: booking }))); expect(wrapper.find(_Notification.default).exists()).toBeTruthy(); }); it('is not displayed after the departure', function () { var booking = createBookingStub('05/01/2017', '05/19/2017'); var wrapper = (0, _enzyme.shallow)(React.createElement(_BookingDetail.RawBookingDetail, (0, _extends2.default)({}, defaults, { booking: booking }))); expect(wrapper.find(_Notification.default).exists()).toBeFalsy(); }); it('has prop isUrgent true when there is less than 48 before departure', function () { var wrapper = (0, _enzyme.shallow)(React.createElement(_BookingDetail.RawBookingDetail, (0, _extends2.default)({}, defaults, { booking: booking48HoursAgo }))); expect(wrapper.find(_Notification.default).props().isUrgent).toBeTruthy(); }); ['REFUNDED', 'PENDING', 'CANCELLED', 'DELETED', 'CLOSED', 'EXPIRED'].forEach(function (status) { return it("is not displayed for booking with ".concat(status, " status"), function () { var refundedBooking = (0, _objectSpread2.default)({}, booking48HoursAgo, { status: status }); var wrapper = (0, _enzyme.shallow)(React.createElement(_BookingDetail.RawBookingDetail, (0, _extends2.default)({}, defaults, { booking: refundedBooking }))); expect(wrapper.find(_Notification.default).exists()).toBeFalsy(); }); }); }); } it('has prop isFuture true when inbound flight is in future and outbound flight date already passed', function () { var wrapper = (0, _enzyme.shallow)(React.createElement(_BookingDetail.RawBookingDetail, (0, _extends2.default)({}, defaults, { booking: bookingBetweenDepartureAndArrival }))); expect(wrapper.find('[data-test="upcoming"]').exists()).toBeTruthy(); }); describe('Contact', function () { it('is displayed when there is less than 48 before departure', function () { var wrapper = (0, _enzyme.shallow)(React.createElement(_BookingDetail.RawBookingDetail, (0, _extends2.default)({}, defaults, { booking: booking48HoursAgo }))); expect(wrapper.find('[dataTest="contact"]').exists()).toBeTruthy(); }); it('displayed when inbound flight is in future and outbound flight date already passed', function () { var wrapper = (0, _enzyme.shallow)(React.createElement(_BookingDetail.RawBookingDetail, (0, _extends2.default)({}, defaults, { booking: bookingBetweenDepartureAndArrival }))); expect(wrapper.find('[dataTest="contact"]').exists()).toBeTruthy(); }); }); });