Add QuizService with addQuiz Method

This commit is contained in:
MangKyu
2021-12-05 22:23:05 +09:00
parent 17a51b53f1
commit 8a4260a2b0
4 changed files with 106 additions and 5 deletions

View File

@@ -0,0 +1,20 @@
package com.mangkyu.employment.interview.app.quiz.dto;
import com.mangkyu.employment.interview.app.quiz.enums.QuizCategory;
import com.mangkyu.employment.interview.app.quiz.enums.QuizLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.util.List;
@Getter
@Builder
@RequiredArgsConstructor
public class AddQuizRequest {
private final String title;
private final QuizCategory quizCategory;
private final List<QuizLevel> quizLevel;
}

View File

@@ -3,10 +3,7 @@ package com.mangkyu.employment.interview.app.quiz.entity;
import com.mangkyu.employment.interview.app.common.entity.CommonEntity;
import com.mangkyu.employment.interview.app.quiz.enums.QuizCategory;
import com.mangkyu.employment.interview.app.quiz.enums.QuizLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.*;
import javax.persistence.*;
import java.util.List;
@@ -15,8 +12,9 @@ import java.util.List;
@Table
@Getter
@Builder
@NoArgsConstructor
@NoArgsConstructor(force = true)
@AllArgsConstructor
@ToString
public class QuizEntity extends CommonEntity {
private String title;

View File

@@ -0,0 +1,23 @@
package com.mangkyu.employment.interview.app.quiz.service;
import com.mangkyu.employment.interview.app.quiz.dto.AddQuizRequest;
import com.mangkyu.employment.interview.app.quiz.entity.QuizEntity;
import com.mangkyu.employment.interview.app.quiz.repository.QuizRepository;
import lombok.RequiredArgsConstructor;
import org.modelmapper.ModelMapper;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class QuizService {
private final ModelMapper modelMapper;
private final QuizRepository quizRepository;
public void addQuiz(final AddQuizRequest addQuizRequest) {
final QuizEntity quizEntity = modelMapper.map(addQuizRequest, QuizEntity.class);
System.out.println(quizEntity);
quizRepository.save(quizEntity);
}
}

View File

@@ -0,0 +1,60 @@
package com.mangkyu.employment.interview.app.quiz.service;
import com.mangkyu.employment.interview.app.quiz.dto.AddQuizRequest;
import com.mangkyu.employment.interview.app.quiz.entity.QuizEntity;
import com.mangkyu.employment.interview.app.quiz.enums.QuizCategory;
import com.mangkyu.employment.interview.app.quiz.enums.QuizLevel;
import com.mangkyu.employment.interview.app.quiz.repository.QuizRepository;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
import org.mockito.junit.jupiter.MockitoExtension;
import org.modelmapper.ModelMapper;
import org.modelmapper.config.Configuration;
import java.util.Arrays;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@ExtendWith(MockitoExtension.class)
class QuizServiceTest {
@InjectMocks
private QuizService quizService;
@Mock
private QuizRepository quizRepository;
@Spy
private ModelMapper modelMapper;
@BeforeEach
public void init() {
modelMapper.getConfiguration()
.setFieldAccessLevel(Configuration.AccessLevel.PRIVATE)
.setFieldMatchingEnabled(true);
}
@Test
public void addQuiz_Success() {
// given
final AddQuizRequest request = AddQuizRequest.builder()
.title("quiz")
.quizCategory(QuizCategory.JAVA)
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
.build();
// when
quizService.addQuiz(request);
// then
// verify
verify(quizRepository, times(1)).save(any(QuizEntity.class));
}
}