Skip to content

Commit

Permalink
Merge pull request #80 from Kusitms-POPTATO-DEV/feat/create-tutorial-…
Browse files Browse the repository at this point in the history
…blocks

Feat#79: 튜토리얼 데이터 추가
  • Loading branch information
pkl0912 authored Nov 6, 2024
2 parents 8ebbe6d + bc761e9 commit dcac011
Show file tree
Hide file tree
Showing 8 changed files with 14,475 additions and 3 deletions.
648 changes: 648 additions & 0 deletions hs_err_pid15120.log

Large diffs are not rendered by default.

1,047 changes: 1,047 additions & 0 deletions hs_err_pid33544.log

Large diffs are not rendered by default.

2,715 changes: 2,715 additions & 0 deletions replay_pid15120.log

Large diffs are not rendered by default.

9,957 changes: 9,957 additions & 0 deletions replay_pid33544.log

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,16 @@
import server.poptato.external.oauth.SocialServiceProvider;
import server.poptato.external.oauth.SocialUserInfo;
import server.poptato.global.dto.TokenPair;
import server.poptato.todo.constant.TutorialMessage;
import server.poptato.todo.domain.entity.Todo;
import server.poptato.todo.domain.repository.TodoRepository;
import server.poptato.todo.domain.value.TodayStatus;
import server.poptato.todo.domain.value.Type;
import server.poptato.user.domain.entity.User;
import server.poptato.user.domain.repository.UserRepository;
import server.poptato.user.validator.UserValidator;

import java.time.LocalDate;
import java.util.Optional;

