From 7a8750f2e978df283992342659e0831e41783c3c Mon Sep 17 00:00:00 2001
From: Dominika Zemanovicova <xzemanov@fi.muni.cz>
Date: Sat, 29 Apr 2023 18:45:21 +0200
Subject: [PATCH] Method getQuestionAnswers use only questionService

---
 .../moduleexercise/answer/AnswerService.java     | 16 ----------------
 .../moduleexercise/question/QuestionFacade.java  | 10 ++++------
 .../moduleexercise/answer/AnswerServiceTest.java | 15 ---------------
 .../question/QuestionFacadeTest.java             |  3 ++-
 4 files changed, 6 insertions(+), 38 deletions(-)

diff --git a/application/module-exercise/src/main/java/org/fuseri/moduleexercise/answer/AnswerService.java b/application/module-exercise/src/main/java/org/fuseri/moduleexercise/answer/AnswerService.java
index f5346fc5..c7903475 100644
--- a/application/module-exercise/src/main/java/org/fuseri/moduleexercise/answer/AnswerService.java
+++ b/application/module-exercise/src/main/java/org/fuseri/moduleexercise/answer/AnswerService.java
@@ -7,7 +7,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.List;
 
 /**
  * Represent a service for managing Answer entities
@@ -31,21 +30,6 @@ public class AnswerService extends DomainService<Answer> {
         this.repository = repository;
     }
 
-    /**
-     * Retrieve a list of Answer entities with the specified question ID
-     *
-     * @param questionId the ID of the question to retrieve answers for
-     * @return a list of Answer entities with the specified question ID
-     * @throws EntityNotFoundException if question with questionId does not exist
-     */
-    @Transactional(readOnly = true)
-    public List<Answer> findAllByQuestionId(long questionId) {
-        if (!getRepository().existsById(questionId)) {
-            throw new EntityNotFoundException("Question with id " + questionId + " not found.");
-        }
-        return repository.findByQuestionId(questionId);
-    }
-
     /**
      * Retrieve the Answer entity with the specified id
      *
diff --git a/application/module-exercise/src/main/java/org/fuseri/moduleexercise/question/QuestionFacade.java b/application/module-exercise/src/main/java/org/fuseri/moduleexercise/question/QuestionFacade.java
index 8fe1e2a1..65070d13 100644
--- a/application/module-exercise/src/main/java/org/fuseri/moduleexercise/question/QuestionFacade.java
+++ b/application/module-exercise/src/main/java/org/fuseri/moduleexercise/question/QuestionFacade.java
@@ -7,10 +7,10 @@ import org.fuseri.model.dto.exercise.QuestionCreateDto;
 import org.fuseri.model.dto.exercise.QuestionDto;
 import org.fuseri.model.dto.exercise.QuestionUpdateDto;
 import org.fuseri.moduleexercise.answer.AnswerMapper;
-import org.fuseri.moduleexercise.answer.AnswerService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -21,17 +21,14 @@ import java.util.List;
 @Service
 public class QuestionFacade {
     private final QuestionService questionService;
-    private final AnswerService answerService;
     private final QuestionMapper questionMapper;
     private final AnswerMapper answerMapper;
 
     @Autowired
     public QuestionFacade(
-            QuestionService questionService,
-            AnswerService answerService, QuestionMapper questionMapper,
+            QuestionService questionService, QuestionMapper questionMapper,
             AnswerMapper answerMapper) {
         this.questionService = questionService;
-        this.answerService = answerService;
         this.questionMapper = questionMapper;
         this.answerMapper = answerMapper;
     }
@@ -53,7 +50,8 @@ public class QuestionFacade {
      * @return a List of AnswerDto objects
      */
     public List<AnswerDto> getQuestionAnswers(long questionId) {
-        return answerMapper.toDtoList(answerService.findAllByQuestionId(questionId));
+        var question = questionService.find(questionId);
+        return answerMapper.toDtoList(new ArrayList<>(question.getAnswers()));
     }
 
     /**
diff --git a/application/module-exercise/src/test/java/org/fuseri/moduleexercise/answer/AnswerServiceTest.java b/application/module-exercise/src/test/java/org/fuseri/moduleexercise/answer/AnswerServiceTest.java
index ee53178f..04b364bb 100644
--- a/application/module-exercise/src/test/java/org/fuseri/moduleexercise/answer/AnswerServiceTest.java
+++ b/application/module-exercise/src/test/java/org/fuseri/moduleexercise/answer/AnswerServiceTest.java
@@ -9,9 +9,7 @@ import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
-import java.util.Collections;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Optional;
 
 import static org.mockito.ArgumentMatchers.anyLong;
@@ -62,17 +60,4 @@ class AnswerServiceTest {
         Assertions.assertEquals(answer, result);
         verify(answerRepository).findById(anyLong());
     }
-
-    @Test
-    void findAllByQuestionId() {
-        long id = 1;
-        List<Answer> list = Collections.emptyList();
-
-        when(answerRepository.existsById(id)).thenReturn(true);
-        when(answerRepository.findByQuestionId(id)).thenReturn(list);
-        List<Answer> result = service.findAllByQuestionId(1L);
-
-        Assertions.assertEquals(list, result);
-        verify(answerRepository).findByQuestionId(id);
-    }
 }
diff --git a/application/module-exercise/src/test/java/org/fuseri/moduleexercise/question/QuestionFacadeTest.java b/application/module-exercise/src/test/java/org/fuseri/moduleexercise/question/QuestionFacadeTest.java
index 33e1ca0a..b9123098 100644
--- a/application/module-exercise/src/test/java/org/fuseri/moduleexercise/question/QuestionFacadeTest.java
+++ b/application/module-exercise/src/test/java/org/fuseri/moduleexercise/question/QuestionFacadeTest.java
@@ -102,9 +102,10 @@ class QuestionFacadeTest {
     void getQuestionAnswers() {
         long id = 1L;
         List<Answer> answers = List.of(new Answer("BA", true, question));
+        question.setAnswers(new HashSet<>(answers));
         List<AnswerDto> answerDtos = List.of(new AnswerDto("BA", true));
+        when(questionService.find(id)).thenReturn(question);
         when(answerMapper.toDtoList(answers)).thenReturn(answerDtos);
-        when(answerService.findAllByQuestionId(id)).thenReturn(answers);
         var actualAnswers = questionFacade.getQuestionAnswers(id);
         assertEquals(answerDtos, actualAnswers);
     }
-- 
GitLab