@kiwicom/smart-faq
Version:
Smart FAQ
128 lines (113 loc) • 4.89 kB
JavaScript
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();
});
});
});
;