import React from 'react';
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import '@testing-library/jest-dom';
import ReactExampleGlobal from './ReactExampleGlobal';
describe('ReactExampleGlobal', () => {
// Make sure no unwanted console info are displayed during testing
const consoleSpy = jest.spyOn(console, 'info').mockImplementation();
afterEach(() => consoleSpy.mockClear());
test('disables after click', async () => {
// It is recommended to call userEvent.setup per test
const user = userEvent.setup();
render();
const btn = screen.getByRole('button', { name: 'ReactExampleGlobal - Yes' });
expect(btn).not.toBeDisabled();
await user.click(btn);
expect(btn).toBeDisabled();
});
test('provides click callback', async () => {
const user = userEvent.setup();
const clickCallback = jest.fn();
render();
const btn = screen.getByRole('button', { name: 'ReactExampleGlobal - Yes' });
await user.click(btn);
expect(clickCallback).toHaveBeenCalled();
});
test('prints to console.info on click', async () => {
const user = userEvent.setup();
render();
const btn = screen.getByRole('button', { name: 'ReactExampleGlobal - Yes' });
await user.click(btn);
expect(consoleSpy).toHaveBeenCalledWith('ReactExampleGlobal clicked 1 a');
});
});