react-user-idle
Version:
This project is inspired by and forked from https://github.com/ReactTraining/react-idle .
102 lines (86 loc) • 3.02 kB
JavaScript
;
var _enzyme = require('enzyme');
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _index = require('./index');
var _index2 = _interopRequireDefault(_index);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
describe('Idle', function () {
it('should render empty when no children or render props set', function () {
var wrapper = (0, _enzyme.mount)(_react2.default.createElement(_index2.default, null));
expect(wrapper.children().length).toBe(0);
});
it('should render empty when idle not trigger', function () {
var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
_index2.default,
null,
'Long time no action'
));
expect(wrapper.children().length).toBe(0);
});
it('should render children elements when idle', function () {
var timeout = 10;
var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
_index2.default,
{ timeout: timeout, throttle: 1 },
_react2.default.createElement(
'div',
null,
'Long time no action'
)
));
expect(wrapper.children().length).toBe(0);
jest.advanceTimersByTime(timeout * 1000);
wrapper.update();
expect(wrapper.children().length).toBe(1);
});
it('should render by custom function', function () {
var timeout = 10;
var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
_index2.default,
{ timeout: timeout, throttle: 1 },
function (idle) {
return _react2.default.createElement(
'div',
null,
'Current idle status: ',
idle.toString()
);
}
));
expect(wrapper.children().length).toBe(1);
var text = wrapper.find('div').at(0).text();
expect(text.indexOf('false') > -1);
jest.advanceTimersByTime(timeout * 1000);
wrapper.update();
expect(wrapper.children().length).toBe(1);
text = wrapper.find('div').at(0).text();
expect(text.indexOf('true') > -1);
});
it('should delay the timeout when user does action', function () {
var timeout = 10;
var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
_index2.default,
{ timeout: timeout, throttle: 1 },
function (idle) {
return _react2.default.createElement(
'div',
null,
'Current idle status: ',
idle.toString()
);
}
));
jest.advanceTimersByTime(timeout * 1000 * 0.5);
var div = wrapper.find('div').at(0);
expect(div.text().indexOf('false') > -1).toBe(true);
var event = new Event('mousedown');
window.dispatchEvent(event);
jest.advanceTimersByTime(timeout * 1000 * 0.5);
wrapper.update();
expect(wrapper.find('div').at(0).text().indexOf('false') > -1).toBe(true);
jest.advanceTimersByTime(timeout * 1000 * 0.5);
wrapper.update();
expect(wrapper.find('div').at(0).text().indexOf('true') > -1).toBe(true);
});
});