2023-01-12 12:40:22 +00:00
|
|
|
import React, { useState, useEffect, useContext } from 'react';
|
2024-04-25 20:29:25 +00:00
|
|
|
import { render, act, screen, waitFor, fireEvent } from '@testing-library/react';
|
2023-01-12 12:40:22 +00:00
|
|
|
|
2024-03-08 00:43:36 +00:00
|
|
|
import { SettingsContext, SettingsContextProvider } from 'context/SettingsContext';
|
2023-01-12 12:40:22 +00:00
|
|
|
|
|
|
|
function ViewportView() {
|
|
|
|
const [renderCount, setRenderCount] = useState(0);
|
2024-03-08 00:43:36 +00:00
|
|
|
const settings = useContext(SettingsContext);
|
2023-01-12 12:40:22 +00:00
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
setRenderCount(renderCount + 1);
|
2024-03-08 00:43:36 +00:00
|
|
|
}, [settings.state]);
|
2023-01-12 12:40:22 +00:00
|
|
|
|
|
|
|
return (
|
|
|
|
<div>
|
2024-04-25 20:29:25 +00:00
|
|
|
<span data-testid="count">{renderCount}</span>
|
|
|
|
<span data-testid="display">{settings.state.display}</span>
|
|
|
|
<span data-testid="width">{settings.state.width}</span>
|
|
|
|
<span data-testid="height">{settings.state.height}</span>
|
2023-01-12 12:40:22 +00:00
|
|
|
</div>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
function ViewportTestApp() {
|
|
|
|
return (
|
2024-03-08 00:43:36 +00:00
|
|
|
<SettingsContextProvider>
|
2023-01-12 12:40:22 +00:00
|
|
|
<ViewportView />
|
2024-03-08 00:43:36 +00:00
|
|
|
</SettingsContextProvider>
|
2023-01-12 12:40:22 +00:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2023-01-12 12:41:14 +00:00
|
|
|
test('display size', async () => {
|
2023-01-12 12:40:22 +00:00
|
|
|
render(<ViewportTestApp />);
|
|
|
|
|
|
|
|
await waitFor(async () => {
|
|
|
|
expect(screen.getByTestId('display').textContent).toBe('large');
|
|
|
|
expect(screen.getByTestId('width').textContent).toBe('1024');
|
|
|
|
expect(screen.getByTestId('height').textContent).toBe('768');
|
|
|
|
});
|
|
|
|
});
|