All files / src test-utils.jsx

96.82% Statements 61/63
85.71% Branches 6/7
100% Functions 3/3
96.82% Lines 61/63

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 641x 1x 1x 1x 1x 1x 1x 1x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 1x 1x 1x     1x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 1x 1x 18x 18x 18x 18x 1x 1x 1x 1x 1x 1x 1x  
import React from "react";
import { render } from "@testing-library/react";
import { MemoryRouter } from "react-router-dom";
import { ThemeProvider } from "./context/ThemeContext";
import { DataProvider, DataContext } from "./context/DataContext";
import { TerminalContextProvider } from "react-terminal";
 
const AllTheProviders = ({ children, route = "/", dataContext = {}, theme = "dark" }) => {
    const defaultDataContext = {
        refresh: false,
        setRefresh: vi.fn(),
        stack: [],
        setStack: vi.fn(),
        functions: [],
        setFunctions: vi.fn(),
        infoBreakpointData: "",
        setInfoBreakpointData: vi.fn(),
        memoryMap: "",
        setMemoryMap: vi.fn(),
        isDarkMode: "dark",
        setDarkMode: vi.fn(),
        dark: false,
        setDark: vi.fn(),
        terminalOutput: "",
        setCommandPress: vi.fn(),
        commandPress: true,
        setTerminalOutput: vi.fn(),
    };
 
    // We need to mock localStorage for the ThemeProvider
    if (typeof localStorage !== 'undefined' && typeof localStorage.setItem === 'function') {
        try {
            localStorage.setItem("gdbui-mode", theme);
        } catch (e) {
            // Ignore
        }
    }
 
    return (
        <MemoryRouter initialEntries={[route]}>
            <ThemeProvider key={theme}>
                <DataContext.Provider value={{ ...defaultDataContext, ...dataContext }}>
                    <TerminalContextProvider>
                        {children}
                    </TerminalContextProvider>
                </DataContext.Provider>
            </ThemeProvider>
        </MemoryRouter>
    );
};
 
const customRender = (ui, { route, dataContext, theme, ...options } = {}) =>
    render(ui, {
        wrapper: (props) => <AllTheProviders {...props} route={route} dataContext={dataContext} theme={theme} />,
        ...options
    });
 
// re-export everything
export * from "@testing-library/react";
 
// override render method
export { customRender as render };
export { TerminalContextProvider };