diff options
| author | 2024-07-10 04:17:30 +0100 | |
|---|---|---|
| committer | 2024-07-10 04:17:30 +0100 | |
| commit | 899666da501dfd22267e96be8879dd271b3e4980 (patch) | |
| tree | 063fc6ea45ccab31315d4e08ec2c5e33c9e0b948 /src/tests/pages | |
| parent | Set Sentry user data when authenticating (diff) | |
Unit tests for Navigation component
Diffstat (limited to 'src/tests/pages')
| -rw-r--r-- | src/tests/pages/FormPage/Navigation.test.tsx | 48 | 
1 files changed, 48 insertions, 0 deletions
| diff --git a/src/tests/pages/FormPage/Navigation.test.tsx b/src/tests/pages/FormPage/Navigation.test.tsx new file mode 100644 index 0000000..d4556ab --- /dev/null +++ b/src/tests/pages/FormPage/Navigation.test.tsx @@ -0,0 +1,48 @@ +/** @jsx jsx */ +import Cookies from "universal-cookie"; +import { jsx } from "@emotion/react"; +import { render } from "@testing-library/react"; +import Navigation from "../../../pages/FormPage/Navigation"; +import {MemoryRouter} from "react-router-dom"; +import { OAuthScopes, CookieNames } from "../../../api/auth"; + +test("navigation shows submit when form is open and no auth required", () => { +    const { getByRole } = render(<Navigation form_state={true} scopes={[]} />, { wrapper: MemoryRouter }); +    const submitButton = getByRole("button"); + +    expect(submitButton).not.toBeNull(); +    expect(submitButton.innerHTML).toBe("Submit"); +}); + +test("submit button does not show submit on a closed form", () => { +    const { queryByRole } = render(<Navigation form_state={false} scopes={[]} />, { wrapper: MemoryRouter }); +    const submitButton = queryByRole("button"); + +    expect(submitButton).toBeNull(); +}); + +test("navigation shows oauth button when form is open and auth is required", () => { +    const { getByRole } = render(<Navigation form_state={true} scopes={[OAuthScopes.Identify]} />, { wrapper: MemoryRouter }); +    const loginButton = getByRole("button"); + +    expect(loginButton).not.toBeNull(); +    expect(loginButton.textContent).toBe("Login To Submit"); +}); + +test("navigation shows submit button when form is open and auth is present", () => { +    new Cookies().set(CookieNames.Scopes, [OAuthScopes.Identify]); +    const { getByRole } = render(<Navigation form_state={true} scopes={[OAuthScopes.Identify]} />, { wrapper: MemoryRouter }); +    const loginButton = getByRole("button"); + +    expect(loginButton).not.toBeNull(); +    expect(loginButton.textContent).toBe("Submit"); +}); + +test("navigation shows login button when form is open and auth is present but insufficient scopes", () => { +    new Cookies().set(CookieNames.Scopes, [OAuthScopes.Identify]); +    const { getByRole } = render(<Navigation form_state={true} scopes={[OAuthScopes.Identify, OAuthScopes.Guilds]} />, { wrapper: MemoryRouter }); +    const loginButton = getByRole("button"); + +    expect(loginButton).not.toBeNull(); +    expect(loginButton.textContent).toBe("Login To Submit"); +}); | 
