import React from 'react'; import { mount } from 'enzyme'; import Anchor from '..'; const { Link } = Anchor; describe('Anchor Render', () => { it('Anchor render perfectly', () => { const wrapper = mount( ); wrapper.find('a[href="#API"]').simulate('click'); wrapper.instance().handleScroll(); expect(wrapper.instance().state).not.toBe(null); }); it('Anchor render perfectly for complete href - click', () => { const wrapper = mount( ); wrapper.find('a[href="http://www.example.com/#API"]').simulate('click'); expect(wrapper.instance().state.activeLink).toBe('http://www.example.com/#API'); }); it('Anchor render perfectly for complete href - scroll', () => { let root = document.getElementById('root'); if (!root) { root = document.createElement('div', { id: 'root' }); root.id = 'root'; document.body.appendChild(root); } mount(
Hello
, { attachTo: root }); const wrapper = mount( ); wrapper.instance().handleScroll(); expect(wrapper.instance().state.activeLink).toBe('http://www.example.com/#API'); }); it('Anchor render perfectly for complete href - scrollTo', async () => { const scrollToSpy = jest.spyOn(window, 'scrollTo'); let root = document.getElementById('root'); if (!root) { root = document.createElement('div', { id: 'root' }); root.id = 'root'; document.body.appendChild(root); } mount(
Hello
, { attachTo: root }); const wrapper = mount( ); wrapper.instance().handleScrollTo('##API'); expect(wrapper.instance().state.activeLink).toBe('##API'); expect(scrollToSpy).not.toHaveBeenCalled(); await new Promise(resolve => setTimeout(resolve, 50)); expect(scrollToSpy).toHaveBeenCalled(); expect(wrapper.instance().animating).toBe(true); await new Promise(resolve => setTimeout(resolve, 500)); expect(wrapper.instance().animating).toBe(false); }); it('should remove listener when unmount', async () => { const wrapper = mount( ); const removeListenerSpy = jest.spyOn(wrapper.instance().scrollEvent, 'remove'); wrapper.unmount(); expect(removeListenerSpy).toHaveBeenCalled(); }); it('should unregister link when unmount children', async () => { const wrapper = mount( ); expect(wrapper.instance().links).toEqual(['#API']); wrapper.setProps({ children: null }); expect(wrapper.instance().links).toEqual([]); }); });