import React from 'react';
import { mount } from 'enzyme';
import Link from 'next/link';
import LinkButton from './link-button';
describe('LinkButton', () => {
it('should render an anchor', () => {
const wrapper = mount(Foo);
const anchor = wrapper.find('a');
expect(anchor).toHaveLength(1);
expect(anchor.prop('href')).toEqual('/foo');
});
it('should render a next Link component', () => {
const wrapper = mount(Foo);
const link = wrapper.find(Link);
expect(link).toHaveLength(1);
expect(link.prop('href')).toEqual('/foo');
});
it('should not remount its contents across re-renders', () => {
const wrapper = mount(Foo);
const anchorBefore = wrapper.find('a').instance();
const linkBefore = wrapper.find(Link).instance();
// Triggers a re-render
wrapper.setProps({});
const anchorAfter = wrapper.find('a').instance();
const linkAfter = wrapper.find(Link).instance();
expect(anchorBefore).toBe(anchorAfter);
// Note: doing expect(linkBefore).toBe(linkAfter) causes infinite loop (OOM) in jests object equality reporting tool
// since the component instances are recursive.
expect(linkBefore === linkAfter).toBe(true);
});
});