/* eslint-disable no-console */
import React from 'react';
import { shallow, mount, render } from 'enzyme';
import { HelmetProvider } from 'react-helmet-async';

/* import non-connected component for shallow rendering */
import { RawCounter as Counter } from './Counter';

describe('The counter component', () => {

    it('should render 1 level deep without throwing an error', () => {

        const shallowWrapper = shallow(<Counter />);
        shallowWrapper.setProps({ count: 5 });

        expect(shallowWrapper.exists('.b-counter')).toBe(true);
        expect(shallowWrapper.find('.value').text()).toBe('counter value is: 5');
    });

    it('should mount in a full DOM', () => {
        /* wrapping with MemoryRouter is necessary because Counter uses Link Component */

        const mountWrapper = mount(
            <HelmetProvider>
                <Counter />
            </HelmetProvider>,
        );

        expect(mountWrapper.find('.b-counter').length).toBe(1);
    });

    it('should render to static HTML', () => {
        /* wrapping with MemoryRouter is necessary because Counter uses Link Component */

        const renderWrapper = render(
            <HelmetProvider>
                <Counter />
            </HelmetProvider>,
        );

        expect(renderWrapper.text()).toEqual('counter value is: Increase Counter');
    });
});
