mx-react-toaster
Version:
A simple react toaster component
125 lines (91 loc) • 4.4 kB
JavaScript
;
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactTestRenderer = require('react-test-renderer');
var _reactTestRenderer2 = _interopRequireDefault(_reactTestRenderer);
var _enzyme = require('enzyme');
var _AlertMessage = require('./AlertMessage');
var _AlertMessage2 = _interopRequireDefault(_AlertMessage);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
jest.useFakeTimers();
describe('AlertMessage', function () {
test('should render the given message', function () {
var props = {
message: 'Some important message'
};
var component = _reactTestRenderer2.default.create(_react2.default.createElement(_AlertMessage2.default, props));
var tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
test('should render the given icon if any', function () {
var props = {
icon: _react2.default.createElement(
'div',
null,
'Icon'
)
};
var component = _reactTestRenderer2.default.create(_react2.default.createElement(_AlertMessage2.default, props));
var tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
test('should use the given theme', function () {
var props = {
theme: 'light'
};
var component = _reactTestRenderer2.default.create(_react2.default.createElement(_AlertMessage2.default, props));
var tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
test('should change the icon based on the given type prop', function () {
var props = {
type: 'info'
};
var component = _reactTestRenderer2.default.create(_react2.default.createElement(_AlertMessage2.default, props));
var tree = component.toJSON();
expect(tree).toMatchSnapshot();
props.type = 'error';
component = _reactTestRenderer2.default.create(_react2.default.createElement(_AlertMessage2.default, props));
tree = component.toJSON();
expect(tree).toMatchSnapshot();
props.type = 'success';
component = _reactTestRenderer2.default.create(_react2.default.createElement(_AlertMessage2.default, props));
tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
describe('_removeItself', _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
test('should call the given onRemoveAlert function after the given time', function () {
var props = {
onRemoveAlert: jest.fn(),
time: 3
};
var component = _reactTestRenderer2.default.create(_react2.default.createElement(_AlertMessage2.default, props));
component.toJSON();
setTimeout(function () {
expect(props.onRemoveAlert).toHaveBeenCalled();
}, props.time);
jest.runOnlyPendingTimers();
});
test('should call the default onRemoveAlert', function () {
var props = {
time: 3
};
var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(_AlertMessage2.default, props));
var instance = wrapper.instance();
expect(_typeof(instance.props.onRemoveAlert)).toBe('function');
expect(instance.props.onRemoveAlert()).toBe(undefined);
});
case 2:
case 'end':
return _context.stop();
}
}
}, _callee, undefined);
})));
});