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);
 | 
						|
  });
 | 
						|
});
 |