Modify QuizEntity,UserEntity and Add SolvedQuizRepository
This commit is contained in:
@@ -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<>();
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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> {
|
||||
}
|
||||
@@ -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<>();
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user