diff --git a/backend/src/controllers/answers.ts b/backend/src/controllers/answers.ts index 1bb53019..f605b1a3 100644 --- a/backend/src/controllers/answers.ts +++ b/backend/src/controllers/answers.ts @@ -5,7 +5,7 @@ import {createAnswer, deleteAnswer, getAnswer, getAnswersByQuestion, updateAnswe import {FALLBACK_SEQ_NUM} from "../config"; import {AnswerData} from "@dwengo-1/common/interfaces/answer"; -export async function getAnswersHandler(req: Request, res: Response): Promise { +export async function getAllAnswersHandler(req: Request, res: Response): Promise { const hruid = req.params.hruid; const version = req.params.version; const language = req.query.lang as string; diff --git a/backend/src/routes/answers.ts b/backend/src/routes/answers.ts index edb27813..a6280e49 100644 --- a/backend/src/routes/answers.ts +++ b/backend/src/routes/answers.ts @@ -3,13 +3,13 @@ import { createAnswerHandler, deleteAnswerHandler, getAnswerHandler, - getAnswersHandler, + getAllAnswersHandler, updateAnswerHandler } from "../controllers/answers"; const router = express.Router({ mergeParams: true }); -router.get('/', getAnswersHandler); +router.get('/', getAllAnswersHandler); router.post('/', createAnswerHandler) diff --git a/backend/tests/controllers/answers.test.ts b/backend/tests/controllers/answers.test.ts new file mode 100644 index 00000000..d357fd0c --- /dev/null +++ b/backend/tests/controllers/answers.test.ts @@ -0,0 +1,90 @@ +import {Request, Response} from "express"; +import {beforeAll, beforeEach, describe, expect, it, Mock, vi} from "vitest"; +import {setupTestApp} from "../setup-tests"; +import {Language} from "@dwengo-1/common/util/language"; +import {getAllAnswersHandler, getAnswerHandler, updateAnswerHandler} from "../../src/controllers/answers"; +import {BadRequestException} from "../../src/exceptions/bad-request-exception"; +import {NotFoundException} from "../../src/exceptions/not-found-exception"; + +describe('Questions controllers', () => { + let req: Partial; + let res: Partial; + + let jsonMock: Mock; + + beforeAll(async () => { + await setupTestApp(); + }); + + beforeEach(() => { + jsonMock = vi.fn(); + res = { + json: jsonMock, + }; + }); + + it('Get answers list', async () => { + req = { + params: {hruid: 'id05', version: '1', seq: '2'}, + query: {lang: Language.English, full: 'true'}, + }; + + await getAllAnswersHandler(req as Request, res as Response); + expect(jsonMock).toHaveBeenCalledWith(expect.objectContaining({answers: expect.anything()})); + + const result = jsonMock.mock.lastCall?.[0]; + // console.log(result.answers); + expect(result.questions).to.have.length.greaterThan(1); + }); + + it('Get answer', async () => { + req = { + params: {hruid: 'id05', version: '1', seq: '2', seqAnswer: '2'}, + query: {lang: Language.English, full: 'true'}, + }; + + await getAnswerHandler(req as Request, res as Response); + expect(jsonMock).toHaveBeenCalledWith(expect.objectContaining({answer: expect.anything()})); + + // const result = jsonMock.mock.lastCall?.[0]; + // console.log(result.answer); + }); + + it('Get answer hruid does not exist', async () => { + req = { + params: { hruid: 'id_not_exist'}, + query: { lang: Language.English, full: 'true' }, + }; + + await expect( async () => getAnswerHandler(req as Request, res as Response)) + .rejects.toThrow(NotFoundException); + }) + + it('Get answer no hruid given', async () => { + req = { + params: {}, + query: { lang: Language.English, full: 'true' }, + }; + + await expect( async () => getAnswerHandler(req as Request, res as Response)) + .rejects.toThrow(BadRequestException); + }) + + it('Update question', async() => { + const newContent = "updated question"; + req = { + params: { hruid: 'id05', version: '1', seq: '2', seqAnswer: '2'}, + query: { lang: Language.English }, + body: { content: newContent } + }; + + await updateAnswerHandler(req as Request, res as Response); + + expect(jsonMock).toHaveBeenCalledWith(expect.objectContaining({ answer: expect.anything() })); + + const result = jsonMock.mock.lastCall?.[0]; + // console.log(result.question); + expect(result.answer.content).to.eq(newContent); + }); + +}); diff --git a/backend/tests/controllers/questions.test.ts b/backend/tests/controllers/questions.test.ts index 3d9c6537..26fd588a 100644 --- a/backend/tests/controllers/questions.test.ts +++ b/backend/tests/controllers/questions.test.ts @@ -67,19 +67,6 @@ describe('Questions controllers', () => { // console.log(result.question); }) - it('Get question with fallback sequence number and version', async () => { - req = { - params: { hruid: 'id05'}, - query: { lang: Language.English, full: 'true' }, - }; - - await getQuestionHandler(req as Request, res as Response); - expect(jsonMock).toHaveBeenCalledWith(expect.objectContaining({ question: expect.anything() })); - - // const result = jsonMock.mock.lastCall?.[0]; - // console.log(result.question); - }) - it('Get question hruid does not exist', async () => { req = { params: { hruid: 'id_not_exist'},