@kiwicom/smart-faq
Version:
141 lines (116 loc) • 6.52 kB
JavaScript
require("core-js/modules/es.symbol");
require("core-js/modules/es.array.concat");
require("core-js/modules/es.array.filter");
require("core-js/modules/es.array.find");
require("core-js/modules/es.object.assign");
require("core-js/modules/es.object.get-own-property-descriptor");
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 _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, 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();
});
});
});
;