Move domain logic to Entity
This commit is contained in:
@@ -10,7 +10,7 @@ import javax.persistence.*;
|
|||||||
@Table(name = "answer")
|
@Table(name = "answer")
|
||||||
@Getter
|
@Getter
|
||||||
@Builder
|
@Builder
|
||||||
@NoArgsConstructor(force = true)
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class Answer extends BaseEntity {
|
public class Answer extends BaseEntity {
|
||||||
|
|
||||||
@@ -25,4 +25,8 @@ public class Answer extends BaseEntity {
|
|||||||
@Column(length = 5000)
|
@Column(length = 5000)
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
|
public void clearAnswer() {
|
||||||
|
quiz.setAnswer(null);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -18,7 +18,7 @@ public class DeleteAnswerService {
|
|||||||
|
|
||||||
public void delete(final String resourceId) {
|
public void delete(final String resourceId) {
|
||||||
final Answer answer = getAnswerService.get(resourceId);
|
final Answer answer = getAnswerService.get(resourceId);
|
||||||
answer.getQuiz().setAnswer(null);
|
answer.clearAnswer();
|
||||||
answerRepository.delete(answer);
|
answerRepository.delete(answer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -21,7 +21,7 @@ import static com.mangkyu.employment.interview.app.quiz.constants.QuizConstants.
|
|||||||
@Table(name = "member")
|
@Table(name = "member")
|
||||||
@Getter
|
@Getter
|
||||||
@Builder
|
@Builder
|
||||||
@NoArgsConstructor(force = true)
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class Member extends BaseEntity {
|
public class Member extends BaseEntity {
|
||||||
|
|
||||||
@@ -51,4 +51,7 @@ public class Member extends BaseEntity {
|
|||||||
@OneToMany(mappedBy = "member")
|
@OneToMany(mappedBy = "member")
|
||||||
private List<SolvedQuiz> solvedQuizList = new ArrayList<>();
|
private List<SolvedQuiz> solvedQuizList = new ArrayList<>();
|
||||||
|
|
||||||
|
public void disableUser() {
|
||||||
|
setIsEnable(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
package com.mangkyu.employment.interview.app.member.service;
|
|
||||||
|
|
||||||
import com.mangkyu.employment.interview.app.member.entity.Member;
|
|
||||||
import com.mangkyu.employment.interview.app.member.repository.MemberRepository;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@Transactional
|
|
||||||
public class UpdateMemberService {
|
|
||||||
|
|
||||||
private final MemberRepository memberRepository;
|
|
||||||
|
|
||||||
public void disableUser(final Member member) {
|
|
||||||
member.setIsEnable(false);
|
|
||||||
memberRepository.save(member);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -2,7 +2,6 @@ package com.mangkyu.employment.interview.cron;
|
|||||||
|
|
||||||
import com.mangkyu.employment.interview.app.mail.service.MailService;
|
import com.mangkyu.employment.interview.app.mail.service.MailService;
|
||||||
import com.mangkyu.employment.interview.app.member.entity.Member;
|
import com.mangkyu.employment.interview.app.member.entity.Member;
|
||||||
import com.mangkyu.employment.interview.app.member.service.UpdateMemberService;
|
|
||||||
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||||
import com.mangkyu.employment.interview.app.quiz.service.QuizService;
|
import com.mangkyu.employment.interview.app.quiz.service.QuizService;
|
||||||
import com.mangkyu.employment.interview.app.solvedquiz.service.SolvedQuizService;
|
import com.mangkyu.employment.interview.app.solvedquiz.service.SolvedQuizService;
|
||||||
@@ -24,7 +23,6 @@ import java.util.List;
|
|||||||
public class SendQuizCronJob {
|
public class SendQuizCronJob {
|
||||||
|
|
||||||
private final GetMemberService memberService;
|
private final GetMemberService memberService;
|
||||||
private final UpdateMemberService updateMemberService;
|
|
||||||
private final QuizService quizService;
|
private final QuizService quizService;
|
||||||
private final MailService mailService;
|
private final MailService mailService;
|
||||||
private final SolvedQuizService solvedQuizService;
|
private final SolvedQuizService solvedQuizService;
|
||||||
@@ -52,7 +50,7 @@ public class SendQuizCronJob {
|
|||||||
|
|
||||||
final List<Quiz> randomQuizList = quizService.getRandomQuizListUnderLimit(unsolvedQuizList, member.getQuizSize());
|
final List<Quiz> randomQuizList = quizService.getRandomQuizListUnderLimit(unsolvedQuizList, member.getQuizSize());
|
||||||
if (isLastMail) {
|
if (isLastMail) {
|
||||||
updateMemberService.disableUser(member);
|
member.disableUser();
|
||||||
}
|
}
|
||||||
|
|
||||||
mailService.sendMail(member.getEmail(), randomQuizList, isLastMail);
|
mailService.sendMail(member.getEmail(), randomQuizList, isLastMail);
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package com.mangkyu.employment.interview.app.answer.entity;
|
||||||
|
|
||||||
|
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||||
|
import com.mangkyu.employment.interview.testutils.EntityCreationUtils;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
class AnswerTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void answer초기화(){
|
||||||
|
// given
|
||||||
|
Quiz quiz = EntityCreationUtils.quiz();
|
||||||
|
quiz.setAnswer(new Answer());
|
||||||
|
|
||||||
|
Answer answer = Answer.builder()
|
||||||
|
.quiz(quiz)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
// when
|
||||||
|
answer.clearAnswer();
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertThat(answer.getQuiz().getAnswer()).isNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.mangkyu.employment.interview.app.member.entity;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
class MemberTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void member비활성화() {
|
||||||
|
// given
|
||||||
|
Member member = Member.builder().build();
|
||||||
|
|
||||||
|
// when
|
||||||
|
member.disableUser();
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertThat(member.getIsEnable()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
package com.mangkyu.employment.interview.app.member.service;
|
|
||||||
|
|
||||||
import com.mangkyu.employment.interview.app.member.entity.Member;
|
|
||||||
import com.mangkyu.employment.interview.app.member.repository.MemberRepository;
|
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
|
||||||
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 static org.mockito.Mockito.times;
|
|
||||||
import static org.mockito.Mockito.verify;
|
|
||||||
|
|
||||||
@ExtendWith(MockitoExtension.class)
|
|
||||||
class UpdateMemberServiceTest {
|
|
||||||
|
|
||||||
@InjectMocks
|
|
||||||
private UpdateMemberService target;
|
|
||||||
|
|
||||||
@Mock
|
|
||||||
private MemberRepository memberRepository;
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void disableUserSuccess() {
|
|
||||||
// given
|
|
||||||
final Member member = user();
|
|
||||||
|
|
||||||
// when
|
|
||||||
target.disableUser(member);
|
|
||||||
|
|
||||||
// then
|
|
||||||
|
|
||||||
// verify
|
|
||||||
verify(memberRepository, times(1)).save(member);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Member user() {
|
|
||||||
final Member member = Member.builder()
|
|
||||||
.email("minkyu@test.com")
|
|
||||||
.quizLevel(QuizLevel.JUNIOR)
|
|
||||||
.build();
|
|
||||||
member.setIsEnable(true);
|
|
||||||
return member;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -2,7 +2,6 @@ package com.mangkyu.employment.interview.cron;
|
|||||||
|
|
||||||
import com.mangkyu.employment.interview.app.mail.service.MailService;
|
import com.mangkyu.employment.interview.app.mail.service.MailService;
|
||||||
import com.mangkyu.employment.interview.app.member.entity.Member;
|
import com.mangkyu.employment.interview.app.member.entity.Member;
|
||||||
import com.mangkyu.employment.interview.app.member.service.UpdateMemberService;
|
|
||||||
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||||
import com.mangkyu.employment.interview.app.quiz.service.QuizService;
|
import com.mangkyu.employment.interview.app.quiz.service.QuizService;
|
||||||
import com.mangkyu.employment.interview.app.solvedquiz.service.SolvedQuizService;
|
import com.mangkyu.employment.interview.app.solvedquiz.service.SolvedQuizService;
|
||||||
@@ -31,9 +30,6 @@ class SendQuizCronJobTest {
|
|||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private GetMemberService memberService;
|
private GetMemberService memberService;
|
||||||
|
|
||||||
@Mock
|
|
||||||
private UpdateMemberService updateMemberService;
|
|
||||||
@Mock
|
@Mock
|
||||||
private QuizService quizService;
|
private QuizService quizService;
|
||||||
@Mock
|
@Mock
|
||||||
@@ -72,7 +68,6 @@ class SendQuizCronJobTest {
|
|||||||
// verify
|
// verify
|
||||||
verify(quizService, times(0)).getUnsolvedQuizList(member.getId(), member.getQuizLevel(), member.getQuizCategorySet());
|
verify(quizService, times(0)).getUnsolvedQuizList(member.getId(), member.getQuizLevel(), member.getQuizCategorySet());
|
||||||
verify(quizService, times(0)).getRandomQuizListUnderLimit(anyList(), anyInt());
|
verify(quizService, times(0)).getRandomQuizListUnderLimit(anyList(), anyInt());
|
||||||
verify(updateMemberService, times(0)).disableUser(member);
|
|
||||||
verify(mailService, times(0)).sendMail(anyString(), anyList(), anyBoolean());
|
verify(mailService, times(0)).sendMail(anyString(), anyList(), anyBoolean());
|
||||||
verify(solvedQuizService, times(0)).addSolvedQuizList(any(Member.class), anyList());
|
verify(solvedQuizService, times(0)).addSolvedQuizList(any(Member.class), anyList());
|
||||||
}
|
}
|
||||||
@@ -101,7 +96,6 @@ class SendQuizCronJobTest {
|
|||||||
// verify
|
// verify
|
||||||
verify(quizService, times(1)).getUnsolvedQuizList(member.getId(), member.getQuizLevel(), member.getQuizCategorySet());
|
verify(quizService, times(1)).getUnsolvedQuizList(member.getId(), member.getQuizLevel(), member.getQuizCategorySet());
|
||||||
verify(quizService, times(1)).getRandomQuizListUnderLimit(unsolvedQuizList, member.getQuizSize());
|
verify(quizService, times(1)).getRandomQuizListUnderLimit(unsolvedQuizList, member.getQuizSize());
|
||||||
verify(updateMemberService, times(0)).disableUser(member);
|
|
||||||
verify(mailService, times(1)).sendMail(member.getEmail(), randomQuizList, false);
|
verify(mailService, times(1)).sendMail(member.getEmail(), randomQuizList, false);
|
||||||
verify(solvedQuizService, times(1)).addSolvedQuizList(member, randomQuizList);
|
verify(solvedQuizService, times(1)).addSolvedQuizList(member, randomQuizList);
|
||||||
}
|
}
|
||||||
@@ -130,7 +124,6 @@ class SendQuizCronJobTest {
|
|||||||
// verify
|
// verify
|
||||||
verify(quizService, times(1)).getUnsolvedQuizList(member.getId(), member.getQuizLevel(), member.getQuizCategorySet());
|
verify(quizService, times(1)).getUnsolvedQuizList(member.getId(), member.getQuizLevel(), member.getQuizCategorySet());
|
||||||
verify(quizService, times(1)).getRandomQuizListUnderLimit(unsolvedQuizList, member.getQuizSize());
|
verify(quizService, times(1)).getRandomQuizListUnderLimit(unsolvedQuizList, member.getQuizSize());
|
||||||
verify(updateMemberService, times(1)).disableUser(member);
|
|
||||||
verify(mailService, times(1)).sendMail(member.getEmail(), randomQuizList, true);
|
verify(mailService, times(1)).sendMail(member.getEmail(), randomQuizList, true);
|
||||||
verify(solvedQuizService, times(1)).addSolvedQuizList(member, randomQuizList);
|
verify(solvedQuizService, times(1)).addSolvedQuizList(member, randomQuizList);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user