mirror of
https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir.git
synced 2025-08-11 21:23:54 -04:00
81 lines
No EOL
3 KiB
JavaScript
81 lines
No EOL
3 KiB
JavaScript
const request = require('supertest');
|
|
const express = require('express');
|
|
const bodyParser = require('body-parser');
|
|
const answersRouter = require('../routers/answers'); // Ensure the correct path
|
|
const Answer = require('../models/answers');
|
|
|
|
const app = express();
|
|
app.use(bodyParser.json());
|
|
app.use('/api', answersRouter);
|
|
|
|
// Mock the Answer model methods
|
|
jest.mock('../models/answers');
|
|
|
|
describe('Answers API', () => {
|
|
beforeEach(() => {
|
|
// Clear all instances and calls to constructor and all methods:
|
|
Answer.create.mockClear();
|
|
Answer.get.mockClear();
|
|
Answer.getAll.mockClear();
|
|
Answer.delete.mockClear();
|
|
});
|
|
|
|
test('should create a new answer', async () => {
|
|
const mockAnswer = { id: 1, answerText: 'This is an answer', showFeedback: true, points: 10 };
|
|
Answer.create.mockReturnValue(mockAnswer);
|
|
|
|
const response = await request(app)
|
|
.post('/api/answers')
|
|
.send({ answerText: 'This is an answer', showFeedback: true, points: 10 });
|
|
|
|
expect(response.status).toBe(200);
|
|
expect(response.body.message).toBe('Answer created successfully.');
|
|
expect(response.body.answer).toHaveProperty('id');
|
|
expect(response.body.answer.answerText).toBe('This is an answer');
|
|
expect(response.body.answer.showFeedback).toBe(true);
|
|
expect(response.body.answer.points).toBe(10);
|
|
});
|
|
|
|
test('should get an answer by ID', async () => {
|
|
const mockAnswer = { id: 1, answerText: 'This is an answer', showFeedback: true, points: 10 };
|
|
Answer.get.mockReturnValue(mockAnswer);
|
|
|
|
const response = await request(app).get(`/api/answers/1`);
|
|
|
|
expect(response.status).toBe(200);
|
|
expect(response.body.answerText).toBe('This is an answer');
|
|
expect(response.body.showFeedback).toBe(true);
|
|
expect(response.body.points).toBe(10);
|
|
});
|
|
|
|
test('should return 404 if answer not found', async () => {
|
|
Answer.get.mockReturnValue(null);
|
|
|
|
const response = await request(app).get('/api/answers/999');
|
|
|
|
expect(response.status).toBe(404);
|
|
expect(response.body.message).toBe('Answer not found');
|
|
});
|
|
|
|
test('should delete an answer by ID', async () => {
|
|
const mockAnswer = { id: 1, answerText: 'This is an answer', showFeedback: true, points: 10 };
|
|
Answer.delete.mockReturnValue(mockAnswer);
|
|
|
|
const response = await request(app).delete(`/api/answers/1`);
|
|
|
|
expect(response.status).toBe(200);
|
|
expect(response.body.message).toBe('Answer deleted successfully.');
|
|
|
|
const getResponse = await request(app).get(`/api/answers/1`);
|
|
expect(getResponse.status).toBe(404);
|
|
});
|
|
|
|
test('should return 404 if deleting an answer that does not exist', async () => {
|
|
Answer.delete.mockReturnValue(null);
|
|
|
|
const response = await request(app).delete('/api/answers/999');
|
|
|
|
expect(response.status).toBe(404);
|
|
expect(response.body.message).toBe('Answer not found');
|
|
});
|
|
}); |