Skip to content

Commit

Permalink
test(#45): 유저 아이디 찾기 테스트 코드 작성
Browse files Browse the repository at this point in the history
  • Loading branch information
memoer committed Jul 29, 2022
1 parent d5c4e80 commit 6f638f1
Show file tree
Hide file tree
Showing 13 changed files with 97 additions and 63 deletions.
9 changes: 4 additions & 5 deletions src/main/java/com/airjnc/user/dao/UserRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,13 @@

public interface UserRepository {

UserEntity findById(Long id);
void remove(Long id);

UserEntity findByEmail(String email);
UserEntity save(CreateDTO createDTO);

String getEmail(FindEmailDTO findEmailDTO);

UserEntity save(CreateDTO createDTO);

UserEntity findByEmail(String email);

void remove(Long id);
UserEntity findById(Long id);
}
22 changes: 11 additions & 11 deletions src/main/java/com/airjnc/user/dao/impl/MybatisUserRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,16 @@ public class MybatisUserRepository implements UserRepository {
private final UserModelMapper userModelMapper;

@Override
public UserEntity findById(Long id) {
return userMapper.findById(id).orElseThrow(NotFoundException::new);
public void remove(Long id) {
int affect = userMapper.remove(id);
commonInternalCheckService.shouldBeMatch(affect, 1);
}

@Override
public UserEntity findByEmail(String email) {
return userMapper.findByEmail(email).orElseThrow(NotFoundException::new);
public UserEntity save(CreateDTO createDTO) {
int affect = userMapper.save(createDTO);
commonInternalCheckService.shouldBeMatch(affect, 1);
return userModelMapper.createDTOToUserEntity(createDTO);
}

@Override
Expand All @@ -37,15 +40,12 @@ public String getEmail(FindEmailDTO findEmailDTO) {
}

@Override
public UserEntity save(CreateDTO createDTO) {
int affect = userMapper.save(createDTO);
commonInternalCheckService.shouldBeMatch(affect, 1);
return userModelMapper.createDTOToUserEntity(createDTO);
public UserEntity findById(Long id) {
return userMapper.findById(id).orElseThrow(NotFoundException::new);
}

@Override
public void remove(Long id) {
int affect = userMapper.remove(id);
commonInternalCheckService.shouldBeMatch(affect, 1);
public UserEntity findByEmail(String email) {
return userMapper.findByEmail(email).orElseThrow(NotFoundException::new);
}
}
8 changes: 4 additions & 4 deletions src/main/java/com/airjnc/user/dao/mapper/UserMapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@
@Mapper
public interface UserMapper {

Optional<UserEntity> findById(Long id);
int remove(Long id);

Optional<UserEntity> findByEmail(String email);
int save(CreateDTO createDTO);

String getEmail(FindEmailDTO findEmailDTO);

int save(CreateDTO createDTO);
Optional<UserEntity> findById(Long id);

int remove(Long id);
Optional<UserEntity> findByEmail(String email);
}
9 changes: 7 additions & 2 deletions src/main/java/com/airjnc/user/dto/request/FindEmailDTO.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,21 @@
import com.airjnc.common.util.CommonRegex;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import lombok.Builder;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
public class FindEmailDTO {

@NotNull
private final String name;

@Pattern(regexp = CommonRegex.localDate)
private final String birthDate;

@Builder
public FindEmailDTO(String name, String birthDate) {
this.name = name;
this.birthDate = birthDate;
}
}
2 changes: 1 addition & 1 deletion src/main/resources/mybatis/mapper/user.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
SELECT email
FROM user
WHERE name = #{name}
AND birthdate = ${birthDate};
AND birthdate = #{birthDate};
</select>
<select id="findById" resultType="UserEntity">
SELECT *
Expand Down
22 changes: 16 additions & 6 deletions src/test/java/com/airjnc/user/controller/UserControllerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,22 @@
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import com.airjnc.common.aspect.Advice;
import com.airjnc.common.resolver.CurrentUserIdArgumentResolver;
import com.airjnc.user.dto.request.CreateDTO;
import com.airjnc.user.dto.request.FindEmailDTO;
import com.airjnc.user.dto.response.UserDTO;
import com.airjnc.user.service.UserService;
import com.airjnc.user.service.UserStateService;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.testutil.annotation.AopTest;
import com.testutil.fixture.CreateDTOFixture;
import com.testutil.fixture.FindEmailDTOFixture;
import com.testutil.fixture.UserDTOFixture;
import java.time.LocalDate;
import com.testutil.fixture.UserEntityFixture;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
Expand Down Expand Up @@ -53,12 +56,19 @@ class UserControllerTest {

@Test
void findEmail() throws Exception {
LocalDate now = LocalDate.now();
//given
FindEmailDTO findEmailDTO = FindEmailDTOFixture.getBuilder().build();
given(userService.findEmail(any(FindEmailDTO.class))).willReturn(UserEntityFixture.EMAIL);
//when
mockMvc.perform(
get("/users/findEmail")
.param("email", "hanjn2842@naver.com")
.param("birthDate", "2022-01-02")
).andDo(print());
get("/users/findEmail")
.param("name", findEmailDTO.getName())
.param("birthDate", findEmailDTO.getBirthDate())
).andDo(print())
.andExpect(status().isOk())
.andExpect(content().string(UserEntityFixture.EMAIL));
//then
then(userService).should(times(1)).findEmail(any(FindEmailDTO.class));
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.airjnc.user.domain.Gender;
import com.airjnc.user.domain.UserEntity;
import com.airjnc.user.dto.request.CreateDTO;
import com.airjnc.user.dto.request.FindEmailDTO;
import com.airjnc.user.util.UserModelMapper;
import com.testutil.annotation.MybatisTest;
import com.testutil.fixture.UserEntityFixture;
Expand Down Expand Up @@ -62,6 +63,20 @@ void findByEmail() {
assertThat(findUser.getEmail()).isEqualTo(user.getEmail());
}

@Test
void getEmail() {
//given
UserEntity user = UserEntityFixture.getBuilder().build();
FindEmailDTO findEmailDTO = FindEmailDTO.builder()
.name(user.getName())
.birthDate(user.getBirthDate().toString())
.build();
//when
String email = userRepository.getEmail(findEmailDTO);
//then
assertThat(email).isEqualTo(user.getEmail());
}

@Test
@Transactional
void save() {
Expand Down
16 changes: 14 additions & 2 deletions src/test/java/com/airjnc/user/service/UserServiceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,12 @@
import com.airjnc.user.dao.UserRepository;
import com.airjnc.user.domain.UserEntity;
import com.airjnc.user.dto.request.CreateDTO;
import com.airjnc.user.dto.request.FindEmailDTO;
import com.airjnc.user.dto.response.UserDTO;
import com.airjnc.user.util.UserModelMapper;
import com.testutil.annotation.UnitTest;
import com.testutil.fixture.CreateDTOFixture;
import com.testutil.fixture.FindEmailDTOFixture;
import com.testutil.fixture.UserDTOFixture;
import com.testutil.fixture.UserEntityFixture;
import org.junit.jupiter.api.Test;
Expand All @@ -38,7 +40,7 @@ class UserServiceTest {
UserService userService;

@Test()
void userShouldBeCreated() {
void create() {
//given
CreateDTO createDTO = spy(CreateDTOFixture.getBuilder().build());
UserEntity userEntity = UserEntityFixture.getBuilder().build();
Expand All @@ -57,13 +59,23 @@ void userShouldBeCreated() {
}

@Test
void userShouldBeRemoved() {
void remove() {
//given
UserEntity userEntity = UserEntityFixture.getBuilder().build();
//when
userService.remove(userEntity.getId());
//then
then(userRepository).should(times(1)).remove(userEntity.getId());
}

@Test
void findEmail() {
//given
FindEmailDTO findEmailDTO = FindEmailDTOFixture.getBuilder().build();
//when
userService.findEmail(findEmailDTO);
//then
then(userRepository).should(times(1)).getEmail(findEmailDTO);
}
}

8 changes: 4 additions & 4 deletions src/test/java/com/testutil/fixture/CreateDTOFixture.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@

public class CreateDTOFixture {

public static final String EMAIL = "test@naver.com";
public static final String EMAIL = "test2@naver.com";

public static final String PASSWORD = "q1w2e3r4!";

public static final String NAME = "testUser";
public static final String NAME = "testUser2";

public static final Gender GENDER = Gender.MALE;
public static final Gender GENDER = Gender.FEMALE;

public static final String birthDate = "2020-01-01";
public static final String birthDate = "2021-02-02";

public static CreateDTO.CreateDTOBuilder getBuilder() {
return CreateDTO.builder()
Expand Down
12 changes: 12 additions & 0 deletions src/test/java/com/testutil/fixture/FindEmailDTOFixture.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.testutil.fixture;

import com.airjnc.user.dto.request.FindEmailDTO;

public class FindEmailDTOFixture {

public static FindEmailDTO.FindEmailDTOBuilder getBuilder() {
return FindEmailDTO.builder()
.name(UserEntityFixture.NAME)
.birthDate(UserEntityFixture.BIRTH_DATE.toString());
}
}
5 changes: 1 addition & 4 deletions src/test/java/com/testutil/fixture/LogInDTOFixture.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,8 @@

public class LogInDTOFixture {

public static final String EMAIL = "test@naver.com";

public static final String PASSWORD = "q1w2e3r4!";

public static LogInDTO.LogInDTOBuilder getBuilder() {
return LogInDTO.builder().email(EMAIL).password(PASSWORD);
return LogInDTO.builder().email(UserEntityFixture.EMAIL).password(UserEntityFixture.PASSWORD);
}
}
30 changes: 7 additions & 23 deletions src/test/java/com/testutil/fixture/UserDTOFixture.java
Original file line number Diff line number Diff line change
@@ -1,33 +1,17 @@
package com.testutil.fixture;

import com.airjnc.user.domain.Gender;
import com.airjnc.user.dto.response.UserDTO;
import java.time.LocalDate;

public class UserDTOFixture {

public static final Long ID = 2L;

public static final String EMAIL = "test@naver.com";

public static final String NAME = "testUser";

public static final Gender GENDER = Gender.MALE;

public static final String PHONE_NUMBER = "010-1111-2222";

public static final String ADDRESS = "서울 강남구";

public static final LocalDate BIRTH_DATE = LocalDate.of(2000, 5, 15);

public static UserDTO.UserDTOBuilder getBuilder() {
return UserDTO.builder()
.id(ID)
.email(EMAIL)
.name(NAME)
.gender(GENDER)
.phoneNumber(PHONE_NUMBER)
.address(ADDRESS)
.birthDate(BIRTH_DATE);
.id(UserEntityFixture.ID)
.email(UserEntityFixture.EMAIL)
.name(UserEntityFixture.NAME)
.gender(UserEntityFixture.GENDER)
.phoneNumber(UserEntityFixture.PHONE_NUMBER)
.address(UserEntityFixture.ADDRESS)
.birthDate(UserEntityFixture.BIRTH_DATE);
}
}
2 changes: 1 addition & 1 deletion src/test/java/com/testutil/fixture/UserEntityFixture.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public class UserEntityFixture {

public static final boolean IS_ACTIVE = true;

public static final LocalDate BIRTH_DATE = LocalDate.of(2000, 5, 15);
public static final LocalDate BIRTH_DATE = LocalDate.of(2020, 1, 1);

public static final LocalDateTime CREATED_AT = LocalDateTime.of(2022, 1, 1, 9, 0);

Expand Down

0 comments on commit 6f638f1

Please sign in to comment.