57 lines
1.1 KiB
JavaScript
57 lines
1.1 KiB
JavaScript
|
import scrollTo from '../scrollTo';
|
||
|
|
||
|
describe('Test ScrollTo function', () => {
|
||
|
let dateNowMock;
|
||
|
|
||
|
beforeAll(() => {
|
||
|
jest.useFakeTimers();
|
||
|
});
|
||
|
|
||
|
afterAll(() => {
|
||
|
jest.useRealTimers();
|
||
|
});
|
||
|
|
||
|
beforeEach(() => {
|
||
|
dateNowMock = jest
|
||
|
.spyOn(Date, 'now')
|
||
|
.mockImplementationOnce(() => 0)
|
||
|
.mockImplementationOnce(() => 1000);
|
||
|
});
|
||
|
|
||
|
afterEach(() => {
|
||
|
dateNowMock.mockRestore();
|
||
|
});
|
||
|
|
||
|
it('test scrollTo', async () => {
|
||
|
const scrollToSpy = jest.spyOn(window, 'scrollTo').mockImplementation((x, y) => {
|
||
|
window.scrollY = y;
|
||
|
window.pageYOffset = y;
|
||
|
});
|
||
|
|
||
|
scrollTo(1000);
|
||
|
|
||
|
jest.runAllTimers();
|
||
|
expect(window.pageYOffset).toBe(1000);
|
||
|
|
||
|
scrollToSpy.mockRestore();
|
||
|
});
|
||
|
|
||
|
it('test callback - option', async () => {
|
||
|
const cbMock = jest.fn();
|
||
|
scrollTo(1000, {
|
||
|
callback: cbMock,
|
||
|
});
|
||
|
jest.runAllTimers();
|
||
|
expect(cbMock).toHaveBeenCalledTimes(1);
|
||
|
});
|
||
|
|
||
|
it('test getContainer - option', async () => {
|
||
|
const div = document.createElement('div');
|
||
|
scrollTo(1000, {
|
||
|
getContainer: () => div,
|
||
|
});
|
||
|
jest.runAllTimers();
|
||
|
expect(div.scrollTop).toBe(1000);
|
||
|
});
|
||
|
});
|