diff options
Diffstat (limited to 'src/tests/pages')
-rw-r--r-- | src/tests/pages/CallbackPage.test.tsx | 23 | ||||
-rw-r--r-- | src/tests/pages/FormPage.test.tsx | 32 | ||||
-rw-r--r-- | src/tests/pages/LandingPage.test.tsx | 13 |
3 files changed, 68 insertions, 0 deletions
diff --git a/src/tests/pages/CallbackPage.test.tsx b/src/tests/pages/CallbackPage.test.tsx new file mode 100644 index 0000000..e878577 --- /dev/null +++ b/src/tests/pages/CallbackPage.test.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { render } from '@testing-library/react'; + +import CallbackPage from '../../pages/CallbackPage'; + +test('callback page renders provided code', () => { + global.opener = { + postMessage: jest.fn() + } + + let mockLocation = new URL("https://forms.pythondiscord.com/authorize?code=abcdef"); + + Object.defineProperty(global, "location", {value: mockLocation}) + + let comp = <CallbackPage />; + + const { getByText } = render(comp); + + + let codeText = getByText(/Code is abcdef/); + expect(codeText).toBeInTheDocument(); + expect(global.opener.postMessage).toBeCalledTimes(1) +}); diff --git a/src/tests/pages/FormPage.test.tsx b/src/tests/pages/FormPage.test.tsx new file mode 100644 index 0000000..7bfc763 --- /dev/null +++ b/src/tests/pages/FormPage.test.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { render } from '@testing-library/react'; + +import { createMemoryHistory } from "history"; + +import { Route, BrowserRouter as Router } from "react-router-dom"; +import FormPage from '../../pages/FormPage'; + +import * as forms from "../../api/forms"; + +test('renders specific form page with loading bar', () => { + const history = createMemoryHistory(); + history.push("/form/route"); + + const { getByText } = render(<Router><Route history={history} ><FormPage /></Route></Router>); + // If we rendered the headerbar we rendered the forms page. + let headerBar = getByText(/Loading.../); + expect(headerBar).toBeInTheDocument(); +}); + +test('calls api method to load form', () => { + const history = createMemoryHistory(); + history.push("/form/ban-appeals"); + + let oldImpl = forms.getForm; + + Object.defineProperty(forms, "getForm", {value: jest.fn(oldImpl)}); + + render(<Router><Route history={history}><FormPage /></Route></Router>); + + expect(forms.getForm).toBeCalled(); +}); diff --git a/src/tests/pages/LandingPage.test.tsx b/src/tests/pages/LandingPage.test.tsx new file mode 100644 index 0000000..ba32bab --- /dev/null +++ b/src/tests/pages/LandingPage.test.tsx @@ -0,0 +1,13 @@ +import React from 'react'; +import { render } from '@testing-library/react'; + +import LandingPage from "../../pages/LandingPage"; + +import { BrowserRouter as Router } from "react-router-dom"; + +test('renders landing page', () => { + const { getByText } = render(<Router><LandingPage /></Router>); + // If we rendered the headerbar we rendered the landing page. + let headerBar = getByText(/Python Discord Forms/); + expect(headerBar).toBeInTheDocument(); +}); |