Skip to content

Commit

Permalink
Merge pull request #41 from Kusitms-POPTATO-DEV/feat/38-update-deadline
Browse files Browse the repository at this point in the history
Feat#38: 마감기한 수정 기능 구현
  • Loading branch information
pkl0912 authored Oct 17, 2024
2 parents 9f00104 + 5a32f47 commit 1f80d2e
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 1 deletion.
9 changes: 9 additions & 0 deletions src/main/java/server/poptato/todo/api/TodoController.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.springframework.web.bind.annotation.*;
import server.poptato.global.response.BaseResponse;
import server.poptato.todo.api.request.BacklogCreateRequestDto;
import server.poptato.todo.api.request.DeadlineUpdateRequestDto;
import server.poptato.todo.api.request.DragAndDropRequestDto;
import server.poptato.todo.api.request.SwipeRequestDto;
import server.poptato.todo.application.TodoService;
Expand Down Expand Up @@ -95,4 +96,12 @@ public BaseResponse<TodoDetailResponseDto> getTodoInfo(@UserId Long userId,
TodoDetailResponseDto response = todoService.getTodoInfo(userId, todoId);
return new BaseResponse<>(response);
}

@PatchMapping("/todo/{todoId}/deadline")
public BaseResponse updateDeadline(@UserId Long userId,
@PathVariable Long todoId,
@Validated @RequestBody DeadlineUpdateRequestDto requestDto){
todoService.updateDeadline(userId, todoId, requestDto.getDeadline());
return new BaseResponse<>();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package server.poptato.todo.api.request;

import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDate;

@Getter
@NoArgsConstructor
public class DeadlineUpdateRequestDto {
LocalDate deadline;
}
10 changes: 10 additions & 0 deletions src/main/java/server/poptato/todo/application/TodoService.java
Original file line number Diff line number Diff line change
Expand Up @@ -241,4 +241,14 @@ public TodoDetailResponseDto getTodoInfo(Long userId, Long todoId) {
.deadline(findTodo.getDeadline())
.build();
}

public void updateDeadline(Long userId, Long todoId, LocalDate deadline) {
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);
findTodo.updateDeadline(deadline);
todoRepository.save(findTodo);
}
}
4 changes: 4 additions & 0 deletions src/main/java/server/poptato/todo/domain/entity/Todo.java
Original file line number Diff line number Diff line change
Expand Up @@ -88,4 +88,8 @@ public void setTodayOrder(int order) {
public void setBacklogOrder(int order) {
this.backlogOrder = order;
}

public void updateDeadline(LocalDate deadline) {
this.deadline = deadline;
}
}
15 changes: 15 additions & 0 deletions src/test/java/server/poptato/todo/api/TodoControllerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -333,4 +333,19 @@ public void shouldReturnOk_WhenIsBookmarkToggled() throws Exception {
.andDo(print());

}

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

//when
mockMvc.perform(patch("/todo/{todoId}/deadline", todoId)
.header("Authorization", "Bearer " + accessToken)
.content("{\"deadline\": \"2024-12-25\"}")
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andDo(print());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,6 @@ void getYesterdays_ShouldReturnPagedResult() {
int page = 0;
int size = 5; // 한번에 5개의 todo 가져오기


// when
PaginatedYesterdayResponseDto result = todoService.getYesterdays(userId, page, size);

Expand All @@ -380,4 +379,20 @@ void getYesterdays_ShouldReturnPagedResult() {
assertThat(todoInfo.getDeadline()).isEqualTo(LocalDate.of(2024,10,26));
assertThat(todoInfo.getIsBookmark()).isTrue();
}

@DisplayName("마감기한 수정 시 성공한다.")
@Test
void 마감기한_수정_성공(){
//given
Long userId = 1L;
Long todoId = 11L;
LocalDate updateDate = LocalDate.of(2024,12,25);

//when
todoService.updateDeadline(userId,todoId,updateDate);
Todo findTodo = todoRepository.findById(todoId).get();

//then
assertThat(findTodo.getDeadline()).isEqualTo(updateDate);
}
}

0 comments on commit 1f80d2e

Please sign in to comment.