Skip to content
Snippets Groups Projects
Commit cc4bb1a5 authored by Dominika Zemanovičová's avatar Dominika Zemanovičová
Browse files

Fix ExerciseFacadeTest

parent 44df5327
No related branches found
No related tags found
3 merge requests!31M2,!30M2 exercise,!29M2 exercise
...@@ -3,7 +3,9 @@ package org.fuseri.model.dto.exercise; ...@@ -3,7 +3,9 @@ package org.fuseri.model.dto.exercise;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import org.fuseri.model.dto.common.DomainObjectDto; import org.fuseri.model.dto.common.DomainObjectDto;
...@@ -12,6 +14,8 @@ import java.util.Objects; ...@@ -12,6 +14,8 @@ import java.util.Objects;
@Getter @Getter
@Setter @Setter
@AllArgsConstructor
@NoArgsConstructor
public class QuestionDto extends DomainObjectDto { public class QuestionDto extends DomainObjectDto {
@NotBlank @NotBlank
......
package org.fuseri.moduleexercise.question; package org.fuseri.moduleexercise.question;
import org.fuseri.model.dto.exercise.AnswerDto;
import org.fuseri.model.dto.exercise.AnswerInQuestionCreateDto;
import org.fuseri.model.dto.exercise.QuestionCreateDto; import org.fuseri.model.dto.exercise.QuestionCreateDto;
import org.fuseri.model.dto.exercise.QuestionDto; import org.fuseri.model.dto.exercise.QuestionDto;
import org.fuseri.model.dto.exercise.QuestionUpdateDto; import org.fuseri.model.dto.exercise.QuestionUpdateDto;
import org.fuseri.moduleexercise.answer.Answer;
import org.fuseri.moduleexercise.answer.AnswerMapper;
import org.fuseri.moduleexercise.answer.AnswerService; import org.fuseri.moduleexercise.answer.AnswerService;
import org.fuseri.moduleexercise.exercise.Exercise; import org.fuseri.moduleexercise.exercise.Exercise;
import org.fuseri.moduleexercise.exercise.ExerciseService;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.boot.test.mock.mockito.MockBean;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.List;
import java.util.Set;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNotNull;
...@@ -22,91 +26,100 @@ import static org.mockito.Mockito.verify; ...@@ -22,91 +26,100 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@SpringBootTest @SpringBootTest
public class QuestionFacadeTest { class QuestionFacadeTest {
private final QuestionDto questionDto = new QuestionDto();
private final QuestionCreateDto questionCreateDto = new QuestionCreateDto("name",1L,new ArrayList<>());
private final QuestionUpdateDto questionUpdateDto = QuestionUpdateDto.builder().build();
private final Exercise exercise = new Exercise();
private final Question question = new Question("text",new HashSet<>(),exercise);
@MockBean
QuestionRepository repository;
@Autowired @Autowired
QuestionFacade facade; QuestionFacade questionFacade;
@MockBean @MockBean
QuestionService service; QuestionService questionService;
@MockBean @MockBean
AnswerService answerService; AnswerService answerService;
@MockBean @MockBean
QuestionMapper mapper; QuestionMapper questionMapper;
@MockBean @MockBean
ExerciseService exerciseService; AnswerMapper answerMapper;
//
// @MockBean private final QuestionDto questionDto = new QuestionDto();
// QuestionMapper mapper;
private final QuestionCreateDto questionCreateDto = new QuestionCreateDto("name", 1L, new ArrayList<>());
private final QuestionUpdateDto questionUpdateDto = QuestionUpdateDto.builder().build();
private final Exercise exercise = new Exercise();
private final Question question = new Question("text", new HashSet<>(), exercise);
Set<Answer> answers = new HashSet<>(List.of(new Answer("BA", true, question)));
@Test @Test
void create() { void create() {
long id = 1; when(questionMapper.fromCreateDto(questionCreateDto)).thenReturn(question);
when(exerciseService.find(id)).thenReturn(exercise); when(questionService.create(question)).thenReturn(question);
when(mapper.fromCreateDto(questionCreateDto)).thenReturn(question); when(questionMapper.toDto(question)).thenReturn(questionDto);
when(service.create(question)).thenReturn(question);
when(mapper.toDto(question)).thenReturn(questionDto);
QuestionDto actualDto = facade.create(questionCreateDto); QuestionDto actualDto = questionFacade.create(questionCreateDto);
assertEquals(questionDto, actualDto); assertEquals(questionDto, actualDto);
} }
@Test @Test
void testFindById() { void find() {
Long id = 0L; long id = 1L;
when(service.find(id)).thenReturn(question); when(questionService.find(id)).thenReturn(question);
when(mapper.toDto(question)).thenReturn(questionDto); when(questionMapper.toDto(question)).thenReturn(questionDto);
QuestionDto actualDto = facade.find(id); QuestionDto actualDto = questionFacade.find(id);
assertNotNull(actualDto); assertNotNull(actualDto);
assertEquals(questionDto, actualDto); assertEquals(questionDto, actualDto);
} }
@Test @Test
void update() { void patchUpdate() {
Long id = 1L; long id = 1L;
when(repository.existsById(id)).thenReturn(true); when(questionMapper.fromUpdateDto(questionUpdateDto)).thenReturn(question);
// when(repository.find) when(questionService.patchUpdateWithoutAnswers(id, question)).thenReturn(question);
when(service.find(id)).thenReturn(question); when(questionMapper.toDto(question)).thenReturn(questionDto);
when(mapper.fromCreateDto(questionCreateDto)).thenReturn(question); QuestionDto actualDto = questionFacade.patchUpdate(id, questionUpdateDto);
when(service.update(question)).thenReturn(question);
when(mapper.toDto(question)).thenReturn(questionDto);
when(mapper.fromUpdateDto(questionUpdateDto)).thenReturn(question);
when(answerService.findAllByQuestionId(id)).thenReturn(Collections.emptyList());
QuestionDto actualDto = facade.update(id,questionUpdateDto);
assertEquals(questionDto, actualDto); assertEquals(questionDto, actualDto);
} }
@Test @Test
void testDelete() { void testDelete() {
Long id = 1L; long id = 1L;
when(service.find(id)).thenReturn(question); when(questionService.find(id)).thenReturn(question);
questionFacade.delete(id);
verify(questionService).delete(id);
}
facade.delete(id); @Test
verify(service).delete(id); void getQuestionAnswers() {
long id = 1L;
List<Answer> answers = List.of(new Answer("BA", true, question));
List<AnswerDto> answerDtos = List.of(new AnswerDto("BA", true));
when(answerMapper.toDtoList(answers)).thenReturn(answerDtos);
when(answerService.findAllByQuestionId(id)).thenReturn(answers);
var actualAnswers = questionFacade.getQuestionAnswers(id);
assertEquals(answerDtos, actualAnswers);
} }
@Test
void addAnswers() {
long id = 1L;
question.setAnswers(answers);
List<AnswerInQuestionCreateDto> answerDtos = List.of(new AnswerInQuestionCreateDto("BA", true));
QuestionDto questionDtoAnswers = new QuestionDto(question.getText(), question.getExercise().getId(), List.of(new AnswerDto("BA", true)));
when(answerMapper.fromCreateDtoList(answerDtos)).thenReturn(answers);
when(questionService.addAnswers(id, answers)).thenReturn(question);
when(questionMapper.toDto(question)).thenReturn(questionDtoAnswers);
QuestionDto actualQuestionDto = questionFacade.addAnswers(id, answerDtos);
assertEquals(questionDtoAnswers, actualQuestionDto);
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment