import {render, screen, fireEvent} from '@testing-library/react';
import * as React from 'react';
import {useState} from 'react';
import {expectLogsAndClear, log} from './expectLogs';
function Counter() {
let [state, setState] = useState(0);
return (
<div>
<Title text="Counter" />
<span>{state}</span>
<button data-testid="button" onClick={() => setState(state + 1)}>
increment
</button>
</div>
);
}
function Title({text}) {
log(`rendering: ${text}`);
return <h1>{text}</h1>;
}
test('use-state', async () => {
const {asFragment} = render(<Counter />);
expect(asFragment()).toMatchInlineSnapshot(`
<DocumentFragment>
<div>
<h1>
Counter
</h1>
<span>
0
</span>
<button
data-testid="button"
>
increment
</button>
</div>
</DocumentFragment>
`);
expectLogsAndClear(['rendering: Counter']);
fireEvent.click(screen.getByTestId('button'));
await screen.findByText('1');
expectLogsAndClear(__FORGET__ ? [] : ['rendering: Counter']);
});