From 4df4d013263dc92edd563c290463fe3c0e3abffa Mon Sep 17 00:00:00 2001 From: Albin Henriksson <albhe428@student.liu.se> Date: Fri, 9 Apr 2021 11:05:09 +0200 Subject: [PATCH] add back jwt_required, fix tests --- client/src/actions/presentation.ts | 2 - client/src/pages/admin/AdminPage.test.tsx | 37 ++++++++++++++++++ .../src/pages/views/AudienceViewPage.test.tsx | 12 ++++-- client/src/pages/views/JudgeViewPage.test.tsx | 38 ++++++++++++++++++- .../pages/views/ParticipantViewPage.test.tsx | 8 +++- .../pages/views/PresenterViewPage.test.tsx | 33 +++++++++++++++- .../views/components/SlideDisplay.test.tsx | 10 ++++- server/app/apis/competitions.py | 1 + server/app/apis/teams.py | 2 + 9 files changed, 133 insertions(+), 10 deletions(-) diff --git a/client/src/actions/presentation.ts b/client/src/actions/presentation.ts index 43232014..9e482d2b 100644 --- a/client/src/actions/presentation.ts +++ b/client/src/actions/presentation.ts @@ -7,7 +7,6 @@ export const getPresentationCompetition = (id: string) => async (dispatch: AppDi await axios .get(`/competitions/${id}`) .then((res) => { - console.log(res) dispatch({ type: Types.SET_PRESENTATION_COMPETITION, payload: res.data, @@ -22,7 +21,6 @@ export const getPresentationTeams = (id: string) => async (dispatch: AppDispatch await axios .get(`/competitions/${id}/teams`) .then((res) => { - console.log(res) dispatch({ type: Types.SET_PRESENTATION_TEAMS, payload: res.data.items, diff --git a/client/src/pages/admin/AdminPage.test.tsx b/client/src/pages/admin/AdminPage.test.tsx index efb56bb2..ab694cee 100644 --- a/client/src/pages/admin/AdminPage.test.tsx +++ b/client/src/pages/admin/AdminPage.test.tsx @@ -1,4 +1,5 @@ import { render } from '@testing-library/react' +import mockedAxios from 'axios' import React from 'react' import { Provider } from 'react-redux' import { BrowserRouter } from 'react-router-dom' @@ -6,6 +7,42 @@ import store from '../../store' import AdminPage from './AdminPage' it('renders admin view', () => { + const cityRes: any = { + data: { + items: [ + { + id: 1, + name: 'Link\u00f6ping', + }, + { + id: 2, + name: 'Stockholm', + }, + ], + count: 2, + total_count: 3, + }, + } + const rolesRes: any = { + data: { + items: [ + { + id: 1, + name: 'role1', + }, + { + id: 2, + name: 'role2', + }, + ], + count: 2, + total_count: 3, + }, + } + ;(mockedAxios.get as jest.Mock).mockImplementation((path: string, params?: any) => { + if (path === '/misc/cities') return Promise.resolve(cityRes) + else return Promise.resolve(rolesRes) + }) render( <Provider store={store}> <BrowserRouter> diff --git a/client/src/pages/views/AudienceViewPage.test.tsx b/client/src/pages/views/AudienceViewPage.test.tsx index 984ee7f2..d00d4277 100644 --- a/client/src/pages/views/AudienceViewPage.test.tsx +++ b/client/src/pages/views/AudienceViewPage.test.tsx @@ -1,7 +1,13 @@ -import { Slide } from '@material-ui/core' import { render } from '@testing-library/react' import React from 'react' +import { Provider } from 'react-redux' +import store from '../../store' +import AudienceViewPage from './AudienceViewPage' -it('renders slide', () => { - render(<Slide />) +it('renders audience view page', () => { + render( + <Provider store={store}> + <AudienceViewPage /> + </Provider> + ) }) diff --git a/client/src/pages/views/JudgeViewPage.test.tsx b/client/src/pages/views/JudgeViewPage.test.tsx index 5ff1cc5d..537dae4c 100644 --- a/client/src/pages/views/JudgeViewPage.test.tsx +++ b/client/src/pages/views/JudgeViewPage.test.tsx @@ -1,7 +1,43 @@ import { render } from '@testing-library/react' +import mockedAxios from 'axios' import React from 'react' +import { Provider } from 'react-redux' +import { BrowserRouter } from 'react-router-dom' +import store from '../../store' import JudgeViewPage from './JudgeViewPage' it('renders judge view page', () => { - render(<JudgeViewPage />) + const compRes: any = { + data: { + slides: [{ id: 0, title: '' }], + }, + } + const teamsRes: any = { + data: { + items: [ + { + id: 1, + name: 'team1', + }, + { + id: 2, + name: 'team2', + }, + ], + count: 2, + total_count: 3, + }, + } + + ;(mockedAxios.get as jest.Mock).mockImplementation((path: string, params?: any) => { + if (path.endsWith('/teams')) return Promise.resolve(teamsRes) + else return Promise.resolve(compRes) + }) + render( + <BrowserRouter> + <Provider store={store}> + <JudgeViewPage /> + </Provider> + </BrowserRouter> + ) }) diff --git a/client/src/pages/views/ParticipantViewPage.test.tsx b/client/src/pages/views/ParticipantViewPage.test.tsx index f7154a9d..85360e4f 100644 --- a/client/src/pages/views/ParticipantViewPage.test.tsx +++ b/client/src/pages/views/ParticipantViewPage.test.tsx @@ -1,7 +1,13 @@ import { render } from '@testing-library/react' import React from 'react' +import { Provider } from 'react-redux' +import store from '../../store' import ParticipantViewPage from './ParticipantViewPage' it('renders participant view page', () => { - render(<ParticipantViewPage />) + render( + <Provider store={store}> + <ParticipantViewPage /> + </Provider> + ) }) diff --git a/client/src/pages/views/PresenterViewPage.test.tsx b/client/src/pages/views/PresenterViewPage.test.tsx index 0647a875..fd7b0a96 100644 --- a/client/src/pages/views/PresenterViewPage.test.tsx +++ b/client/src/pages/views/PresenterViewPage.test.tsx @@ -1,12 +1,43 @@ import { render } from '@testing-library/react' +import mockedAxios from 'axios' import React from 'react' +import { Provider } from 'react-redux' import { BrowserRouter } from 'react-router-dom' +import store from '../../store' import PresenterViewPage from './PresenterViewPage' it('renders presenter view page', () => { + const compRes: any = { + data: { + slides: [{ id: 0, title: '' }], + }, + } + const teamsRes: any = { + data: { + items: [ + { + id: 1, + name: 'team1', + }, + { + id: 2, + name: 'team2', + }, + ], + count: 2, + total_count: 3, + }, + } + + ;(mockedAxios.get as jest.Mock).mockImplementation((path: string, params?: any) => { + if (path.endsWith('/teams')) return Promise.resolve(teamsRes) + else return Promise.resolve(compRes) + }) render( <BrowserRouter> - <PresenterViewPage /> + <Provider store={store}> + <PresenterViewPage /> + </Provider> </BrowserRouter> ) }) diff --git a/client/src/pages/views/components/SlideDisplay.test.tsx b/client/src/pages/views/components/SlideDisplay.test.tsx index b3cfb1dc..1a661d33 100644 --- a/client/src/pages/views/components/SlideDisplay.test.tsx +++ b/client/src/pages/views/components/SlideDisplay.test.tsx @@ -1,7 +1,13 @@ import { render } from '@testing-library/react' import React from 'react' +import { Provider } from 'react-redux' +import store from '../../../store' import SlideDisplay from './SlideDisplay' -it('renders audience view page', () => { - render(<SlideDisplay />) +it('renders slide display', () => { + render( + <Provider store={store}> + <SlideDisplay /> + </Provider> + ) }) diff --git a/server/app/apis/competitions.py b/server/app/apis/competitions.py index 8cdaf6da..9f17a932 100644 --- a/server/app/apis/competitions.py +++ b/server/app/apis/competitions.py @@ -38,6 +38,7 @@ class CompetitionsList(Resource): @api.route("/<ID>") @api.param("ID") class Competitions(Resource): + @jwt_required def get(self, ID): item = get_comp(ID) return item_response(schema.dump(item)) diff --git a/server/app/apis/teams.py b/server/app/apis/teams.py index 3eb09bc2..bec6cb6a 100644 --- a/server/app/apis/teams.py +++ b/server/app/apis/teams.py @@ -18,10 +18,12 @@ def get_comp(CID): @api.route("/") @api.param("CID") class TeamsList(Resource): + @jwt_required def get(self, CID): item_comp = get_comp(CID) return list_response(list_schema.dump(item_comp.teams)) + @jwt_required def post(self, CID): parser = reqparse.RequestParser() parser.add_argument("name", type=str, location="json") -- GitLab