databag/net/web/test/Viewport.test.js

45 lines
1.1 KiB
JavaScript
Raw Normal View History

2023-01-12 12:40:22 +00:00
import React, { useState, useEffect, useContext } from 'react';
import {render, act, screen, waitFor, fireEvent} from '@testing-library/react'
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>
<span data-testid="count">{ renderCount }</span>
2024-03-08 00:43:36 +00:00
<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');
});
});