diff options
| author | 2024-07-09 21:55:42 +0100 | |
|---|---|---|
| committer | 2024-07-10 01:56:39 +0100 | |
| commit | e586c951c14d1bac4cabc1f582aca4d12045f179 (patch) | |
| tree | 48b287c399570a26bad5fc4ba566bcf2e1cb8356 | |
| parent | Update App test to render with Redux store (diff) | |
Add new test suite for testing authorization splash
| -rw-r--r-- | src/tests/components/AuthorizationSplash.test.tsx | 62 | 
1 files changed, 62 insertions, 0 deletions
diff --git a/src/tests/components/AuthorizationSplash.test.tsx b/src/tests/components/AuthorizationSplash.test.tsx new file mode 100644 index 0000000..7f44ba4 --- /dev/null +++ b/src/tests/components/AuthorizationSplash.test.tsx @@ -0,0 +1,62 @@ +/** @jsx jsx */ +import { jsx } from "@emotion/react"; +import { renderWithProviders } from "../utils"; +import AuthorizationSplash from "../../components/AuthorizationSplash"; +import { finishAuthorizing } from "../../slices/authorization"; +import { act } from "@testing-library/react"; + +test("authorization splash is hidden when not authorizing", () => { +    const { container } = renderWithProviders(<AuthorizationSplash />); +    const splash = container.firstElementChild; + +    expect(splash).not.toBe(null); + +    if (splash) { +        const style = window.getComputedStyle(splash); +        expect(style.opacity).toBe("0"); +    } +}); + +test("authorization splash is visible when authorizing state is set", () => { +    const { container } = renderWithProviders(<AuthorizationSplash />, { +        preloadedState: { +            authorization: { +                authorizing: true +            } +        } +    }); +    const splash = container.firstElementChild; + +    expect(splash).not.toBe(null); + +    if (splash) { +        const style = window.getComputedStyle(splash); +        expect(style.opacity).toBe("1"); +    } +}); + +test("test state transitions when authorization completes", () => { +    const { store, container } = renderWithProviders(<AuthorizationSplash />, { +        preloadedState: { +            authorization: { +                authorizing: true +            } +        } +    }); + +    const splash = container.firstElementChild; + +    expect(splash).not.toBe(null); + +    if (splash) { +        let style = window.getComputedStyle(splash); +        expect(style.opacity).toBe("1"); + +        act(() => { +            store.dispatch(finishAuthorizing()); +        }); + +        style = window.getComputedStyle(splash); +        expect(style.opacity).toBe("0"); +    } +});  |