import static server.poptato.external.oauth.SocialPlatform.KAKAO;
Expand All @@ -26,6 +32,7 @@ public class AuthService {
private final SocialServiceProvider socialServiceProvider;
private final UserRepository userRepository;
private final UserValidator userValidator;
private final TodoRepository todoRepository;

public LoginResponseDto login(final KakaoLoginRequestDto loginRequestDto) {
//TODO: 나중에 없앨 코드
Expand All @@ -36,11 +43,12 @@ public LoginResponseDto login(final KakaoLoginRequestDto loginRequestDto) {
SocialUserInfo userInfo = socialService.getUserData(accessToken);
Optional<User> user = userRepository.findByKakaoId(userInfo.socialId());
if (user.isEmpty()) {
return createNewUserResponse(userInfo);
LoginResponseDto response = createNewUserResponse(userInfo);
createTutorialData(response.userId());
return response;
}
return createOldUserResponse(user.get());
}

public void logout(final Long userId) {
userValidator.checkIsExistUser(userId);
jwtService.deleteRefreshToken(String.valueOf(userId));
Expand All @@ -66,7 +74,6 @@ private void checkIsValidToken(String refreshToken) {
throw e;
}
}

private LoginResponseDto createNewUserResponse(SocialUserInfo userInfo) {
User newUser = User.builder()
.kakaoId(userInfo.socialId())
Expand All @@ -86,4 +93,35 @@ private LoginResponseDto createLoginResponse(User user, boolean isNewUser) {
TokenPair tokenPair = jwtService.generateTokenPair(String.valueOf(user.getId()));
return AuthDtoConverter.toLoginDto(tokenPair, user, isNewUser);
}

private void createAndSaveTodo(Type type, Long userId, int order, String tutorialMessage) {
Todo todo = null;
if(type.equals(Type.TODAY)){
todo = Todo.builder()
.userId(userId)
.type(type)
.content(tutorialMessage)
.todayDate(LocalDate.now())
.todayStatus(TodayStatus.COMPLETED)
.todayOrder(order)
.build();
}
if(type.equals(Type.BACKLOG)){
todo = Todo.builder()
.userId(userId)
.type(type)
.content(tutorialMessage)
.backlogOrder(order)
.build();
}
todoRepository.save(todo);
}

public void createTutorialData(Long userId) {
createAndSaveTodo(Type.TODAY,userId,1, TutorialMessage.TODAY_COMPLETE);
for(int i=0;i<4;i++){
createAndSaveTodo(Type.BACKLOG,userId,4-i, TutorialMessage.BACKLOG_MESSAGES.get(i));
}
}

}
20 changes: 20 additions & 0 deletions src/main/java/server/poptato/todo/constant/TutorialMessage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package server.poptato.todo.constant;

import java.util.Arrays;
import java.util.List;

public class TutorialMessage {
public static final String BACKLOG_NEW_TODO = "'새로 추가하기'를 눌러 할 일을 생성해 보세요.";
public static final String BACKLOG_BOOKMARK_DDAY = "... 을 눌러 '중요'와 '마감기한'을 설정해 보세요.";
public static final String BACKLOG_DRAG_AND_DROP = "할 일을 꾹 눌러 위 아래로 옮겨 보세요.";
public static final String BACKLOG_LEFT_SWIPE = "할 일을 왼쪽으로 넘겨보세요. '오늘'로 할 일이 이동해요.";
public static final String TODAY_COMPLETE = "오늘의 할 일을 모두 체크해 보세요!";

public static final List<String> BACKLOG_MESSAGES = Arrays.asList(
BACKLOG_NEW_TODO,
BACKLOG_BOOKMARK_DDAY,
BACKLOG_DRAG_AND_DROP,
BACKLOG_LEFT_SWIPE
);

}
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,5 @@ default Page<Todo> findHistories(Long userId, LocalDate today, Pageable pageable
}

List<Todo> findByType(Type type);
List<Todo> findByTypeAndUserId(Type type, Long userId);
}
46 changes: 46 additions & 0 deletions src/test/java/server/poptato/auth/application/AuthServiceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.DynamicPropertyRegistry;
import org.springframework.test.context.DynamicPropertySource;
Expand All @@ -24,11 +26,20 @@
import server.poptato.external.oauth.SocialService;
import server.poptato.external.oauth.SocialServiceProvider;
import server.poptato.global.dto.TokenPair;
import server.poptato.todo.constant.TutorialMessage;
import server.poptato.todo.domain.entity.Todo;
import server.poptato.todo.domain.repository.TodoRepository;
import server.poptato.todo.domain.value.TodayStatus;
import server.poptato.todo.domain.value.Type;
import server.poptato.user.domain.entity.User;
import server.poptato.user.domain.repository.UserRepository;
import server.poptato.user.exception.UserException;
import server.poptato.user.validator.UserValidator;

import java.util.List;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.groups.Tuple.tuple;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static server.poptato.auth.exception.errorcode.AuthExceptionErrorCode.INVALID_TOKEN;
Expand All @@ -45,6 +56,8 @@ public class AuthServiceTest {
@Autowired
private UserRepository userRepository;
@Autowired
private TodoRepository todoRepository;
@Autowired
private JwtService jwtService;
@Autowired
private UserValidator userValidator;
Expand Down Expand Up @@ -137,4 +150,37 @@ void refresh_InvalidTokenException() {
.getMessage()
.equals(INVALID_TOKEN);
}

@DisplayName("회원가입 시, 튜토리얼 할 일이 성공적으로 추가된다.")
@Test
void createTutorialData_Success() {
// given
String kakaoId = "kakaoId";
String email = "email";
String name = "name";

User user = User.builder()
.kakaoId(kakaoId)
.email(email)
.name(name)
.build();

//when
User newUser = userRepository.save(user);
authService.createTutorialData(newUser.getId());

//then
List<Todo> todays = todoRepository.findByTypeAndUserId(Type.TODAY, newUser.getId());
List<Todo> backlogs = todoRepository.findByTypeAndUserId(Type.BACKLOG, newUser.getId());

assertThat(todays.size()).isEqualTo(1);
assertThat(backlogs).hasSize(4)
.extracting("content","backlogOrder")
.containsExactlyInAnyOrder(
tuple(TutorialMessage.BACKLOG_NEW_TODO, 4),
tuple(TutorialMessage.BACKLOG_BOOKMARK_DDAY, 3),
tuple(TutorialMessage.BACKLOG_DRAG_AND_DROP,2),
tuple(TutorialMessage.BACKLOG_LEFT_SWIPE,1)
);
}
}

0 comments on commit dcac011

Please sign in to comment.