Modify QuizEntity,UserEntity and Add SolvedQuizRepository

This commit is contained in:
MangKyu
2021-12-05 23:34:41 +09:00
parent 8e4975a0d1
commit 8b433273f4
5 changed files with 114 additions and 8 deletions

View File

@@ -3,18 +3,22 @@ package com.mangkyu.employment.interview.app.quiz.entity;
import com.mangkyu.employment.interview.app.common.entity.BaseEntity;
import com.mangkyu.employment.interview.app.quiz.enums.QuizCategory;
import com.mangkyu.employment.interview.app.quiz.enums.QuizLevel;
import lombok.*;
import com.mangkyu.employment.interview.app.solvedquiz.entity.SolvedQuizEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
@Table
@Table(name = "quiz")
@Getter
@Builder
@NoArgsConstructor(force = true)
@AllArgsConstructor
@ToString
public class QuizEntity extends BaseEntity {
private String title;
@@ -27,4 +31,7 @@ public class QuizEntity extends BaseEntity {
@Enumerated(EnumType.STRING)
private List<QuizLevel> quizLevel;
@OneToMany(mappedBy = "quiz")
private List<SolvedQuizEntity> solvedQuizList = new ArrayList<>();
}

View File

@@ -0,0 +1,29 @@
package com.mangkyu.employment.interview.app.solvedquiz.entity;
import com.mangkyu.employment.interview.app.common.entity.BaseEntity;
import com.mangkyu.employment.interview.app.quiz.entity.QuizEntity;
import com.mangkyu.employment.interview.app.user.entity.UserEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.*;
@Entity
@Table(name = "solved_quiz")
@Getter
@Builder
@NoArgsConstructor(force = true)
@AllArgsConstructor
public class SolvedQuizEntity extends BaseEntity {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private UserEntity user;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "quiz_id")
private QuizEntity quiz;
}

View File

@@ -0,0 +1,7 @@
package com.mangkyu.employment.interview.app.solvedquiz.repository;
import com.mangkyu.employment.interview.app.solvedquiz.entity.SolvedQuizEntity;
import org.springframework.data.jpa.repository.JpaRepository;
public interface SolvedQuizRepository extends JpaRepository <SolvedQuizEntity, Long> {
}

View File

@@ -2,18 +2,18 @@ package com.mangkyu.employment.interview.app.user.entity;
import com.mangkyu.employment.interview.app.common.entity.BaseEntity;
import com.mangkyu.employment.interview.app.quiz.enums.QuizLevel;
import com.mangkyu.employment.interview.app.solvedquiz.entity.SolvedQuizEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Table;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
@Table
@Table(name = "user")
@Getter
@Builder
@NoArgsConstructor(force = true)
@@ -25,4 +25,7 @@ public class UserEntity extends BaseEntity {
@Enumerated(EnumType.STRING)
private QuizLevel quizLevel;
@OneToMany(mappedBy = "user")
private List<SolvedQuizEntity> solvedQuizList = new ArrayList<>();
}

View File

@@ -0,0 +1,60 @@
package com.mangkyu.employment.interview.app.solvedquiz.repository;
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 com.mangkyu.employment.interview.app.solvedquiz.entity.SolvedQuizEntity;
import com.mangkyu.employment.interview.app.user.entity.UserEntity;
import com.mangkyu.employment.interview.app.user.repository.UserRepository;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import java.util.Arrays;
import java.util.Collections;
import static org.assertj.core.api.Assertions.assertThat;
@DataJpaTest
class SolvedQuizRepositoryTest {
@Autowired
private SolvedQuizRepository solvedQuizRepository;
@Autowired
private QuizRepository quizRepository;
@Autowired
private UserRepository userRepository;
@Test
public void insertQuiz() {
// given
final UserEntity userEntity = UserEntity.builder()
.email("minkyu@test.com")
.quizLevel(QuizLevel.JUNIOR)
.solvedQuizList(Collections.emptyList())
.build();
final QuizEntity quiz = QuizEntity.builder()
.title("quiz")
.quizCategory(QuizCategory.JAVA)
.quizLevel(Arrays.asList(QuizLevel.NEW, QuizLevel.JUNIOR, QuizLevel.SENIOR))
.build();
final QuizEntity quizResult = quizRepository.save(quiz);
final UserEntity userResult = userRepository.save(userEntity);
final SolvedQuizEntity solvedQuiz = SolvedQuizEntity.builder()
.user(userResult)
.quiz(quizResult)
.build();
// when
final SolvedQuizEntity result = solvedQuizRepository.save(solvedQuiz);
// then
assertThat(result.getQuiz()).isEqualTo(quizResult);
assertThat(result.getUser()).isEqualTo(userResult);
}
}