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