Move domain logic to Entity
This commit is contained in:
@@ -10,7 +10,7 @@ import javax.persistence.*;
|
||||
@Table(name = "answer")
|
||||
@Getter
|
||||
@Builder
|
||||
@NoArgsConstructor(force = true)
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class Answer extends BaseEntity {
|
||||
|
||||
@@ -25,4 +25,8 @@ public class Answer extends BaseEntity {
|
||||
@Column(length = 5000)
|
||||
private String description;
|
||||
|
||||
public void clearAnswer() {
|
||||
quiz.setAnswer(null);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -18,7 +18,7 @@ public class DeleteAnswerService {
|
||||
|
||||
public void delete(final String resourceId) {
|
||||
final Answer answer = getAnswerService.get(resourceId);
|
||||
answer.getQuiz().setAnswer(null);
|
||||
answer.clearAnswer();
|
||||
answerRepository.delete(answer);
|
||||
}
|
||||
}
|
||||
@@ -21,7 +21,7 @@ import static com.mangkyu.employment.interview.app.quiz.constants.QuizConstants.
|
||||
@Table(name = "member")
|
||||
@Getter
|
||||
@Builder
|
||||
@NoArgsConstructor(force = true)
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class Member extends BaseEntity {
|
||||
|
||||
@@ -51,4 +51,7 @@ public class Member extends BaseEntity {
|
||||
@OneToMany(mappedBy = "member")
|
||||
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.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.service.QuizService;
|
||||
import com.mangkyu.employment.interview.app.solvedquiz.service.SolvedQuizService;
|
||||
@@ -24,7 +23,6 @@ import java.util.List;
|
||||
public class SendQuizCronJob {
|
||||
|
||||
private final GetMemberService memberService;
|
||||
private final UpdateMemberService updateMemberService;
|
||||
private final QuizService quizService;
|
||||
private final MailService mailService;
|
||||
private final SolvedQuizService solvedQuizService;
|
||||
@@ -52,7 +50,7 @@ public class SendQuizCronJob {
|
||||
|
||||
final List<Quiz> randomQuizList = quizService.getRandomQuizListUnderLimit(unsolvedQuizList, member.getQuizSize());
|
||||
if (isLastMail) {
|
||||
updateMemberService.disableUser(member);
|
||||
member.disableUser();
|
||||
}
|
||||
|
||||
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.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.service.QuizService;
|
||||
import com.mangkyu.employment.interview.app.solvedquiz.service.SolvedQuizService;
|
||||
@@ -31,9 +30,6 @@ class SendQuizCronJobTest {
|
||||
|
||||
@Mock
|
||||
private GetMemberService memberService;
|
||||
|
||||
@Mock
|
||||
private UpdateMemberService updateMemberService;
|
||||
@Mock
|
||||
private QuizService quizService;
|
||||
@Mock
|
||||
@@ -72,7 +68,6 @@ class SendQuizCronJobTest {
|
||||
// verify
|
||||
verify(quizService, times(0)).getUnsolvedQuizList(member.getId(), member.getQuizLevel(), member.getQuizCategorySet());
|
||||
verify(quizService, times(0)).getRandomQuizListUnderLimit(anyList(), anyInt());
|
||||
verify(updateMemberService, times(0)).disableUser(member);
|
||||
verify(mailService, times(0)).sendMail(anyString(), anyList(), anyBoolean());
|
||||
verify(solvedQuizService, times(0)).addSolvedQuizList(any(Member.class), anyList());
|
||||
}
|
||||
@@ -101,7 +96,6 @@ class SendQuizCronJobTest {
|
||||
// verify
|
||||
verify(quizService, times(1)).getUnsolvedQuizList(member.getId(), member.getQuizLevel(), member.getQuizCategorySet());
|
||||
verify(quizService, times(1)).getRandomQuizListUnderLimit(unsolvedQuizList, member.getQuizSize());
|
||||
verify(updateMemberService, times(0)).disableUser(member);
|
||||
verify(mailService, times(1)).sendMail(member.getEmail(), randomQuizList, false);
|
||||
verify(solvedQuizService, times(1)).addSolvedQuizList(member, randomQuizList);
|
||||
}
|
||||
@@ -130,7 +124,6 @@ class SendQuizCronJobTest {
|
||||
// verify
|
||||
verify(quizService, times(1)).getUnsolvedQuizList(member.getId(), member.getQuizLevel(), member.getQuizCategorySet());
|
||||
verify(quizService, times(1)).getRandomQuizListUnderLimit(unsolvedQuizList, member.getQuizSize());
|
||||
verify(updateMemberService, times(1)).disableUser(member);
|
||||
verify(mailService, times(1)).sendMail(member.getEmail(), randomQuizList, true);
|
||||
verify(solvedQuizService, times(1)).addSolvedQuizList(member, randomQuizList);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user