#7 Add integration tests for basic client routing
This commit is contained in:
parent
331e511368
commit
103a137a62
|
@ -0,0 +1,62 @@
|
|||
import React from 'react';
|
||||
import {render, screen} from '@testing-library/react'
|
||||
import {MockedProvider} from '@apollo/client/testing';
|
||||
import {MemoryRouter} from 'react-router-dom';
|
||||
import App from "../App";
|
||||
|
||||
beforeEach(() => localStorage.clear())
|
||||
|
||||
describe('The root path /', () => {
|
||||
|
||||
test('renders user\'s home page if they are logged in',() => {
|
||||
localStorage.setItem("token", "asdfasdfasdf")
|
||||
render(<MockedProvider><MemoryRouter initialEntries={['/']}><App/></MemoryRouter></MockedProvider>);
|
||||
|
||||
expect(() => screen.getByLabelText(/current user/)).not.toThrow()
|
||||
});
|
||||
|
||||
test('redirects to login page if user not logged in', () => {
|
||||
render(<MockedProvider><MemoryRouter initialEntries={['/']}><App/></MemoryRouter></MockedProvider>);
|
||||
|
||||
const emailField = screen.getByRole('textbox', {name: 'Email Address'});
|
||||
const passwordField = screen.getByLabelText(/Password/);
|
||||
expect(emailField).toHaveValue("");
|
||||
expect(passwordField).toHaveValue("");
|
||||
});
|
||||
});
|
||||
|
||||
describe('The /login path', () => {
|
||||
test('renders the signin page if the user is not logged in', () => {
|
||||
render(<MockedProvider><MemoryRouter initialEntries={['/login']}><App/></MemoryRouter></MockedProvider>);
|
||||
|
||||
const emailField = screen.getByRole('textbox', {name: 'Email Address'});
|
||||
const passwordField = screen.getByLabelText(/Password/);
|
||||
expect(emailField).toHaveValue("");
|
||||
expect(passwordField).toHaveValue("");
|
||||
});
|
||||
|
||||
test('redirects to root / and the user\'s home page if the user is logged in', () => {
|
||||
localStorage.setItem("token", "asdfasdfasdf")
|
||||
render(<MockedProvider><MemoryRouter initialEntries={['/login']}><App/></MemoryRouter></MockedProvider>);
|
||||
|
||||
expect(() => screen.getByLabelText(/current user/)).not.toThrow()
|
||||
});
|
||||
});
|
||||
|
||||
describe('The /signup path', () => {
|
||||
test('renders the signup page if the user is not logged in', () => {
|
||||
render(<MockedProvider><MemoryRouter initialEntries={['/signup']}><App/></MemoryRouter></MockedProvider>);
|
||||
|
||||
expect(() => screen.getByRole('textbox', {name: 'Email Address'})).not.toThrow()
|
||||
expect(() => screen.getByLabelText(/Password/)).not.toThrow()
|
||||
expect(() => screen.getByLabelText(/First Name/)).not.toThrow()
|
||||
expect(() => screen.getByLabelText(/Last Name/)).not.toThrow()
|
||||
});
|
||||
|
||||
test('redirects to root / and the user\'s home page if the user is logged in', () => {
|
||||
localStorage.setItem("token", "asdfasdfasdf")
|
||||
render(<MockedProvider><MemoryRouter initialEntries={['/signup']}><App/></MemoryRouter></MockedProvider>);
|
||||
|
||||
expect(() => screen.getByLabelText(/current user/)).not.toThrow()
|
||||
});
|
||||
});
|
Loading…
Reference in a new issue