Modify user to member
This commit is contained in:
14
LICENSE
14
LICENSE
@@ -97,16 +97,16 @@ distribution (with or without modification), making available to the
|
|||||||
public, and in some countries other activities as well.
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
To "convey" a work means any kind of propagation that enables other
|
To "convey" a work means any kind of propagation that enables other
|
||||||
parties to make or receive copies. Mere interaction with a user through
|
parties to make or receive copies. Mere interaction with a member through
|
||||||
a computer network, with no transfer of a copy, is not conveying.
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
An interactive user interface displays "Appropriate Legal Notices"
|
An interactive member interface displays "Appropriate Legal Notices"
|
||||||
to the extent that it includes a convenient and prominently visible
|
to the extent that it includes a convenient and prominently visible
|
||||||
feature that (1) displays an appropriate copyright notice, and (2)
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
tells the user that there is no warranty for the work (except to the
|
tells the member that there is no warranty for the work (except to the
|
||||||
extent that warranties are provided), that licensees may convey the
|
extent that warranties are provided), that licensees may convey the
|
||||||
work under this License, and how to view a copy of this License. If
|
work under this License, and how to view a copy of this License. If
|
||||||
the interface presents a list of user commands or options, such as a
|
the interface presents a list of member commands or options, such as a
|
||||||
menu, a prominent item in the list meets this criterion.
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
1. Source Code.
|
1. Source Code.
|
||||||
@@ -227,7 +227,7 @@ terms of section 4, provided that you also meet all of these conditions:
|
|||||||
permission to license the work in any other way, but it does not
|
permission to license the work in any other way, but it does not
|
||||||
invalidate such permission if you have separately received it.
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
d) If the work has interactive user interfaces, each must display
|
d) If the work has interactive member interfaces, each must display
|
||||||
Appropriate Legal Notices; however, if the Program has interactive
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
interfaces that do not display Appropriate Legal Notices, your
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
work need not make them do so.
|
work need not make them do so.
|
||||||
@@ -299,9 +299,9 @@ tangible personal property which is normally used for personal, family,
|
|||||||
or household purposes, or (2) anything designed or sold for incorporation
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
into a dwelling. In determining whether a product is a consumer product,
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
product received by a particular user, "normally used" refers to a
|
product received by a particular member, "normally used" refers to a
|
||||||
typical or common use of that class of product, regardless of the status
|
typical or common use of that class of product, regardless of the status
|
||||||
of the particular user or of the way in which the particular user
|
of the particular member or of the way in which the particular member
|
||||||
actually uses, or expects or is expected to use, the product. A product
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
is a consumer product regardless of whether the product has substantial
|
is a consumer product regardless of whether the product has substantial
|
||||||
commercial, industrial or non-consumer uses, unless such uses represent
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.mangkyu.employment.interview.app.user.controller;
|
package com.mangkyu.employment.interview.app.member.controller;
|
||||||
|
|
||||||
import com.mangkyu.employment.interview.app.user.dto.AddUserRequest;
|
import com.mangkyu.employment.interview.app.member.dto.AddMemberRequest;
|
||||||
import com.mangkyu.employment.interview.app.user.service.UserService;
|
import com.mangkyu.employment.interview.app.member.service.MemberService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
@@ -13,13 +13,13 @@ import javax.validation.Valid;
|
|||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class UserController {
|
public class MemberController {
|
||||||
|
|
||||||
private final UserService userService;
|
private final MemberService memberService;
|
||||||
|
|
||||||
@PostMapping("/user")
|
@PostMapping("/user")
|
||||||
public ResponseEntity<Void> addUser(@RequestBody @Valid final AddUserRequest addUserRequest) {
|
public ResponseEntity<Void> addUser(@RequestBody @Valid final AddMemberRequest addMemberRequest) {
|
||||||
userService.addUser(addUserRequest);
|
memberService.addUser(addMemberRequest);
|
||||||
|
|
||||||
return ResponseEntity.status(HttpStatus.CREATED)
|
return ResponseEntity.status(HttpStatus.CREATED)
|
||||||
.build();
|
.build();
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mangkyu.employment.interview.app.user.dto;
|
package com.mangkyu.employment.interview.app.member.dto;
|
||||||
|
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizDay;
|
import com.mangkyu.employment.interview.enums.value.QuizDay;
|
||||||
@@ -22,7 +22,7 @@ import static com.mangkyu.employment.interview.app.quiz.constants.QuizConstants.
|
|||||||
@Builder
|
@Builder
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@NoArgsConstructor(force = true)
|
@NoArgsConstructor(force = true)
|
||||||
public class AddUserRequest {
|
public class AddMemberRequest {
|
||||||
|
|
||||||
private final String resourceId = String.valueOf(UUID.randomUUID());
|
private final String resourceId = String.valueOf(UUID.randomUUID());
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mangkyu.employment.interview.app.user.entity;
|
package com.mangkyu.employment.interview.app.member.entity;
|
||||||
|
|
||||||
import com.mangkyu.employment.interview.app.common.entity.BaseEntity;
|
import com.mangkyu.employment.interview.app.common.entity.BaseEntity;
|
||||||
import com.mangkyu.employment.interview.app.solvedquiz.entity.SolvedQuiz;
|
import com.mangkyu.employment.interview.app.solvedquiz.entity.SolvedQuiz;
|
||||||
@@ -18,12 +18,12 @@ import java.util.Set;
|
|||||||
import static com.mangkyu.employment.interview.app.quiz.constants.QuizConstants.DEFAULT_QUIZ_SIZE;
|
import static com.mangkyu.employment.interview.app.quiz.constants.QuizConstants.DEFAULT_QUIZ_SIZE;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "user")
|
@Table(name = "member")
|
||||||
@Getter
|
@Getter
|
||||||
@Builder
|
@Builder
|
||||||
@NoArgsConstructor(force = true)
|
@NoArgsConstructor(force = true)
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class User extends BaseEntity {
|
public class Member extends BaseEntity {
|
||||||
|
|
||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
private String resourceId;
|
private String resourceId;
|
||||||
@@ -48,7 +48,7 @@ public class User extends BaseEntity {
|
|||||||
private Integer quizSize = DEFAULT_QUIZ_SIZE;
|
private Integer quizSize = DEFAULT_QUIZ_SIZE;
|
||||||
|
|
||||||
@Builder.Default
|
@Builder.Default
|
||||||
@OneToMany(mappedBy = "user")
|
@OneToMany(mappedBy = "member")
|
||||||
private List<SolvedQuiz> solvedQuizList = new ArrayList<>();
|
private List<SolvedQuiz> solvedQuizList = new ArrayList<>();
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.mangkyu.employment.interview.app.member.repository;
|
||||||
|
|
||||||
|
import com.mangkyu.employment.interview.app.member.entity.Member;
|
||||||
|
import com.mangkyu.employment.interview.enums.value.QuizDay;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface MemberRepository extends JpaRepository <Member, Long> {
|
||||||
|
|
||||||
|
List<Member> findAllByIsEnableTrueAndQuizDaySetIs(final QuizDay QuizDay);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
package com.mangkyu.employment.interview.app.member.service;
|
||||||
|
|
||||||
|
import com.mangkyu.employment.interview.app.member.dto.AddMemberRequest;
|
||||||
|
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.QuizDay;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.modelmapper.ModelMapper;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Transactional(readOnly = true)
|
||||||
|
public class MemberService {
|
||||||
|
|
||||||
|
private final MemberRepository memberRepository;
|
||||||
|
private final ModelMapper modelMapper;
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void addUser(final AddMemberRequest addMemberRequest) {
|
||||||
|
final Member member = modelMapper.map(addMemberRequest, Member.class);
|
||||||
|
memberRepository.save(member);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void disableUser(final Member member) {
|
||||||
|
member.setIsEnable(false);
|
||||||
|
memberRepository.save(member);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Member> getEnabledUserList(final QuizDay QuizDay) {
|
||||||
|
return memberRepository.findAllByIsEnableTrueAndQuizDaySetIs(QuizDay);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -70,7 +70,7 @@ public class QuizService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public List<Quiz> getUnsolvedQuizList(final Long userId, final QuizLevel quizLevel, final Set<QuizCategory> quizCategorySet) {
|
public List<Quiz> getUnsolvedQuizList(final Long userId, final QuizLevel quizLevel, final Set<QuizCategory> quizCategorySet) {
|
||||||
final Set<Long> solvedQuizIdList = solvedQuizRepository.findAllByUser_Id(userId)
|
final Set<Long> solvedQuizIdList = solvedQuizRepository.findAllByMember_Id(userId)
|
||||||
.stream()
|
.stream()
|
||||||
.map(v -> v.getQuiz().getId())
|
.map(v -> v.getQuiz().getId())
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.mangkyu.employment.interview.app.solvedquiz.entity;
|
package com.mangkyu.employment.interview.app.solvedquiz.entity;
|
||||||
|
|
||||||
import com.mangkyu.employment.interview.app.common.entity.BaseEntity;
|
import com.mangkyu.employment.interview.app.common.entity.BaseEntity;
|
||||||
|
import com.mangkyu.employment.interview.app.member.entity.Member;
|
||||||
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||||
import com.mangkyu.employment.interview.app.user.entity.User;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -19,8 +19,8 @@ import javax.persistence.*;
|
|||||||
public class SolvedQuiz extends BaseEntity {
|
public class SolvedQuiz extends BaseEntity {
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(name = "user_id")
|
@JoinColumn(name = "member_id")
|
||||||
private User user;
|
private Member member;
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(name = "quiz_id")
|
@JoinColumn(name = "quiz_id")
|
||||||
|
|||||||
@@ -7,6 +7,6 @@ import java.util.List;
|
|||||||
|
|
||||||
public interface SolvedQuizRepository extends JpaRepository <SolvedQuiz, Long> {
|
public interface SolvedQuizRepository extends JpaRepository <SolvedQuiz, Long> {
|
||||||
|
|
||||||
List<SolvedQuiz> findAllByUser_Id(Long userId);
|
List<SolvedQuiz> findAllByMember_Id(Long userId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.mangkyu.employment.interview.app.solvedquiz.service;
|
package com.mangkyu.employment.interview.app.solvedquiz.service;
|
||||||
|
|
||||||
|
import com.mangkyu.employment.interview.app.member.entity.Member;
|
||||||
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||||
import com.mangkyu.employment.interview.app.solvedquiz.entity.SolvedQuiz;
|
import com.mangkyu.employment.interview.app.solvedquiz.entity.SolvedQuiz;
|
||||||
import com.mangkyu.employment.interview.app.solvedquiz.repository.SolvedQuizRepository;
|
import com.mangkyu.employment.interview.app.solvedquiz.repository.SolvedQuizRepository;
|
||||||
import com.mangkyu.employment.interview.app.user.entity.User;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -20,17 +20,17 @@ public class SolvedQuizService {
|
|||||||
private final SolvedQuizRepository solvedQuizRepository;
|
private final SolvedQuizRepository solvedQuizRepository;
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public void addSolvedQuizList(final User user, final List<Quiz> quizList) {
|
public void addSolvedQuizList(final Member member, final List<Quiz> quizList) {
|
||||||
final List<SolvedQuiz> solvedQuizList = quizList.stream()
|
final List<SolvedQuiz> solvedQuizList = quizList.stream()
|
||||||
.map(quiz -> createSolvedQuizEntity(user, quiz))
|
.map(quiz -> createSolvedQuizEntity(member, quiz))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
solvedQuizRepository.saveAll(solvedQuizList);
|
solvedQuizRepository.saveAll(solvedQuizList);
|
||||||
}
|
}
|
||||||
|
|
||||||
private SolvedQuiz createSolvedQuizEntity(final User user, final Quiz quiz) {
|
private SolvedQuiz createSolvedQuizEntity(final Member member, final Quiz quiz) {
|
||||||
return SolvedQuiz.builder()
|
return SolvedQuiz.builder()
|
||||||
.user(user)
|
.member(member)
|
||||||
.quiz(quiz).build();
|
.quiz(quiz).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
package com.mangkyu.employment.interview.app.user.repository;
|
|
||||||
|
|
||||||
import com.mangkyu.employment.interview.app.user.entity.User;
|
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizDay;
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public interface UserRepository extends JpaRepository <User, Long> {
|
|
||||||
|
|
||||||
List<User> findAllByIsEnableTrueAndQuizDaySetIs(final QuizDay QuizDay);
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
package com.mangkyu.employment.interview.app.user.service;
|
|
||||||
|
|
||||||
import com.mangkyu.employment.interview.app.user.dto.AddUserRequest;
|
|
||||||
import com.mangkyu.employment.interview.app.user.entity.User;
|
|
||||||
import com.mangkyu.employment.interview.app.user.repository.UserRepository;
|
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizDay;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.modelmapper.ModelMapper;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@Transactional(readOnly = true)
|
|
||||||
public class UserService {
|
|
||||||
|
|
||||||
private final UserRepository userRepository;
|
|
||||||
private final ModelMapper modelMapper;
|
|
||||||
|
|
||||||
@Transactional
|
|
||||||
public void addUser(final AddUserRequest addUserRequest) {
|
|
||||||
final User user = modelMapper.map(addUserRequest, User.class);
|
|
||||||
userRepository.save(user);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional
|
|
||||||
public void disableUser(final User user) {
|
|
||||||
user.setIsEnable(false);
|
|
||||||
userRepository.save(user);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<User> getEnabledUserList(final QuizDay QuizDay) {
|
|
||||||
return userRepository.findAllByIsEnableTrueAndQuizDaySetIs(QuizDay);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package com.mangkyu.employment.interview.cron;
|
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.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;
|
||||||
import com.mangkyu.employment.interview.app.user.entity.User;
|
import com.mangkyu.employment.interview.app.member.service.MemberService;
|
||||||
import com.mangkyu.employment.interview.app.user.service.UserService;
|
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizDay;
|
import com.mangkyu.employment.interview.enums.value.QuizDay;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -22,7 +22,7 @@ import java.util.List;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class SendQuizCronJob {
|
public class SendQuizCronJob {
|
||||||
|
|
||||||
private final UserService userService;
|
private final MemberService memberService;
|
||||||
private final QuizService quizService;
|
private final QuizService quizService;
|
||||||
private final MailService mailService;
|
private final MailService mailService;
|
||||||
private final SolvedQuizService solvedQuizService;
|
private final SolvedQuizService solvedQuizService;
|
||||||
@@ -37,23 +37,23 @@ public class SendQuizCronJob {
|
|||||||
@Transactional
|
@Transactional
|
||||||
public void sendQuizMail() {
|
public void sendQuizMail() {
|
||||||
final DayOfWeek dayOfWeek = LocalDate.now().getDayOfWeek();
|
final DayOfWeek dayOfWeek = LocalDate.now().getDayOfWeek();
|
||||||
final List<User> userList = userService.getEnabledUserList(QuizDay.findQuizDay(dayOfWeek));
|
final List<Member> memberList = memberService.getEnabledUserList(QuizDay.findQuizDay(dayOfWeek));
|
||||||
for (final User user : userList) {
|
for (final Member member : memberList) {
|
||||||
sendUnsolvedQuizForUser(user);
|
sendUnsolvedQuizForUser(member);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendUnsolvedQuizForUser(final User user) {
|
private void sendUnsolvedQuizForUser(final Member member) {
|
||||||
final List<Quiz> unsolvedQuizList = quizService.getUnsolvedQuizList(user.getId(), user.getQuizLevel(), user.getQuizCategorySet());
|
final List<Quiz> unsolvedQuizList = quizService.getUnsolvedQuizList(member.getId(), member.getQuizLevel(), member.getQuizCategorySet());
|
||||||
final boolean isLastMail = isLastMail(unsolvedQuizList, user.getQuizSize());
|
final boolean isLastMail = isLastMail(unsolvedQuizList, member.getQuizSize());
|
||||||
|
|
||||||
final List<Quiz> randomQuizList = quizService.getRandomQuizListUnderLimit(unsolvedQuizList, user.getQuizSize());
|
final List<Quiz> randomQuizList = quizService.getRandomQuizListUnderLimit(unsolvedQuizList, member.getQuizSize());
|
||||||
if (isLastMail) {
|
if (isLastMail) {
|
||||||
userService.disableUser(user);
|
memberService.disableUser(member);
|
||||||
}
|
}
|
||||||
|
|
||||||
mailService.sendMail(user.getEmail(), randomQuizList, isLastMail);
|
mailService.sendMail(member.getEmail(), randomQuizList, isLastMail);
|
||||||
solvedQuizService.addSolvedQuizList(user, randomQuizList);
|
solvedQuizService.addSolvedQuizList(member, randomQuizList);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isLastMail(final List<Quiz> quizList, final Integer quizSize) {
|
private boolean isLastMail(final List<Quiz> quizList, final Integer quizSize) {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.mangkyu.employment.interview.app.user.controller;
|
package com.mangkyu.employment.interview.app.member.controller;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.mangkyu.employment.interview.app.user.dto.AddUserRequest;
|
import com.mangkyu.employment.interview.app.member.dto.AddMemberRequest;
|
||||||
import com.mangkyu.employment.interview.app.user.service.UserService;
|
import com.mangkyu.employment.interview.app.member.service.MemberService;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizDay;
|
import com.mangkyu.employment.interview.enums.value.QuizDay;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
||||||
@@ -20,11 +20,11 @@ import java.util.Set;
|
|||||||
|
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||||
|
|
||||||
@WebMvcTest(UserController.class)
|
@WebMvcTest(MemberController.class)
|
||||||
class UserControllerTest {
|
class MemberControllerTest {
|
||||||
|
|
||||||
@MockBean
|
@MockBean
|
||||||
private UserService userService;
|
private MemberService memberService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MockMvc mockMvc;
|
private MockMvc mockMvc;
|
||||||
@@ -32,7 +32,7 @@ class UserControllerTest {
|
|||||||
@Test
|
@Test
|
||||||
public void addUserFail_EmailIsEmpty() throws Exception {
|
public void addUserFail_EmailIsEmpty() throws Exception {
|
||||||
// given
|
// given
|
||||||
final AddUserRequest addUserRequest = AddUserRequest.builder()
|
final AddMemberRequest addMemberRequest = AddMemberRequest.builder()
|
||||||
.email("")
|
.email("")
|
||||||
.quizLevel(QuizLevel.JUNIOR)
|
.quizLevel(QuizLevel.JUNIOR)
|
||||||
.build();
|
.build();
|
||||||
@@ -40,7 +40,7 @@ class UserControllerTest {
|
|||||||
// when
|
// when
|
||||||
final ResultActions result = mockMvc.perform(
|
final ResultActions result = mockMvc.perform(
|
||||||
MockMvcRequestBuilders.post("/user")
|
MockMvcRequestBuilders.post("/user")
|
||||||
.content(new Gson().toJson(addUserRequest))
|
.content(new Gson().toJson(addMemberRequest))
|
||||||
.contentType(MediaType.APPLICATION_JSON)
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ class UserControllerTest {
|
|||||||
@Test
|
@Test
|
||||||
public void addUserFail_NotEmailFormat() throws Exception {
|
public void addUserFail_NotEmailFormat() throws Exception {
|
||||||
// given
|
// given
|
||||||
final AddUserRequest addUserRequest = AddUserRequest.builder()
|
final AddMemberRequest addMemberRequest = AddMemberRequest.builder()
|
||||||
.email("asdas")
|
.email("asdas")
|
||||||
.quizLevel(QuizLevel.JUNIOR)
|
.quizLevel(QuizLevel.JUNIOR)
|
||||||
.build();
|
.build();
|
||||||
@@ -59,7 +59,7 @@ class UserControllerTest {
|
|||||||
// when
|
// when
|
||||||
final ResultActions result = mockMvc.perform(
|
final ResultActions result = mockMvc.perform(
|
||||||
MockMvcRequestBuilders.post("/user")
|
MockMvcRequestBuilders.post("/user")
|
||||||
.content(new Gson().toJson(addUserRequest))
|
.content(new Gson().toJson(addMemberRequest))
|
||||||
.contentType(MediaType.APPLICATION_JSON)
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ class UserControllerTest {
|
|||||||
@Test
|
@Test
|
||||||
public void addUserFail_QuizLevelIsNull() throws Exception {
|
public void addUserFail_QuizLevelIsNull() throws Exception {
|
||||||
// given
|
// given
|
||||||
final AddUserRequest addUserRequest = AddUserRequest.builder()
|
final AddMemberRequest addMemberRequest = AddMemberRequest.builder()
|
||||||
.email("whalsrb1226@gmail.com")
|
.email("whalsrb1226@gmail.com")
|
||||||
.quizLevel(null)
|
.quizLevel(null)
|
||||||
.build();
|
.build();
|
||||||
@@ -78,7 +78,7 @@ class UserControllerTest {
|
|||||||
// when
|
// when
|
||||||
final ResultActions result = mockMvc.perform(
|
final ResultActions result = mockMvc.perform(
|
||||||
MockMvcRequestBuilders.post("/user")
|
MockMvcRequestBuilders.post("/user")
|
||||||
.content(new Gson().toJson(addUserRequest))
|
.content(new Gson().toJson(addMemberRequest))
|
||||||
.contentType(MediaType.APPLICATION_JSON)
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ class UserControllerTest {
|
|||||||
@Test
|
@Test
|
||||||
public void addUserFail_QuizDaySetIsEmpty() throws Exception {
|
public void addUserFail_QuizDaySetIsEmpty() throws Exception {
|
||||||
// given
|
// given
|
||||||
final AddUserRequest addUserRequest = AddUserRequest.builder()
|
final AddMemberRequest addMemberRequest = AddMemberRequest.builder()
|
||||||
.email("whalsrb1226@gmail.com")
|
.email("whalsrb1226@gmail.com")
|
||||||
.quizLevel(QuizLevel.NEW)
|
.quizLevel(QuizLevel.NEW)
|
||||||
.build();
|
.build();
|
||||||
@@ -98,7 +98,7 @@ class UserControllerTest {
|
|||||||
// when
|
// when
|
||||||
final ResultActions result = mockMvc.perform(
|
final ResultActions result = mockMvc.perform(
|
||||||
MockMvcRequestBuilders.post("/user")
|
MockMvcRequestBuilders.post("/user")
|
||||||
.content(new Gson().toJson(addUserRequest))
|
.content(new Gson().toJson(addMemberRequest))
|
||||||
.contentType(MediaType.APPLICATION_JSON)
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -115,7 +115,7 @@ class UserControllerTest {
|
|||||||
quizDaySet.add(QuizDay.WEDNESDAY);
|
quizDaySet.add(QuizDay.WEDNESDAY);
|
||||||
quizDaySet.add(QuizDay.FRIDAY);
|
quizDaySet.add(QuizDay.FRIDAY);
|
||||||
|
|
||||||
final AddUserRequest addUserRequest = AddUserRequest.builder()
|
final AddMemberRequest addMemberRequest = AddMemberRequest.builder()
|
||||||
.email("whalsrb1226@gmail.com")
|
.email("whalsrb1226@gmail.com")
|
||||||
.quizLevel(QuizLevel.JUNIOR)
|
.quizLevel(QuizLevel.JUNIOR)
|
||||||
.quizDaySet(quizDaySet)
|
.quizDaySet(quizDaySet)
|
||||||
@@ -124,7 +124,7 @@ class UserControllerTest {
|
|||||||
// when
|
// when
|
||||||
final ResultActions result = mockMvc.perform(
|
final ResultActions result = mockMvc.perform(
|
||||||
MockMvcRequestBuilders.post("/user")
|
MockMvcRequestBuilders.post("/user")
|
||||||
.content(new Gson().toJson(addUserRequest))
|
.content(new Gson().toJson(addMemberRequest))
|
||||||
.contentType(MediaType.APPLICATION_JSON)
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -145,7 +145,7 @@ class UserControllerTest {
|
|||||||
quizCategorySet.add(QuizCategory.DATABASE);
|
quizCategorySet.add(QuizCategory.DATABASE);
|
||||||
quizCategorySet.add(QuizCategory.EXPERIENCE);
|
quizCategorySet.add(QuizCategory.EXPERIENCE);
|
||||||
|
|
||||||
final AddUserRequest addUserRequest = AddUserRequest.builder()
|
final AddMemberRequest addMemberRequest = AddMemberRequest.builder()
|
||||||
.email("whalsrb1226@gmail.com")
|
.email("whalsrb1226@gmail.com")
|
||||||
.quizLevel(QuizLevel.JUNIOR)
|
.quizLevel(QuizLevel.JUNIOR)
|
||||||
.quizDaySet(quizDaySet)
|
.quizDaySet(quizDaySet)
|
||||||
@@ -155,7 +155,7 @@ class UserControllerTest {
|
|||||||
// when
|
// when
|
||||||
final ResultActions result = mockMvc.perform(
|
final ResultActions result = mockMvc.perform(
|
||||||
MockMvcRequestBuilders.post("/user")
|
MockMvcRequestBuilders.post("/user")
|
||||||
.content(new Gson().toJson(addUserRequest))
|
.content(new Gson().toJson(addMemberRequest))
|
||||||
.contentType(MediaType.APPLICATION_JSON)
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.mangkyu.employment.interview.app.user.repository;
|
package com.mangkyu.employment.interview.app.member.repository;
|
||||||
|
|
||||||
import com.mangkyu.employment.interview.JpaTestConfig;
|
import com.mangkyu.employment.interview.JpaTestConfig;
|
||||||
import com.mangkyu.employment.interview.app.user.entity.User;
|
import com.mangkyu.employment.interview.app.member.entity.Member;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizDay;
|
import com.mangkyu.employment.interview.enums.value.QuizDay;
|
||||||
import com.mangkyu.employment.interview.testutils.EntityCreationUtils;
|
import com.mangkyu.employment.interview.testutils.EntityCreationUtils;
|
||||||
@@ -15,13 +15,13 @@ import java.util.Set;
|
|||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
@JpaTestConfig
|
@JpaTestConfig
|
||||||
class UserRepositoryTest {
|
class MemberRepositoryTest {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserRepository userRepository;
|
private MemberRepository memberRepository;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void selectUserListByCycle() {
|
public void selectMemberListByCycle() {
|
||||||
// given
|
// given
|
||||||
final Set<QuizDay> quizDaySet = new HashSet<>();
|
final Set<QuizDay> quizDaySet = new HashSet<>();
|
||||||
quizDaySet.add(QuizDay.MONDAY);
|
quizDaySet.add(QuizDay.MONDAY);
|
||||||
@@ -33,14 +33,14 @@ class UserRepositoryTest {
|
|||||||
quizCategorySet.add(QuizCategory.DATABASE);
|
quizCategorySet.add(QuizCategory.DATABASE);
|
||||||
quizCategorySet.add(QuizCategory.EXPERIENCE);
|
quizCategorySet.add(QuizCategory.EXPERIENCE);
|
||||||
|
|
||||||
final User user = EntityCreationUtils.user(5, quizDaySet, quizCategorySet);
|
final Member member = EntityCreationUtils.member(5, quizDaySet, quizCategorySet);
|
||||||
|
|
||||||
final User savedUser = userRepository.save(user);
|
final Member savedMember = memberRepository.save(member);
|
||||||
userRepository.save(savedUser);
|
memberRepository.save(savedMember);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
final List<User> dailyResult = userRepository.findAllByIsEnableTrueAndQuizDaySetIs(QuizDay.MONDAY);
|
final List<Member> dailyResult = memberRepository.findAllByIsEnableTrueAndQuizDaySetIs(QuizDay.MONDAY);
|
||||||
final List<User> regularResult = userRepository.findAllByIsEnableTrueAndQuizDaySetIs(QuizDay.THURSDAY);
|
final List<Member> regularResult = memberRepository.findAllByIsEnableTrueAndQuizDaySetIs(QuizDay.THURSDAY);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(dailyResult.size()).isOne();
|
assertThat(dailyResult.size()).isOne();
|
||||||
@@ -48,7 +48,7 @@ class UserRepositoryTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void insertUser() {
|
public void insertMember() {
|
||||||
// given
|
// given
|
||||||
final Set<QuizDay> quizDaySet = new HashSet<>();
|
final Set<QuizDay> quizDaySet = new HashSet<>();
|
||||||
quizDaySet.add(QuizDay.MONDAY);
|
quizDaySet.add(QuizDay.MONDAY);
|
||||||
@@ -60,19 +60,19 @@ class UserRepositoryTest {
|
|||||||
quizCategorySet.add(QuizCategory.DATABASE);
|
quizCategorySet.add(QuizCategory.DATABASE);
|
||||||
quizCategorySet.add(QuizCategory.EXPERIENCE);
|
quizCategorySet.add(QuizCategory.EXPERIENCE);
|
||||||
|
|
||||||
final User user = EntityCreationUtils.user(5, quizDaySet, quizCategorySet);
|
final Member member = EntityCreationUtils.member(5, quizDaySet, quizCategorySet);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
final User result = userRepository.save(user);
|
final Member result = memberRepository.save(member);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(result.getEmail()).isEqualTo(user.getEmail());
|
assertThat(result.getEmail()).isEqualTo(member.getEmail());
|
||||||
assertThat(result.getQuizLevel()).isEqualTo(user.getQuizLevel());
|
assertThat(result.getQuizLevel()).isEqualTo(member.getQuizLevel());
|
||||||
assertThat(result.getQuizSize()).isEqualTo(user.getQuizSize());
|
assertThat(result.getQuizSize()).isEqualTo(member.getQuizSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void updateUserDisabled() {
|
public void updateMemberDisabled() {
|
||||||
// given
|
// given
|
||||||
final Set<QuizDay> quizDaySet = new HashSet<>();
|
final Set<QuizDay> quizDaySet = new HashSet<>();
|
||||||
quizDaySet.add(QuizDay.MONDAY);
|
quizDaySet.add(QuizDay.MONDAY);
|
||||||
@@ -84,14 +84,14 @@ class UserRepositoryTest {
|
|||||||
quizCategorySet.add(QuizCategory.DATABASE);
|
quizCategorySet.add(QuizCategory.DATABASE);
|
||||||
quizCategorySet.add(QuizCategory.EXPERIENCE);
|
quizCategorySet.add(QuizCategory.EXPERIENCE);
|
||||||
|
|
||||||
final User user = EntityCreationUtils.user(3, quizDaySet, quizCategorySet);
|
final Member member = EntityCreationUtils.member(3, quizDaySet, quizCategorySet);
|
||||||
|
|
||||||
final User savedUser = userRepository.save(user);
|
final Member savedMember = memberRepository.save(member);
|
||||||
savedUser.setIsEnable(false);
|
savedMember.setIsEnable(false);
|
||||||
userRepository.save(savedUser);
|
memberRepository.save(savedMember);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
final List<User> result = userRepository.findAllByIsEnableTrueAndQuizDaySetIs(QuizDay.MONDAY);
|
final List<Member> result = memberRepository.findAllByIsEnableTrueAndQuizDaySetIs(QuizDay.MONDAY);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(result.size()).isZero();
|
assertThat(result.size()).isZero();
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
package com.mangkyu.employment.interview.app.user.service;
|
package com.mangkyu.employment.interview.app.member.service;
|
||||||
|
|
||||||
import com.mangkyu.employment.interview.app.user.dto.AddUserRequest;
|
import com.mangkyu.employment.interview.app.member.dto.AddMemberRequest;
|
||||||
import com.mangkyu.employment.interview.app.user.entity.User;
|
import com.mangkyu.employment.interview.app.member.entity.Member;
|
||||||
import com.mangkyu.employment.interview.app.user.repository.UserRepository;
|
import com.mangkyu.employment.interview.app.member.repository.MemberRepository;
|
||||||
import com.mangkyu.employment.interview.config.modelmapper.ModelMapperConfig;
|
import com.mangkyu.employment.interview.config.modelmapper.ModelMapperConfig;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizDay;
|
import com.mangkyu.employment.interview.enums.value.QuizDay;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
@@ -14,7 +13,6 @@ import org.mockito.Mock;
|
|||||||
import org.mockito.Spy;
|
import org.mockito.Spy;
|
||||||
import org.mockito.junit.jupiter.MockitoExtension;
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
import org.modelmapper.ModelMapper;
|
import org.modelmapper.ModelMapper;
|
||||||
import org.modelmapper.config.Configuration;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@@ -25,13 +23,13 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
@ExtendWith(MockitoExtension.class)
|
@ExtendWith(MockitoExtension.class)
|
||||||
class UserServiceTest {
|
class MemberServiceTest {
|
||||||
|
|
||||||
@InjectMocks
|
@InjectMocks
|
||||||
private UserService target;
|
private MemberService target;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private UserRepository userRepository;
|
private MemberRepository memberRepository;
|
||||||
@Spy
|
@Spy
|
||||||
private ModelMapper modelMapper = new ModelMapperConfig().modelMapper();
|
private ModelMapper modelMapper = new ModelMapperConfig().modelMapper();
|
||||||
|
|
||||||
@@ -45,14 +43,14 @@ class UserServiceTest {
|
|||||||
quizDaySet.add(QuizDay.WEDNESDAY);
|
quizDaySet.add(QuizDay.WEDNESDAY);
|
||||||
quizDaySet.add(QuizDay.SATURDAY);
|
quizDaySet.add(QuizDay.SATURDAY);
|
||||||
|
|
||||||
final AddUserRequest addUserRequest = AddUserRequest.builder()
|
final AddMemberRequest addMemberRequest = AddMemberRequest.builder()
|
||||||
.email("whalsrb1226@gmail.com")
|
.email("whalsrb1226@gmail.com")
|
||||||
.quizLevel(QuizLevel.JUNIOR)
|
.quizLevel(QuizLevel.JUNIOR)
|
||||||
.quizDaySet(quizDaySet)
|
.quizDaySet(quizDaySet)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
target.addUser(addUserRequest);
|
target.addUser(addMemberRequest);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
}
|
}
|
||||||
@@ -60,40 +58,40 @@ class UserServiceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void disableUserSuccess() {
|
public void disableUserSuccess() {
|
||||||
// given
|
// given
|
||||||
final User user = user(true);
|
final Member member = user(true);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
target.disableUser(user);
|
target.disableUser(member);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
|
|
||||||
// verify
|
// verify
|
||||||
verify(userRepository, times(1)).save(user);
|
verify(memberRepository, times(1)).save(member);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getEnabledUserListSuccess() {
|
public void getEnabledUserListSuccess() {
|
||||||
// given
|
// given
|
||||||
final List<User> enabledUserList = Arrays.asList(user(true), user(true));
|
final List<Member> enabledMemberList = Arrays.asList(user(true), user(true));
|
||||||
doReturn(enabledUserList).when(userRepository).findAllByIsEnableTrueAndQuizDaySetIs(quizDay);
|
doReturn(enabledMemberList).when(memberRepository).findAllByIsEnableTrueAndQuizDaySetIs(quizDay);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
final List<User> result = target.getEnabledUserList(quizDay);
|
final List<Member> result = target.getEnabledUserList(quizDay);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(result.size()).isEqualTo(enabledUserList.size());
|
assertThat(result.size()).isEqualTo(enabledMemberList.size());
|
||||||
|
|
||||||
// verify
|
// verify
|
||||||
verify(userRepository, times(1)).findAllByIsEnableTrueAndQuizDaySetIs(quizDay);
|
verify(memberRepository, times(1)).findAllByIsEnableTrueAndQuizDaySetIs(quizDay);
|
||||||
}
|
}
|
||||||
|
|
||||||
private User user(final boolean isEnable) {
|
private Member user(final boolean isEnable) {
|
||||||
final User user = User.builder()
|
final Member member = Member.builder()
|
||||||
.email("minkyu@test.com")
|
.email("minkyu@test.com")
|
||||||
.quizLevel(QuizLevel.JUNIOR)
|
.quizLevel(QuizLevel.JUNIOR)
|
||||||
.build();
|
.build();
|
||||||
user.setIsEnable(isEnable);
|
member.setIsEnable(isEnable);
|
||||||
return user;
|
return member;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -202,7 +202,7 @@ class QuizServiceTest {
|
|||||||
quizCategorySet.add(QuizCategory.DATABASE);
|
quizCategorySet.add(QuizCategory.DATABASE);
|
||||||
quizCategorySet.add(QuizCategory.EXPERIENCE);
|
quizCategorySet.add(QuizCategory.EXPERIENCE);
|
||||||
|
|
||||||
doReturn(solvedQuizList).when(solvedQuizRepository).findAllByUser_Id(userId);
|
doReturn(solvedQuizList).when(solvedQuizRepository).findAllByMember_Id(userId);
|
||||||
doReturn(unsolvedQuizList).when(quizRepository).customFindByIdNotInAndQuizCategoryInAndQuizLevel(solvedQuizIdList, quizCategorySet, quizLevel);
|
doReturn(unsolvedQuizList).when(quizRepository).customFindByIdNotInAndQuizCategoryInAndQuizLevel(solvedQuizIdList, quizCategorySet, quizLevel);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
@@ -223,7 +223,7 @@ class QuizServiceTest {
|
|||||||
quizCategorySet.add(QuizCategory.DATABASE);
|
quizCategorySet.add(QuizCategory.DATABASE);
|
||||||
quizCategorySet.add(QuizCategory.EXPERIENCE);
|
quizCategorySet.add(QuizCategory.EXPERIENCE);
|
||||||
|
|
||||||
doReturn(solvedQuizList).when(solvedQuizRepository).findAllByUser_Id(userId);
|
doReturn(solvedQuizList).when(solvedQuizRepository).findAllByMember_Id(userId);
|
||||||
doReturn(unsolvedQuizList).when(quizRepository).customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), quizCategorySet, quizLevel);
|
doReturn(unsolvedQuizList).when(quizRepository).customFindByIdNotInAndQuizCategoryInAndQuizLevel(Collections.emptySet(), quizCategorySet, quizLevel);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import com.mangkyu.employment.interview.JpaTestConfig;
|
|||||||
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.repository.QuizRepository;
|
import com.mangkyu.employment.interview.app.quiz.repository.QuizRepository;
|
||||||
import com.mangkyu.employment.interview.app.solvedquiz.entity.SolvedQuiz;
|
import com.mangkyu.employment.interview.app.solvedquiz.entity.SolvedQuiz;
|
||||||
import com.mangkyu.employment.interview.app.user.entity.User;
|
import com.mangkyu.employment.interview.app.member.entity.Member;
|
||||||
import com.mangkyu.employment.interview.app.user.repository.UserRepository;
|
import com.mangkyu.employment.interview.app.member.repository.MemberRepository;
|
||||||
import com.mangkyu.employment.interview.testutils.EntityCreationUtils;
|
import com.mangkyu.employment.interview.testutils.EntityCreationUtils;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -22,25 +22,25 @@ class SolvedQuizRepositoryTest {
|
|||||||
private QuizRepository quizRepository;
|
private QuizRepository quizRepository;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserRepository userRepository;
|
private MemberRepository memberRepository;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void insertQuiz() {
|
public void insertQuiz() {
|
||||||
// given
|
// given
|
||||||
final User user = EntityCreationUtils.user();
|
final Member member = EntityCreationUtils.member();
|
||||||
final Quiz quiz = EntityCreationUtils.quiz();
|
final Quiz quiz = EntityCreationUtils.quiz();
|
||||||
|
|
||||||
final Quiz quizResult = quizRepository.save(quiz);
|
final Quiz quizResult = quizRepository.save(quiz);
|
||||||
final User userResult = userRepository.save(user);
|
final Member memberResult = memberRepository.save(member);
|
||||||
|
|
||||||
final SolvedQuiz solvedQuiz = EntityCreationUtils.solvedQuiz(quiz, user);
|
final SolvedQuiz solvedQuiz = EntityCreationUtils.solvedQuiz(quiz, member);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
final SolvedQuiz result = solvedQuizRepository.save(solvedQuiz);
|
final SolvedQuiz result = solvedQuizRepository.save(solvedQuiz);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(result.getQuiz()).isEqualTo(quizResult);
|
assertThat(result.getQuiz()).isEqualTo(quizResult);
|
||||||
assertThat(result.getUser()).isEqualTo(userResult);
|
assertThat(result.getMember()).isEqualTo(memberResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
package com.mangkyu.employment.interview.app.solvedquiz.service;
|
package com.mangkyu.employment.interview.app.solvedquiz.service;
|
||||||
|
|
||||||
|
import com.mangkyu.employment.interview.app.member.entity.Member;
|
||||||
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
||||||
import com.mangkyu.employment.interview.app.solvedquiz.repository.SolvedQuizRepository;
|
import com.mangkyu.employment.interview.app.solvedquiz.repository.SolvedQuizRepository;
|
||||||
import com.mangkyu.employment.interview.app.user.entity.User;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
@@ -27,19 +27,19 @@ class SolvedQuizServiceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void addSolvedQuizListSuccess() {
|
public void addSolvedQuizListSuccess() {
|
||||||
// given
|
// given
|
||||||
final User user = user();
|
final Member member = user();
|
||||||
final List<Quiz> quizList = quizList();
|
final List<Quiz> quizList = quizList();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
target.addSolvedQuizList(user, quizList);
|
target.addSolvedQuizList(member, quizList);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
|
|
||||||
// verify
|
// verify
|
||||||
}
|
}
|
||||||
|
|
||||||
private User user() {
|
private Member user() {
|
||||||
return User.builder()
|
return Member.builder()
|
||||||
.email("minkyu@test.com")
|
.email("minkyu@test.com")
|
||||||
.quizLevel(QuizLevel.JUNIOR)
|
.quizLevel(QuizLevel.JUNIOR)
|
||||||
.build();
|
.build();
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
package com.mangkyu.employment.interview.cron;
|
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.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;
|
||||||
import com.mangkyu.employment.interview.app.user.entity.User;
|
import com.mangkyu.employment.interview.app.member.service.MemberService;
|
||||||
import com.mangkyu.employment.interview.app.user.service.UserService;
|
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizDay;
|
import com.mangkyu.employment.interview.enums.value.QuizDay;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
@@ -29,7 +29,7 @@ class SendQuizCronJobTest {
|
|||||||
private SendQuizCronJob target;
|
private SendQuizCronJob target;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private UserService userService;
|
private MemberService memberService;
|
||||||
@Mock
|
@Mock
|
||||||
private QuizService quizService;
|
private QuizService quizService;
|
||||||
@Mock
|
@Mock
|
||||||
@@ -37,19 +37,19 @@ class SendQuizCronJobTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private SolvedQuizService solvedQuizService;
|
private SolvedQuizService solvedQuizService;
|
||||||
|
|
||||||
private User user;
|
private Member member;
|
||||||
private List<User> userList;
|
private List<Member> memberList;
|
||||||
private QuizDay quizDay;
|
private QuizDay quizDay;
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
public void init() {
|
public void init() {
|
||||||
user = User.builder()
|
member = Member.builder()
|
||||||
.email("minkyu@test.com")
|
.email("minkyu@test.com")
|
||||||
.quizLevel(QuizLevel.JUNIOR)
|
.quizLevel(QuizLevel.JUNIOR)
|
||||||
.quizSize(3)
|
.quizSize(3)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
userList = Collections.singletonList(user);
|
memberList = Collections.singletonList(member);
|
||||||
quizDay = QuizDay.findQuizDay(LocalDate.now().getDayOfWeek());
|
quizDay = QuizDay.findQuizDay(LocalDate.now().getDayOfWeek());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ class SendQuizCronJobTest {
|
|||||||
public void sendQuizMailDaily_UserNotExists() {
|
public void sendQuizMailDaily_UserNotExists() {
|
||||||
// given
|
// given
|
||||||
doReturn(Collections.emptyList())
|
doReturn(Collections.emptyList())
|
||||||
.when(userService)
|
.when(memberService)
|
||||||
.getEnabledUserList(quizDay);
|
.getEnabledUserList(quizDay);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
@@ -66,11 +66,11 @@ class SendQuizCronJobTest {
|
|||||||
// then
|
// then
|
||||||
|
|
||||||
// verify
|
// verify
|
||||||
verify(quizService, times(0)).getUnsolvedQuizList(user.getId(), user.getQuizLevel(), user.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(userService, times(0)).disableUser(user);
|
verify(memberService, 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(User.class), anyList());
|
verify(solvedQuizService, times(0)).addSolvedQuizList(any(Member.class), anyList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -79,15 +79,15 @@ class SendQuizCronJobTest {
|
|||||||
final List<Quiz> unsolvedQuizList = quizList(5);
|
final List<Quiz> unsolvedQuizList = quizList(5);
|
||||||
final List<Quiz> randomQuizList = unsolvedQuizList.subList(0, 3);
|
final List<Quiz> randomQuizList = unsolvedQuizList.subList(0, 3);
|
||||||
|
|
||||||
doReturn(userList)
|
doReturn(memberList)
|
||||||
.when(userService)
|
.when(memberService)
|
||||||
.getEnabledUserList(quizDay);
|
.getEnabledUserList(quizDay);
|
||||||
doReturn(unsolvedQuizList)
|
doReturn(unsolvedQuizList)
|
||||||
.when(quizService)
|
.when(quizService)
|
||||||
.getUnsolvedQuizList(user.getId(), user.getQuizLevel(), user.getQuizCategorySet());
|
.getUnsolvedQuizList(member.getId(), member.getQuizLevel(), member.getQuizCategorySet());
|
||||||
doReturn(randomQuizList)
|
doReturn(randomQuizList)
|
||||||
.when(quizService)
|
.when(quizService)
|
||||||
.getRandomQuizListUnderLimit(unsolvedQuizList, user.getQuizSize());
|
.getRandomQuizListUnderLimit(unsolvedQuizList, member.getQuizSize());
|
||||||
|
|
||||||
// when
|
// when
|
||||||
target.sendQuizMail();
|
target.sendQuizMail();
|
||||||
@@ -95,11 +95,11 @@ class SendQuizCronJobTest {
|
|||||||
// then
|
// then
|
||||||
|
|
||||||
// verify
|
// verify
|
||||||
verify(quizService, times(1)).getUnsolvedQuizList(user.getId(), user.getQuizLevel(), user.getQuizCategorySet());
|
verify(quizService, times(1)).getUnsolvedQuizList(member.getId(), member.getQuizLevel(), member.getQuizCategorySet());
|
||||||
verify(quizService, times(1)).getRandomQuizListUnderLimit(unsolvedQuizList, user.getQuizSize());
|
verify(quizService, times(1)).getRandomQuizListUnderLimit(unsolvedQuizList, member.getQuizSize());
|
||||||
verify(userService, times(0)).disableUser(user);
|
verify(memberService, times(0)).disableUser(member);
|
||||||
verify(mailService, times(1)).sendMail(user.getEmail(), randomQuizList, false);
|
verify(mailService, times(1)).sendMail(member.getEmail(), randomQuizList, false);
|
||||||
verify(solvedQuizService, times(1)).addSolvedQuizList(user, randomQuizList);
|
verify(solvedQuizService, times(1)).addSolvedQuizList(member, randomQuizList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -108,15 +108,15 @@ class SendQuizCronJobTest {
|
|||||||
final List<Quiz> unsolvedQuizList = quizList(3);
|
final List<Quiz> unsolvedQuizList = quizList(3);
|
||||||
final List<Quiz> randomQuizList = unsolvedQuizList.subList(0, 3);
|
final List<Quiz> randomQuizList = unsolvedQuizList.subList(0, 3);
|
||||||
|
|
||||||
doReturn(userList)
|
doReturn(memberList)
|
||||||
.when(userService)
|
.when(memberService)
|
||||||
.getEnabledUserList(quizDay);
|
.getEnabledUserList(quizDay);
|
||||||
doReturn(unsolvedQuizList)
|
doReturn(unsolvedQuizList)
|
||||||
.when(quizService)
|
.when(quizService)
|
||||||
.getUnsolvedQuizList(user.getId(), user.getQuizLevel(), user.getQuizCategorySet());
|
.getUnsolvedQuizList(member.getId(), member.getQuizLevel(), member.getQuizCategorySet());
|
||||||
doReturn(randomQuizList)
|
doReturn(randomQuizList)
|
||||||
.when(quizService)
|
.when(quizService)
|
||||||
.getRandomQuizListUnderLimit(unsolvedQuizList, user.getQuizSize());
|
.getRandomQuizListUnderLimit(unsolvedQuizList, member.getQuizSize());
|
||||||
|
|
||||||
// when
|
// when
|
||||||
target.sendQuizMail();
|
target.sendQuizMail();
|
||||||
@@ -124,11 +124,11 @@ class SendQuizCronJobTest {
|
|||||||
// then
|
// then
|
||||||
|
|
||||||
// verify
|
// verify
|
||||||
verify(quizService, times(1)).getUnsolvedQuizList(user.getId(), user.getQuizLevel(), user.getQuizCategorySet());
|
verify(quizService, times(1)).getUnsolvedQuizList(member.getId(), member.getQuizLevel(), member.getQuizCategorySet());
|
||||||
verify(quizService, times(1)).getRandomQuizListUnderLimit(unsolvedQuizList, user.getQuizSize());
|
verify(quizService, times(1)).getRandomQuizListUnderLimit(unsolvedQuizList, member.getQuizSize());
|
||||||
verify(userService, times(1)).disableUser(user);
|
verify(memberService, times(1)).disableUser(member);
|
||||||
verify(mailService, times(1)).sendMail(user.getEmail(), randomQuizList, true);
|
verify(mailService, times(1)).sendMail(member.getEmail(), randomQuizList, true);
|
||||||
verify(solvedQuizService, times(1)).addSolvedQuizList(user, randomQuizList);
|
verify(solvedQuizService, times(1)).addSolvedQuizList(member, randomQuizList);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Quiz> quizList(final int size) {
|
private List<Quiz> quizList(final int size) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package com.mangkyu.employment.interview.testutils;
|
|||||||
import com.mangkyu.employment.interview.app.answer.entity.Answer;
|
import com.mangkyu.employment.interview.app.answer.entity.Answer;
|
||||||
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
import com.mangkyu.employment.interview.app.quiz.entity.Quiz;
|
||||||
import com.mangkyu.employment.interview.app.solvedquiz.entity.SolvedQuiz;
|
import com.mangkyu.employment.interview.app.solvedquiz.entity.SolvedQuiz;
|
||||||
import com.mangkyu.employment.interview.app.user.entity.User;
|
import com.mangkyu.employment.interview.app.member.entity.Member;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
import com.mangkyu.employment.interview.enums.value.QuizCategory;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizDay;
|
import com.mangkyu.employment.interview.enums.value.QuizDay;
|
||||||
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
import com.mangkyu.employment.interview.enums.value.QuizLevel;
|
||||||
@@ -38,20 +38,20 @@ public final class EntityCreationUtils {
|
|||||||
return quiz;
|
return quiz;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static User user() {
|
public static Member member() {
|
||||||
final User user = User.builder()
|
final Member member = Member.builder()
|
||||||
.resourceId(UUID.randomUUID().toString())
|
.resourceId(UUID.randomUUID().toString())
|
||||||
.email("minkyu@test.com")
|
.email("minkyu@test.com")
|
||||||
.quizLevel(QuizLevel.JUNIOR)
|
.quizLevel(QuizLevel.JUNIOR)
|
||||||
.solvedQuizList(Collections.emptyList())
|
.solvedQuizList(Collections.emptyList())
|
||||||
.build();
|
.build();
|
||||||
ReflectionTestUtils.setField(user, "createdAt", LocalDateTime.now());
|
ReflectionTestUtils.setField(member, "createdAt", LocalDateTime.now());
|
||||||
|
|
||||||
return user;
|
return member;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static User user(final int quizSize, final Set<QuizDay> daySet, final Set<QuizCategory> categorySet) {
|
public static Member member(final int quizSize, final Set<QuizDay> daySet, final Set<QuizCategory> categorySet) {
|
||||||
final User user = User.builder()
|
final Member member = Member.builder()
|
||||||
.resourceId( UUID.randomUUID().toString())
|
.resourceId( UUID.randomUUID().toString())
|
||||||
.email("minkyu@test.com")
|
.email("minkyu@test.com")
|
||||||
.quizLevel(QuizLevel.JUNIOR)
|
.quizLevel(QuizLevel.JUNIOR)
|
||||||
@@ -60,15 +60,15 @@ public final class EntityCreationUtils {
|
|||||||
.quizDaySet(daySet)
|
.quizDaySet(daySet)
|
||||||
.quizCategorySet(categorySet)
|
.quizCategorySet(categorySet)
|
||||||
.build();
|
.build();
|
||||||
ReflectionTestUtils.setField(user, "createdAt", LocalDateTime.now());
|
ReflectionTestUtils.setField(member, "createdAt", LocalDateTime.now());
|
||||||
|
|
||||||
return user;
|
return member;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SolvedQuiz solvedQuiz(final Quiz quiz, final User user) {
|
public static SolvedQuiz solvedQuiz(final Quiz quiz, final Member member) {
|
||||||
return SolvedQuiz.builder()
|
return SolvedQuiz.builder()
|
||||||
.quiz(quiz)
|
.quiz(quiz)
|
||||||
.user(user)
|
.member(member)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user