react-ions
Version:
An open source set of React components that implement Ambassador's Design and UX patterns.
68 lines (49 loc) • 2.72 kB
JavaScript
;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _AlertSystem = require('../AlertSystem');
var _AlertSystem2 = _interopRequireDefault(_AlertSystem);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
describe('AlertSystem', function () {
describe('render', function () {
it('should render an empty alert system', function () {
expect(shallow(_react2.default.createElement(_AlertSystem2.default, { alerts: [] }))).toMatchSnapshot();
});
it('should render an alert system with alerts', function () {
var clock = sinon.useFakeTimers(1588161287485 * 1000);
var alerts = [{ content: 'Test success' }, { type: 'warning', content: 'Test warning' }, { type: 'info', content: 'Test info' }, { type: 'danger', content: 'Test danger' }];
expect(shallow(_react2.default.createElement(_AlertSystem2.default, { alerts: alerts }))).toMatchSnapshot();
clock.restore();
});
it('should upadate when the alerts prop changes', function () {
var clock = sinon.useFakeTimers(1588161287485 * 1000);
var alerts = [{ content: 'Test success' }];
var wrapper = shallow(_react2.default.createElement(_AlertSystem2.default, { alerts: alerts }));
expect(wrapper).toMatchSnapshot();
alerts.push({ type: 'warning', content: 'Test warning' });
wrapper.setProps({ alerts: alerts });
expect(wrapper).toMatchSnapshot();
clock.restore();
});
});
describe('getAlerts', function () {
it('should get alerts that are not hidden', function () {
var alerts = [{ content: 'Test success' }, { type: 'warning', content: 'Test warning', hidden: true }, { type: 'info', content: 'Test info', hidden: true }, { type: 'danger', content: 'Test danger' }];
var getAlerts = shallow(_react2.default.createElement(_AlertSystem2.default, { alerts: alerts })).instance().getAlerts;
expect(getAlerts()).toMatchSnapshot();
});
});
describe('removeAlert', function () {
it('should hide an alert and call its onClose callback if provided', function () {
var alerts = [{ key: 'ALERT_KEY', content: 'Test success', onClose: sinon.spy() }];
var wrapper = shallow(_react2.default.createElement(_AlertSystem2.default, { alerts: alerts }));
var removeAlert = wrapper.instance().removeAlert;
var alert = { key: 'ALERT_KEY' };
expect(wrapper.state('alerts')[0]).toMatchSnapshot();
removeAlert(alert);
expect(wrapper.state('alerts')[0]).toMatchSnapshot();
expect(alerts[0].onClose.calledOnce).toBe.true;
expect(alerts[0].onClose.calledWithExactly(alert)).toBe.true;
});
});
});