@kiwicom/smart-faq
Version:
109 lines (86 loc) • 4.74 kB
JavaScript
require("core-js/modules/es.array.find");
require("core-js/modules/es.object.get-own-property-descriptor");
var _enzyme = require("enzyme");
var _reactTestRenderer = require("react-test-renderer");
var React = _interopRequireWildcard(require("react"));
var _relayTestUtils = require("relay-test-utils");
var _reactRelay = require("react-relay");
var _Alert = _interopRequireDefault(require("@kiwicom/orbit-components/lib/Alert"));
var _BoardingPassesBoxWrapper = _interopRequireDefault(require("../BoardingPassesBoxWrapper"));
var _BoardingPassesBoxContent = _interopRequireDefault(require("../BoardingPassesBoxContent"));
var _BoardingPassesList = _interopRequireDefault(require("../BoardingPassesList"));
var _BoardingPassesItem = _interopRequireDefault(require("../BoardingPassesItem"));
var _graphql;
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; } }
var renderBoardingPasses = function renderBoardingPasses(queryProps) {
var props = queryProps.props,
error = queryProps.error;
var boardingPassesInfo = props === null || props === void 0 ? void 0 : props.nearestBooking;
return React.createElement(_BoardingPassesBoxWrapper.default, {
showSubtitle: !error
}, React.createElement(_BoardingPassesBoxContent.default, {
boardingPassesInfo: boardingPassesInfo,
error: error
}));
};
describe('BoardingPassesInfo', function () {
var environment = (0, _relayTestUtils.createMockEnvironment)();
var TestRenderer = function TestRenderer() {
return React.createElement(_reactRelay.QueryRenderer, {
environment: environment,
query: _graphql || (_graphql = function _graphql() {
var node = require("./__generated__/BoardingPassesInfoTestQuery.graphql");
if (node.hash && node.hash !== "d8075b8c58013db6a6d7827b62ab939f") {
console.error("The definition of 'BoardingPassesInfoTestQuery' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data.");
}
return require("./__generated__/BoardingPassesInfoTestQuery.graphql");
}),
variables: {
brand: 'kiwicom'
},
render: renderBoardingPasses
});
};
it('Should display the loading animation content when it is loading', function () {
var dataLoading = {
boardingPassesInfo: null,
error: null
};
var wrapper = (0, _enzyme.mount)(React.createElement(_BoardingPassesBoxWrapper.default, {
showSubtitle: !dataLoading.error
}, React.createElement(_BoardingPassesBoxContent.default, {
boardingPassesInfo: dataLoading.boardingPassesInfo,
error: dataLoading.error
})));
expect(wrapper.find('svg > title').text()).toEqual('Loading interface...');
});
it('Should render the card with an error message when there is a GraphQL error', function () {
var component = (0, _reactTestRenderer.create)(React.createElement(TestRenderer, null)).root; // Simulate a GraphQL error
environment.mock.rejectMostRecentOperation(new Error('Mordor is not a valid booking destination'));
var errorBox = component.findByType(_Alert.default);
var Title = errorBox.props.title;
expect(errorBox).toBeDefined();
expect(Title.props.t).toBe('smartfaq.boarding_pass_info.content.error_alert.title');
});
it('Should render the card with a valid result', function () {
var component = (0, _reactTestRenderer.create)(React.createElement(TestRenderer, null)).root; // Mock a GraphQL response with a sample location area name (which renders on the result)
environment.mock.resolveMostRecentOperation(function (operation) {
return _relayTestUtils.MockPayloadGenerator.generate(operation, {
LocationArea: function LocationArea() {
return {
name: 'Oslo'
};
}
});
});
var resultsElement = component.findByType(_BoardingPassesList.default);
var resultsItem = component.findByType(_BoardingPassesItem.default);
var errorBox = component.findAllByType(_Alert.default);
expect(resultsElement).toBeDefined();
expect(resultsItem).toBeDefined();
expect(resultsElement.children).toHaveLength(1);
expect(errorBox).toHaveLength(0);
});
});
;