Skip to content

Commit

Permalink
feat: User도메인 을 수정하고, UserConnector를 구현한다
Browse files Browse the repository at this point in the history
  • Loading branch information
devxb committed Dec 26, 2023
1 parent b1e9340 commit 8591ca3
Show file tree
Hide file tree
Showing 6 changed files with 115 additions and 4 deletions.
21 changes: 21 additions & 0 deletions src/main/java/net/teumteum/user/domain/Oauth.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package net.teumteum.user.domain;

import jakarta.persistence.Column;
import jakarta.persistence.Embeddable;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@Embeddable
@NoArgsConstructor
@AllArgsConstructor
public class Oauth {

@Column(name = "oauth_authenticate_info", unique = true)
private String oAuthAuthenticateInfo;

@Column(name = "authenticated")
private String authenticated;

}
4 changes: 2 additions & 2 deletions src/main/java/net/teumteum/user/domain/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ public class User {
@Column(name = "manner_temperature")
private int mannerTemperature;

@Column(name = "authenticated")
private String authenticated;
@Embedded
private Oauth oauth;

@Embedded
private ActivityArea activityArea;
Expand Down
8 changes: 8 additions & 0 deletions src/main/java/net/teumteum/user/domain/UserConnector.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package net.teumteum.user.domain;

import java.util.Optional;

public interface UserConnector {

Optional<User> findUserById(Long id);
}
23 changes: 23 additions & 0 deletions src/main/java/net/teumteum/user/service/UserConnectorImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package net.teumteum.user.service;

import java.util.Optional;
import lombok.RequiredArgsConstructor;
import net.teumteum.user.domain.User;
import net.teumteum.user.domain.UserConnector;
import net.teumteum.user.domain.UserRepository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class UserConnectorImpl implements UserConnector {

private final UserRepository userRepository;

@Override
public Optional<User> findUserById(Long id) {
return userRepository.findById(id);
}

}
4 changes: 2 additions & 2 deletions src/test/java/net/teumteum/user/domain/UserFixture.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public static User newUserByBuilder(UserBuilder userBuilder) {
userBuilder.birth,
userBuilder.character,
userBuilder.mannerTemperature,
userBuilder.authenticated,
userBuilder.oauth,
userBuilder.activityArea,
userBuilder.mbti,
userBuilder.status,
Expand All @@ -46,7 +46,7 @@ public static class UserBuilder {
@Builder.Default
private int mannerTemperature = 36;
@Builder.Default
private String authenticated = "Kakao";
private Oauth oauth = new Oauth("[email protected]", "naver");
@Builder.Default
private ActivityArea activityArea = new ActivityArea("서울", List.of("강남", "홍대"));
@Builder.Default
Expand Down
59 changes: 59 additions & 0 deletions src/test/java/net/teumteum/user/service/UserConnectorTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package net.teumteum.user.service;

import java.util.Optional;
import net.teumteum.user.domain.UserConnector;
import net.teumteum.user.domain.UserFixture;
import net.teumteum.user.domain.UserRepository;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;

@ExtendWith(SpringExtension.class)
@DisplayName("UserConnector 클래스의")
@ContextConfiguration(classes = UserConnectorImpl.class)
class UserConnectorTest {

private static final Long EXIST_USER_ID = 1L;

@Autowired
private UserConnector userConnector;
@MockBean
private UserRepository userRepository;


@BeforeEach
void beforeEach() {
Mockito.when(userRepository.findById(Mockito.anyLong())).thenReturn(Optional.empty());
Mockito.when(userRepository.findById(EXIST_USER_ID)).thenReturn(Optional.of(UserFixture.getDefaultUser()));
}

@Nested
@DisplayName("findById 메소드는")
class FindById_method {

@Test
@DisplayName("존재하는 user의 id가 들어오면, optional.user를 반환한다.")
void Return_optional_user_if_exists_user_id() {
// given
var expect = Optional.of(UserFixture.getDefaultUser());

// when
var result = userConnector.findUserById(EXIST_USER_ID);

// then
Assertions.assertThat(result)
.isPresent()
.usingRecursiveComparison()
.isEqualTo(expect);
}
}

}

0 comments on commit 8591ca3

Please sign in to comment.