react-scroll-context
Version:
A component to disable scroll on document body when its children are scrolled.
48 lines (39 loc) • 1.6 kB
JavaScript
import React from 'react';
import assert from 'assert';
import { mount } from 'enzyme';
import ReactScrollContext from '../src';
const child = <div className="child"></div>;
describe('ReactScrollContext component', () => {
let wrapper;
beforeEach(() => {
wrapper = mount(<ReactScrollContext>{child}</ReactScrollContext>);
document.body.style.overflow = 'auto';
document.body.style.marginRight = '0px';
});
it('renders children', () => {
assert.strictEqual(wrapper.find('.child').length, 1);
});
it('hides overflow on body when users mouse hovers over container', () => {
wrapper.find('.child').first().simulate('mouseOver');
assert.strictEqual(document.body.style.overflow, 'hidden');
});
it('allows scroll when users mouse hovers over container', () => {
wrapper.find('.child').first().simulate('mouseOver');
wrapper.find('.child').first().simulate('mouseOut');
assert.strictEqual(document.body.style.overflow, 'auto');
});
it('enables scroll again when it is unmounted', () => {
wrapper.find('.child').first().simulate('mouseOver');
wrapper.unmount();
assert.strictEqual(document.body.style.overflow, 'auto');
});
describe('when enable prop is set', () => {
it('does not trigger mouseEvent', () => {
wrapper.setProps({
enable: false,
});
wrapper.find('.child').first().simulate('mouseOver');
assert.strictEqual(document.body.style.overflow, 'auto');
});
});
});