Skip to content
Snippets Groups Projects
Commit 0fd9aa8d authored by Guilhem CARRON's avatar Guilhem CARRON
Browse files

Add quiz update + test

parent f8ccc5e8
Branches
Tags
1 merge request!171Features/quiz presentation
......@@ -10,6 +10,7 @@ export enum UserChallengeUpdateFlag {
QUIZ_START = 21,
QUIZ_DONE = 22,
QUIZ_RESET = 23,
QUIZ_UPDATE = 24,
MISSION = 30,
}
......
......@@ -288,7 +288,8 @@ export default class ChallengeService {
*/
public async updateUserChallenge(
userChallenge: UserChallenge,
flag: UserChallengeUpdateFlag
flag: UserChallengeUpdateFlag,
quizWithUpdatedQuestions?: UserQuiz
): Promise<UserChallenge> {
let updatedUserChallenge: UserChallenge
let updatedDuel = userChallenge.duel
......@@ -368,6 +369,14 @@ export default class ChallengeService {
quiz: updatedQuiz,
}
break
case UserChallengeUpdateFlag.QUIZ_UPDATE:
updatedUserChallenge = {
...userChallenge,
quiz: quizWithUpdatedQuestions
? quizWithUpdatedQuestions
: userChallenge.quiz,
}
break
case UserChallengeUpdateFlag.QUIZ_RESET:
updatedQuiz = await quizService.resetUserQuiz(userChallenge.quiz)
updatedUserChallenge = {
......
......@@ -11,7 +11,11 @@ import {
} from '../../test/__mocks__/quizData.mock'
import mockClient from '../../test/__mocks__/client'
import QuizService from './quiz.service'
import { CustomQuestionType, UserQuizState } from 'enum/userQuiz.enum'
import {
CustomQuestionType,
UserQuestionState,
UserQuizState,
} from 'enum/userQuiz.enum'
describe('Quiz service', () => {
const quizService = new QuizService(mockClient)
......@@ -131,4 +135,42 @@ describe('Quiz service', () => {
expect(result).toEqual(UserQuizReseted)
})
})
describe('updateUserQuiz Method', () => {
it('should return the userQuiz with updated result and correct answer to question', async () => {
const result = await quizService.updateUserQuiz(userQuiz, 0, true)
const mockUpdatedQuestion: UserQuestion = {
...userQuiz.questions[0],
result: UserQuestionState.CORRECT,
}
const mockUpdatedQuestions: UserQuestion[] = [
...userQuiz.questions,
mockUpdatedQuestion,
]
const mockUpdatedQuiz: UserQuiz = {
...userQuiz,
questions: mockUpdatedQuestions,
result: 1,
}
expect(result).toEqual(mockUpdatedQuiz)
})
it('should return the userQuiz with updated result and wrong answer to question', async () => {
const result = await quizService.updateUserQuiz(userQuiz, 2, false)
const mockUpdatedQuestion: UserQuestion = {
...userQuiz.questions[2],
result: UserQuestionState.UNCORRECT,
}
const mockUpdatedQuestions: UserQuestion[] = [
...userQuiz.questions,
mockUpdatedQuestion,
]
const mockUpdatedQuiz: UserQuiz = {
...userQuiz,
questions: mockUpdatedQuestions,
result: 0,
}
expect(result).toEqual(mockUpdatedQuiz)
})
})
})
......@@ -169,10 +169,40 @@ export default class QuizService {
* @returns {UserQuiz}
*/
public async endUserQuiz(userQuiz: UserQuiz): Promise<UserQuiz> {
const updatedUserDuel: UserQuiz = {
const updatedUserQuiz: UserQuiz = {
...userQuiz,
state: UserQuizState.DONE,
}
return updatedUserDuel
return updatedUserQuiz
}
/**
* Return quiz with result and updated question
* @param {UserQuiz} userQuiz - userQuiz to update
* @returns {UserQuiz}
* @returns {questionIndex}
* @returns {questionResult}
*/
public async updateUserQuiz(
userQuiz: UserQuiz,
questionIndex: number,
questionResult: boolean
): Promise<UserQuiz> {
const updatedQuestion: UserQuestion = {
...userQuiz.questions[questionIndex],
result: questionResult
? UserQuestionState.CORRECT
: UserQuestionState.UNCORRECT,
}
const updatedQuestions: UserQuestion[] = [
...userQuiz.questions,
updatedQuestion,
]
const updatedUserQuiz: UserQuiz = {
...userQuiz,
questions: updatedQuestions,
result: questionResult ? userQuiz.result + 1 : userQuiz.result,
}
return updatedUserQuiz
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment