#7 Add integration tests for basic client routing

This commit is contained in:
Christoph Lienhard 2020-12-27 20:59:03 +01:00
parent 331e511368
commit 103a137a62
Signed by: christoph.lienhard
GPG key ID: 6B98870DDC270884

View file

@ -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()
});
});