Skip to content

Commit

Permalink
[TEST] refactor user domain
Browse files Browse the repository at this point in the history
  • Loading branch information
nogamsung committed Jan 20, 2024
1 parent a673bc9 commit f94fdec
Show file tree
Hide file tree
Showing 7 changed files with 291 additions and 318 deletions.
9 changes: 3 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,11 @@
---

## Link

- ### [API Status](https://uptime-kuma.nogamsung.com/status/gabojait)
- ### [Test API Swagger](https://gabojait-dev.nogamsung.com/api/v1/docs/swagger-ui/index.html)
- ### [Breakpoint Test](docs/breakpoint-test.md)
- ### [Convention](docs/convention.md)
- ### [Client Repository](https://github.com/gabojait/gabojait-react-native)

---
Expand All @@ -55,11 +57,6 @@
---

## Monitoring

- ### [Uptime Kuma](https://uptime-kuma.nogamsung.com/status/gabojait)
- ### Sentry

---

## Rule
- ### [Commit Convention](https://doublesprogramming.tistory.com/256)
- ### [Semantic Versioning](https://semver.org/lang/ko/)
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
class ContactTest {

@Test
@DisplayName("연락처를 생성한다.")
void builder() {
@DisplayName("연락처 생성이 정상 작동한다")
void givenValid_whenBuilder_thenReturn() {
// given
String email = "tester@gabojait.com";
String verificationCode = "000000";
Expand All @@ -29,8 +29,8 @@ void builder() {
}

@Test
@DisplayName("연락처 인증을 한다.")
void verified() {
@DisplayName("연락처 인증이 정상 작동한다")
void givenValid_whenVerified_thenReturn() {
// given
String email = "tester@gabojait.com";
String verificationCode = "000000";
Expand Down Expand Up @@ -72,9 +72,9 @@ private static Stream<Arguments> providerEquals() {
);
}

@ParameterizedTest(name = "[{index}] 연락처 객체를 비교한다.")
@ParameterizedTest(name = "[{index}] 연락처 객체를 비교한다")
@MethodSource("providerEquals")
@DisplayName("연락처 객체를 비교한다.")
@DisplayName("연락처 객체 비교이 정상 작동한다")
void givenProvider_whenEquals_thenReturn(Contact contact, Object object, boolean result) {
// when & then
assertThat(contact.equals(object)).isEqualTo(result);
Expand All @@ -95,9 +95,9 @@ private static Stream<Arguments> providerHashCode() {
);
}

@ParameterizedTest(name = "[{index}] 연락처 해시코드를 비교한다.")
@ParameterizedTest(name = "[{index}] 연락처 해시코드를 비교한다")
@MethodSource("providerHashCode")
@DisplayName("연락처 해시코드를 비교한다.")
@DisplayName("연락처 해시코드 비교가 정상 작동한다")
void givenProvider_whenHashCode_thenReturn(Contact contact1, Contact contact2, boolean result) {
// when
int hashCode1 = contact1.hashCode();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,17 @@ private static Stream<Arguments> providerGetText() {
);
}

@ParameterizedTest(name = "[{index}] {0} 성별 텍스트는 {1}다.")
@ParameterizedTest(name = "[{index}] {0} 성별 텍스트는 {1}다")
@MethodSource("providerGetText")
@DisplayName("성별 텍스트를 반환한다.")
@DisplayName("성별 텍스트 반환이 정상 작동한다")
void givenProvider_whenGetText_thenReturn(Gender gender, String text) {
// when & then
assertThat(gender.getText()).isEqualTo(text);
}

@Test
@DisplayName("전체 성별을 반환한다.")
void values() {
@DisplayName("전체 성별 반환이 정상 작동한다")
void givenValid_whenValues_thenReturn() {
// given & when
Gender[] genders = Gender.values();

Expand All @@ -47,16 +47,16 @@ private static Stream<Arguments> providerValueOf() {
);
}

@ParameterizedTest(name = "[{index}] {0} 값을 {1} 성별로 변환한다.")
@ParameterizedTest(name = "[{index}] {0} 값을 {1} 성별로 변환한다")
@MethodSource("providerValueOf")
@DisplayName("성별 값을 변환한다.")
@DisplayName("성별 값 변환이 정상 작동한다")
void givenProvider_whenValueOf_thenReturn(String value, Gender gender) {
// when & then
assertThat(Gender.valueOf(value)).isEqualTo(gender);
}

@Test
@DisplayName("잘못된 값을 성별로 변환하면 예외가 발생한다.")
@DisplayName("잘못된 값을 성별로 변환하면 예외가 발생한다")
void givenInvalid_whenValueOf_thenThrow() {
// given
String value = "INVALID";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,17 @@ private static Stream<Arguments> providerGetText() {
);
}

@ParameterizedTest(name = "[{index}] {0} 포지션 텍스트는 {1}다.")
@ParameterizedTest(name = "[{index}] {0} 포지션 텍스트는 {1}다")
@MethodSource("providerGetText")
@DisplayName("포지션 텍스트를 반환한다.")
@DisplayName("포지션 텍스트 반환이 정상 작동한다")
void givenProvider_whenGetText_thenReturn(Position position, String text) {
// when & then
assertThat(position.getText()).isEqualTo(text);
}

@Test
@DisplayName("전체 포지션을 반환한다.")
void values() {
@DisplayName("전체 포지션 반환이 정상 작동한다")
void givenValid_whenValues_thenReturn() {
// given & when
Position[] positions = Position.values();

Expand All @@ -52,16 +52,16 @@ private static Stream<Arguments> providerValueOf() {
);
}

@ParameterizedTest(name = "[{index}] {0} 값을 {1} 포지션으로 변환한다.")
@ParameterizedTest(name = "[{index}] {0} 값을 {1} 포지션으로 변환한다")
@MethodSource("providerValueOf")
@DisplayName("포지션 값을 변환한다.")
@DisplayName("포지션 값을 변환이 정상 작동한다")
void givenProvider_whenValueOf_thenReturn(String value, Position position) {
// when & then
assertThat(Position.valueOf(value)).isEqualTo(position);
}

@Test
@DisplayName("잘못된 값을 포지션으로 변환하면 예외가 발생한다.")
@DisplayName("잘못된 값을 포지션으로 변환하면 예외가 발생한다")
void givenInvalid_whenValueOf_thenThrow() {
// given
String s = "INVALID";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,17 @@ private static Stream<Arguments> providerGetText() {
);
}

@ParameterizedTest(name = "[{index}] {0} 권한 텍스트는 {1}다.")
@ParameterizedTest(name = "[{index}] {0} 권한 텍스트는 {1}다")
@MethodSource("providerGetText")
@DisplayName("권한 텍스트를 반환한다.")
@DisplayName("권한 텍스트 반환이 정상 작동한다")
void givenProvider_whenGetText_thenReturn(Role role, String text) {
// when & then
assertThat(role.getText()).isEqualTo(text);
}

@Test
@DisplayName("전체 권한을 반환한다.")
void values() {
@DisplayName("전체 권한 반환이 정상 작동한다")
void givenValid_whenValues_thenReturn() {
// given & when
Role[] roles = Role.values();

Expand All @@ -47,9 +47,9 @@ private static Stream<Arguments> providerValueOf() {
);
}

@ParameterizedTest(name = "[{index}] {0} 값을 {1} 권한으로 변환한다.")
@ParameterizedTest(name = "[{index}] {0} 값을 {1} 권한으로 변환한다")
@MethodSource("providerValueOf")
@DisplayName("권한 값을 변환한다.")
@DisplayName("권한 값 변환이 정상 작동한다")
void givenProvider_whenValueOf_thenReturn(String value, Role role) {
// when & then
assertThat(Role.valueOf(value)).isEqualTo(role);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,96 +11,85 @@
import java.util.stream.Stream;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertAll;

class UserRoleTest {

@Test
@DisplayName("회원 권한을 생성한다.")
void builder() {
@DisplayName("회원 권한 생성이 정상 작동한다")
void givenValid_whenBuilder_thenReturn() {
// given
String email = "tester@gabojait.com";
String verificationCode = "000000";
String username = "tester";
String password = "password1!";
String nickname = "테스터";
Gender gender = Gender.M;
LocalDate birthdate = LocalDate.of(1997, 2, 11);
LocalDateTime now = LocalDateTime.now();
User user = createDefaultUser("tester", LocalDateTime.now());
Role role = Role.USER;

// when
UserRole userRole = createDefaultUserRole(email, verificationCode, username, password, nickname, gender,
birthdate, now, role);
UserRole userRole = createDefaultUserRole(role, user);

// then
assertThat(userRole.getRole()).isEqualTo(role);
assertAll(
() -> assertThat(userRole.getRole()).isEqualTo(role),
() -> assertThat(userRole.getUser()).isEqualTo(user)
);
}

private static Stream<Arguments> providerEquals() {
LocalDateTime now = LocalDateTime.now();

UserRole userRole = createDefaultUserRole("tester@gabojait.com", "000000", "tester", "password1!", "테스터",
Gender.N, LocalDate.of(1997, 2, 11), now, Role.USER);
User user = createDefaultUser("tester", now);
UserRole userRole = createDefaultUserRole(Role.USER, user);

User user1 = createDefaultUser("tester1", now);
User user2 = createDefaultUser("tester2", now);

return Stream.of(
Arguments.of(userRole, userRole, true),
Arguments.of(userRole, new Object(), false),
Arguments.of(
createDefaultUserRole("tester@gabojait.com", "000000", "tester", "password1!", "테스터",
Gender.N, LocalDate.of(1997, 2, 11), now, Role.USER),
createDefaultUserRole("tester@gabojait.com", "000000", "tester", "password1!", "테스터",
Gender.N, LocalDate.of(1997, 2, 11), now, Role.USER),
createDefaultUserRole(Role.USER, user),
createDefaultUserRole(Role.USER, user),
true
),
Arguments.of(
createDefaultUserRole("tester@gabojait.com", "000000", "tester1", "password1!", "테스터",
Gender.N, LocalDate.of(1997, 2, 11), now, Role.USER),
createDefaultUserRole("tester@gabojait.com", "000000", "tester2", "password1!", "테스터",
Gender.N, LocalDate.of(1997, 2, 11), now, Role.USER),
createDefaultUserRole(Role.USER, user1),
createDefaultUserRole(Role.USER, user2),
false
),
Arguments.of(
createDefaultUserRole("tester@gabojait.com", "000000", "tester", "password1!", "테스터",
Gender.N, LocalDate.of(1997, 2, 11), now, Role.USER),
createDefaultUserRole("tester@gabojait.com", "000000", "tester", "password1!", "테스터",
Gender.N, LocalDate.of(1997, 2, 11), now, Role.ADMIN),
createDefaultUserRole(Role.USER, user),
createDefaultUserRole(Role.ADMIN, user),
false
)
);
}

@ParameterizedTest(name = "[{index}] 권한 객체를 비교한다.")
@ParameterizedTest(name = "[{index}] 권한 객체를 비교한다")
@MethodSource("providerEquals")
@DisplayName("권한 객체를 비교한다.")
@DisplayName("권한 객체 비교가 정상 작동한다")
void givenProvider_whenEquals_thenReturn(UserRole userRole, Object object, boolean result) {
// when & then
assertThat(userRole.equals(object)).isEqualTo(result);
}

private static Stream<Arguments> providerHashCode() {
LocalDateTime now = LocalDateTime.now();
User user = createDefaultUser("tester", LocalDateTime.now());

return Stream.of(
Arguments.of(
createDefaultUserRole("tester@gabojait.com", "000000", "tester", "password1!", "테스터",
Gender.N, LocalDate.of(1997, 2, 11), now, Role.USER),
createDefaultUserRole("tester@gabojait.com", "000000", "tester", "password1!", "테스터",
Gender.N, LocalDate.of(1997, 2, 11), now, Role.USER),
createDefaultUserRole(Role.USER, user),
createDefaultUserRole(Role.USER, user),
true
),
Arguments.of(
createDefaultUserRole("tester@gabojait.com", "000000", "tester", "password1!", "테스터",
Gender.N, LocalDate.of(1997, 2, 11), now, Role.USER),
createDefaultUserRole("tester@gabojait.com", "000000", "tester", "password1!", "테스터",
Gender.N, LocalDate.of(1997, 2, 11), now, Role.ADMIN),
createDefaultUserRole(Role.USER, user),
createDefaultUserRole(Role.ADMIN, user),
false
)
);
}

@ParameterizedTest(name = "[{index}] 권한 해시코드를 비교한다.")
@ParameterizedTest(name = "[{index}] 권한 해시코드를 비교한다")
@MethodSource("providerHashCode")
@DisplayName("권한 해시코드를 비교한다.")
@DisplayName("권한 해시코드 비교가 정상 작동한다")
void givenProvider_whenHashCode_thenReturn(UserRole userRole1, UserRole userRole2, boolean result) {
// when
int hashCode1 = userRole1.hashCode();
Expand All @@ -110,34 +99,28 @@ void givenProvider_whenHashCode_thenReturn(UserRole userRole1, UserRole userRole
assertThat(hashCode1 == hashCode2).isEqualTo(result);
}

private static UserRole createDefaultUserRole(String email,
String verificationCode,
String username,
String password,
String nickname,
Gender gender,
LocalDate birthdate,
LocalDateTime lastRequestAt,
Role role) {
private static UserRole createDefaultUserRole(Role role, User user) {
return UserRole.builder()
.user(user)
.role(role)
.build();
}

private static User createDefaultUser(String username, LocalDateTime lastRequestAt) {
Contact contact = Contact.builder()
.email(email)
.verificationCode(verificationCode)
.email("tester@gabojait.com")
.verificationCode("000000")
.build();
contact.verified();

User user = User.builder()
return User.builder()
.username(username)
.password(password)
.nickname(nickname)
.gender(gender)
.birthdate(birthdate)
.password("password1!")
.nickname("테스터")
.gender(Gender.M)
.birthdate(LocalDate.of(1997, 2, 11))
.lastRequestAt(lastRequestAt)
.contact(contact)
.build();

return UserRole.builder()
.user(user)
.role(role)
.build();
}
}
Loading

0 comments on commit f94fdec

Please sign in to comment.