Skip to content

Commit

Permalink
test(#45): 유저 아이디 찾기 테스트 코드 작성
Browse files Browse the repository at this point in the history
  • Loading branch information
memoer committed Aug 3, 2022
1 parent 42a4550 commit 533f7f9
Show file tree
Hide file tree
Showing 14 changed files with 111 additions and 69 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);

Optional<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);
}
}

20 changes: 14 additions & 6 deletions src/test/java/com/testutil/config/TestDatabaseConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,19 +36,27 @@ DataSource dataSource() {

private void clear(DriverManagerDataSource dataSource) {
JdbcTemplate template = new JdbcTemplate(dataSource);
template.update("delete from `user` where `id` = 1");
template.update("delete from `user` where `id` = " + UserEntityFixture.ID);
}

private void initData(DriverManagerDataSource dataSource) {
JdbcTemplate template = new JdbcTemplate(dataSource);
String sql =
"insert into `user` (id, email, password, name, gender, phone_number, address, is_active, birthdate, created_at, updated_at, deleted_at) "
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
UserEntity user = UserEntityFixture.getBuilder().build();
template.update(
"insert into `user` (id, email, password, name, gender, phone_number, address, is_active," +
"birthdate, created_at, updated_at, deleted_at)" +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
user.getId(), user.getEmail(), user.getPassword(), user.getName(), user.getGender().name(),
sql,
user.getId(),
user.getEmail(),
user.getPassword(),
user.getName(),
user.getGender().name(),
user.getPhoneNumber(),
user.getAddress(), user.isActive(), user.getBirthDate(), user.getCreatedAt(),
user.getAddress(),
user.isActive(),
user.getBirthDate(),
user.getCreatedAt(),
user.getUpdatedAt(),
user.getDeletedAt()
);
Expand Down
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 533f7f9

Please sign in to comment.