Skip to content

Commit

Permalink
Merge pull request #37 from Kusitms-POPTATO-DEV/feat/36-get-todo-info
Browse files Browse the repository at this point in the history
Feat#36: 할 일 상세조회 기능 구현
  • Loading branch information
yeonjookang authored Oct 17, 2024
2 parents cab488c + 78430d6 commit 5c20668
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 7 deletions.
12 changes: 10 additions & 2 deletions src/main/java/server/poptato/todo/api/TodoController.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import server.poptato.todo.application.response.BacklogListResponseDto;
import server.poptato.todo.application.response.PaginatedHistoryResponseDto;
import server.poptato.todo.application.response.TodayListResponseDto;
import server.poptato.todo.application.response.TodoDetailResponseDto;
import server.poptato.user.resolver.UserId;

import java.time.LocalDate;
Expand Down Expand Up @@ -73,9 +74,16 @@ public BaseResponse dragAndDrop(@UserId Long userId,
}

@PostMapping("/backlog")
public BaseResponse generateBacklog(//@UserId Long userId,
public BaseResponse generateBacklog(@UserId Long userId,
@Validated @RequestBody BacklogCreateRequestDto backlogCreateRequestDto){
todoService.generateBacklog(1L, backlogCreateRequestDto.getContent());
todoService.generateBacklog(userId, backlogCreateRequestDto.getContent());
return new BaseResponse<>();
}

@GetMapping("/todo/{todoId}")
public BaseResponse<TodoDetailResponseDto> getTodoInfo(@UserId Long userId,
@PathVariable Long todoId){
TodoDetailResponseDto response = todoService.getTodoInfo(userId, todoId);
return new BaseResponse<>(response);
}
}
20 changes: 16 additions & 4 deletions src/main/java/server/poptato/todo/application/TodoService.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,7 @@
import server.poptato.todo.api.request.SwipeRequestDto;
import org.springframework.transaction.annotation.Transactional;
import server.poptato.global.response.BaseResponse;
import server.poptato.todo.application.response.BacklogListResponseDto;
import server.poptato.todo.application.response.HistoryResponseDto;
import server.poptato.todo.application.response.PaginatedHistoryResponseDto;
import server.poptato.todo.application.response.TodayListResponseDto;
import server.poptato.todo.application.response.*;
import server.poptato.todo.domain.entity.Todo;
import server.poptato.todo.domain.repository.TodoRepository;
import server.poptato.todo.domain.value.TodayStatus;
Expand All @@ -29,6 +26,7 @@
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

import static server.poptato.todo.exception.errorcode.TodoExceptionErrorCode.TODO_NOT_EXIST;
Expand Down Expand Up @@ -217,4 +215,18 @@ public Long generateBacklog(Long userId, String content) {
Todo newBacklog = todoRepository.save(backlog);
return newBacklog.getId();
}

public TodoDetailResponseDto getTodoInfo(Long userId, Long todoId) {
checkIsExistUser(userId);
Todo findTodo = todoRepository.findById(todoId)
.orElseThrow(() -> new TodoException(TODO_NOT_EXIST));
if(findTodo.getUserId()!=userId)
throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH);

return TodoDetailResponseDto.builder()
.content(findTodo.getContent())
.isBookmark(findTodo.isBookmark())
.deadline(findTodo.getDeadline())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package server.poptato.todo.application.response;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;

import java.time.LocalDate;

@Getter
@Builder
@AllArgsConstructor
public class TodoDetailResponseDto {
String content;
LocalDate deadline;
Boolean isBookmark;
}
14 changes: 14 additions & 0 deletions src/test/java/server/poptato/todo/api/TodoControllerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -299,4 +299,18 @@ public void shouldReturnOk_WhenIsBookmarkToggled() throws Exception {
.andExpect(status().isOk())
.andDo(print());
}

@DisplayName("할 일 정보 요청 시 성공한다.")
@Test
void 할일_정보_요청_성공_응답() throws Exception {
//given
Long todoId = 1L;

//when
mockMvc.perform(get("/todo/{todoId}", todoId)
.header("Authorization", "Bearer " + accessToken)
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andDo(print());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import server.poptato.todo.application.response.PaginatedHistoryResponseDto;
import server.poptato.todo.application.response.TodayListResponseDto;
import server.poptato.todo.application.response.TodayResponseDto;
import server.poptato.todo.application.response.TodoDetailResponseDto;
import server.poptato.todo.domain.repository.TodoRepository;
import server.poptato.todo.domain.entity.Todo;
import server.poptato.todo.domain.value.TodayStatus;
Expand Down Expand Up @@ -350,5 +351,17 @@ void getHistories_ShouldReturnPagedResult() {
assertThat(result.getTotalPageCount()).isGreaterThan(0);
}


@DisplayName("할 일 상세조회 시 성공한다.")
@Test
void 할일_상세조회_성공(){
//given
Long userId = 1L;
Long todoId = 10L;
//when
TodoDetailResponseDto todoInfo = todoService.getTodoInfo(userId, todoId);
//then
assertThat(todoInfo.getContent()).isEqualTo("할 일 10");
assertThat(todoInfo.getDeadline()).isEqualTo(LocalDate.of(2024,10,26));
assertThat(todoInfo.getIsBookmark()).isTrue();
}
}

0 comments on commit 5c20668

Please sign in to comment.