UNPKG

@kiwicom/smart-faq

Version:

147 lines (119 loc) 7.02 kB
"use strict"; require("core-js/modules/es.symbol"); require("core-js/modules/es.array.filter"); require("core-js/modules/es.array.find"); require("core-js/modules/es.array.for-each"); require("core-js/modules/es.date.to-string"); require("core-js/modules/es.object.assign"); require("core-js/modules/es.object.get-own-property-descriptor"); require("core-js/modules/es.object.get-own-property-descriptors"); require("core-js/modules/es.object.keys"); require("core-js/modules/web.dom-collections.for-each"); 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")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } beforeEach(function () { return _mockdate.default.set('06/01/2018 00:00:00'); }); afterEach(function () { return _mockdate.default.reset(); }); var mockRefType /*: any*/ = null; var createBookingStub = function createBookingStub(outboundDate, inboundDate) { return { $refType: mockRefType, $fragmentRefs: mockRefType, outbound: { departure: { time: new Date(outboundDate) } }, isPastBooking: new Date() > new Date(inboundDate), directAccessURL: 'https://example.com/asd', type: 'BookingReturn', status: 'CONFIRMED', assets: null, availableServices: null }; }; var defaults = { log: jest.fn(), onSetFAQSection: jest.fn(), // $FlowExpectedError: we don't need all history: { push: jest.fn() } }; describe('BookingDetail >', function () { 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, _extends({}, 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, _extends({}, 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 booking48HoursAgo = createBookingStub('06/02/2018', '06/19/2018'); var wrapper = (0, _enzyme.shallow)(React.createElement(_BookingDetail.RawBookingDetail, _extends({}, 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 booking48HoursAgo = createBookingStub('06/02/2018', '06/19/2018'); var refundedBooking = _objectSpread({}, booking48HoursAgo, { status: status }); var wrapper = (0, _enzyme.shallow)(React.createElement(_BookingDetail.RawBookingDetail, _extends({}, 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 bookingBetweenDepartureAndArrival = createBookingStub('05/02/2018', '06/19/2018'); var wrapper = (0, _enzyme.shallow)(React.createElement(_BookingDetail.RawBookingDetail, _extends({}, 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 booking48HoursAgo = createBookingStub('06/02/2018', '06/19/2018'); var wrapper = (0, _enzyme.shallow)(React.createElement(_BookingDetail.RawBookingDetail, _extends({}, 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 bookingBetweenDepartureAndArrival = createBookingStub('05/02/2018', '06/19/2018'); var wrapper = (0, _enzyme.shallow)(React.createElement(_BookingDetail.RawBookingDetail, _extends({}, defaults, { booking: bookingBetweenDepartureAndArrival }))); expect(wrapper.find('[dataTest="contact"]').exists()).toBeTruthy(); }); }); });