Skip to content

Commit

Permalink
Merge branch 'develop' into test/147
Browse files Browse the repository at this point in the history
  • Loading branch information
Leewonchan14 authored Feb 13, 2024
2 parents 3d930fc + bfdf3ae commit 073f7e2
Show file tree
Hide file tree
Showing 3 changed files with 182 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ public static class CreateDTO {
}

@Getter
@Builder
public static class UpdateDTO {
@NotNull
@ExistUser
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,21 @@
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import qp.official.qp.converter.QuestionHashtagConverter;
import qp.official.qp.domain.Hashtag;
import qp.official.qp.domain.Question;
import qp.official.qp.domain.User;
import qp.official.qp.domain.mapping.QuestionHashTag;
import qp.official.qp.repository.HashtagRepository;
import qp.official.qp.repository.QuestionHashTagRepository;
import qp.official.qp.repository.QuestionRepository;
import qp.official.qp.repository.UserRepository;
import qp.official.qp.web.dto.QuestionRequestDTO;
import qp.official.qp.web.dto.UserRequestDTO;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@ExtendWith(MockitoExtension.class)
Expand Down Expand Up @@ -113,4 +110,80 @@ void createQuestion() {
}
}

@Test
void updateQuestion() {
//when
Long questionId = 1L;
Long userId = 1L;
String updateTitle = "testUpdateTitle";
String updateContent = "testUpdateContent";

Question expectQuestion = Question.builder()
.questionId(questionId)
.title(updateTitle)
.content(updateContent)
.questionHashTagList(new ArrayList<>())
.build();

User testUser = User.builder()
.userId(userId)
.questionList(new ArrayList<>())
.build();

expectQuestion.setUser(testUser);

when(questionRepository.findById(questionId)).thenReturn(Optional.of(expectQuestion));

//given
QuestionRequestDTO.UpdateDTO request = QuestionRequestDTO.UpdateDTO.builder()
.userId(userId)
.title(updateTitle)
.content(updateContent)
.build();

Question question = questionCommandService.updateQuestion(questionId, request);

//then
// verify
assertEquals(question.getQuestionId(), questionId);
assertEquals(question.getTitle(), updateTitle);
assertEquals(question.getContent(), updateContent);

// 연관관계 검증
assertEquals(question.getUser().getUserId(), userId);
assertEquals(question.getUser().getQuestionList().get(0).getQuestionId(), questionId);

}

@Test
void deleteQuestion() {
// when
// 질문 정보
Long questionId = 1L;
String title = "testTitle";
String content = "testContent";

//예상 질문 객체 생성
// given
Question expectQuestion = Question.builder()
.questionId(questionId)
.title(title)
.content(content)
.questionHashTagList(new ArrayList<>())
.build();

when(questionRepository.findById(questionId)).thenReturn(Optional.of(expectQuestion));

//질문 삭제
questionCommandService.deleteQuestion(questionId);

//verify
verify(questionRepository).delete(expectQuestion);

}





}
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
package qp.official.qp.service.QuestionService;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import qp.official.qp.domain.Question;
import qp.official.qp.domain.User;
import qp.official.qp.repository.HashtagRepository;
import qp.official.qp.repository.QuestionRepository;
import qp.official.qp.repository.UserRepository;

import java.util.Optional;
import static org.mockito.Mockito.when;
import static org.junit.jupiter.api.Assertions.*;

// then
@ExtendWith(MockitoExtension.class)
public class QuestionQueryServiceTest {

@Mock
private QuestionRepository questionRepository;
@Mock
private UserRepository userRepository;
@Mock
private HashtagRepository hashtagRepository;

@InjectMocks
private QuestionQueryServiceImpl questionQueryService;
@InjectMocks
private QuestionCommandServiceImpl questionCommandService;

@Test
void getQuestion(){
// when
Long questionId = 1L;
String title = "testTitle";
String content = "testContent";
Long userId = 1L;
int views = 2; // 조회수

// given
Question question = Question.builder()
.questionId(questionId)
.title(title)
.content(content)
.user(User.builder().userId(userId).build())
.build();

when(questionRepository.findById(questionId)).thenReturn(Optional.of(question));

// 질문 조회 횟수
for(int i = 0; i < views; i++) {
questionQueryService.findById(questionId);
}

// verify
assertEquals(question.getQuestionId(), questionId);
assertEquals(question.getTitle(), title);
assertEquals(question.getContent(), content);
assertEquals(question.getUser().getUserId(), userId);
assertEquals(question.getHit(), views);
}

@Test
void getListBySearch() {
// when
Long questionId = 1L;
Long questionId2 = 2L;
String title = "testTitle";
String title2 = "testTitle2";
String content = "testContent";
String content2 = "testContent2";

int page = 0;
int size = 10;

// given
Question question = Question.builder()
.questionId(questionId)
.title(title)
.content(content)
.build();

Question question2 = Question.builder()
.questionId(questionId2)
.title(title2)
.content(content2)
.build();

Optional<String> optSearch = Optional.of("test");
Optional<String> optSearch2 = Optional.of("aaa");

questionQueryService.findAllBySearch(page, size, optSearch);

// verify
assertTrue(question.getTitle().contains(optSearch.get()) || question.getContent().contains(optSearch.get()));
assertTrue(question2.getTitle().contains(optSearch.get()) || question2.getContent().contains(optSearch.get()));

assertFalse(question.getTitle().contains(optSearch2.get()) || question.getContent().contains(optSearch2.get()));
assertFalse(question2.getTitle().contains(optSearch2.get()) || question2.getContent().contains(optSearch2.get()));
}
}

0 comments on commit 073f7e2

Please sign in to comment.