Add test for network source
This commit is contained in:
parent
7fcc5bb65d
commit
233393400d
@ -51,6 +51,7 @@
|
||||
"start": "react-scripts start",
|
||||
"build": "react-scripts --optimize-for-size build",
|
||||
"test": "react-scripts test",
|
||||
"test-ci": "react-scripts test --watchAll=false",
|
||||
"eject": "react-scripts eject",
|
||||
"i18n-extract": "lingui extract",
|
||||
"i18n-extract:clean": "lingui extract --clean",
|
||||
|
||||
24
src/utils/testing.js
Normal file
24
src/utils/testing.js
Normal file
@ -0,0 +1,24 @@
|
||||
import React from 'react';
|
||||
import { render } from '@testing-library/react';
|
||||
import '@testing-library/jest-dom';
|
||||
import { ThemeProvider, StyledEngineProvider } from '@mui/material/styles';
|
||||
import theme from '../theme';
|
||||
import I18n from '../I18n';
|
||||
|
||||
const AllTheProviders = ({ children }) => {
|
||||
return (
|
||||
<StyledEngineProvider injectFirst>
|
||||
<ThemeProvider theme={theme}>
|
||||
<I18n>{children}</I18n>
|
||||
</ThemeProvider>
|
||||
</StyledEngineProvider>
|
||||
);
|
||||
};
|
||||
|
||||
const customRender = (ui, options) => render(ui, { wrapper: AllTheProviders, ...options });
|
||||
|
||||
// re-export everything
|
||||
export * from '@testing-library/react';
|
||||
|
||||
// override render method
|
||||
export { customRender as render };
|
||||
53
src/views/Edit/Sources/Network.test.js
Normal file
53
src/views/Edit/Sources/Network.test.js
Normal file
@ -0,0 +1,53 @@
|
||||
import React from 'react';
|
||||
import { render, fireEvent } from '../../../utils/testing';
|
||||
import '@testing-library/jest-dom';
|
||||
|
||||
import * as Network from './Network';
|
||||
|
||||
test('FFmpeg 5: RTSP with -timeout', async () => {
|
||||
let $settings = {};
|
||||
const handleChange = (settings) => {
|
||||
$settings = settings;
|
||||
};
|
||||
|
||||
let $inputs = [];
|
||||
const handleProbe = (_, inputs) => {
|
||||
$inputs = inputs;
|
||||
};
|
||||
|
||||
const Source = Network.component;
|
||||
let { getByLabelText, getByText, queryByText, getByRole, rerender } = render(<Source onChange={handleChange} onProbe={handleProbe} />);
|
||||
|
||||
const input = getByLabelText('Address');
|
||||
fireEvent.change(input, { target: { value: 'rtsp://127.0.0.1/live/stream' } });
|
||||
|
||||
expect($settings.mode).toBe('pull');
|
||||
expect($settings.address).toBe('rtsp://127.0.0.1/live/stream');
|
||||
|
||||
rerender(<Source settings={$settings} onChange={handleChange} onProbe={handleProbe} />);
|
||||
|
||||
expect(queryByText('This protocol is unknown or not supported by the available FFmpeg binary.')).toBeInTheDocument();
|
||||
|
||||
const $skills = {
|
||||
ffmpeg: {
|
||||
version: '5.1.2',
|
||||
},
|
||||
formats: {
|
||||
demuxers: ['rtsp'],
|
||||
},
|
||||
};
|
||||
|
||||
rerender(<Source settings={$settings} skills={$skills} onChange={handleChange} onProbe={handleProbe} />);
|
||||
|
||||
expect(queryByText('This protocol is unknown or not supported by the available FFmpeg binary.')).toBe(null);
|
||||
expect(getByText('Probe')).toBeInTheDocument();
|
||||
|
||||
const button = getByRole('button', { name: 'Probe' });
|
||||
fireEvent.click(button, { bubbles: true });
|
||||
|
||||
expect($inputs.length).toBe(1);
|
||||
expect($inputs[0]).toStrictEqual({
|
||||
address: 'rtsp://127.0.0.1/live/stream',
|
||||
options: ['-fflags', '+genpts', '-thread_queue_size', 512, '-timeout', 5000000, '-rtsp_transport', 'tcp'],
|
||||
});
|
||||
});
|
||||
Loading…
x
Reference in New Issue
Block a user