Skip to content

Commit

Permalink
fix: IssueUpdateRequest 추가하여 수정에 맞도록 항목 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
Dae-Hwa committed Jun 24, 2021
1 parent f893167 commit 2546ccd
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 15 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.codesquad.issuetracker.issue.dto;

import com.codesquad.issuetracker.issue.domain.Milestone;
import com.codesquad.issuetracker.issue.domain.Users;
import com.codesquad.issuetracker.label.domain.Labels;
import com.codesquad.issuetracker.label.mapper.LabelDtoMapper;
import com.codesquad.issuetracker.milestone.mapper.MilestoneDtoMapper;
import com.codesquad.issuetracker.user.mapper.UserDtoMapper;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotEmpty;
import java.util.Set;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class IssueUpdateRequest {
@NotEmpty
private String title;

private boolean isClosed;
private Set<Long> assigneeIds;
private Set<Long> labelIds;
private Long milestoneId;

public Users assignees() {
return UserDtoMapper.toEntities(assigneeIds);
}

public Labels labels() {
return LabelDtoMapper.toEntities(labelIds);
}

public Milestone milestone() {
return MilestoneDtoMapper.toEntity(milestoneId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.codesquad.issuetracker.issue.dto.IssueRequest;
import com.codesquad.issuetracker.issue.dto.IssueResponse;
import com.codesquad.issuetracker.issue.dto.IssueResponses;
import com.codesquad.issuetracker.issue.dto.IssueUpdateRequest;
import com.codesquad.issuetracker.label.dto.LabelResponses;
import com.codesquad.issuetracker.milestone.dto.MilestoneResponse;
import com.codesquad.issuetracker.user.dto.UserResponse;
Expand All @@ -29,6 +30,16 @@ public static Issue toEntity(IssueRequest issueRequest) {
.build();
}

public static Issue toEntity(IssueUpdateRequest issueUpdateRequest) {
return Issue.builder()
.title(issueUpdateRequest.getTitle())
.isClosed(issueUpdateRequest.isClosed())
.assignees(issueUpdateRequest.assignees())
.labels(issueUpdateRequest.labels())
.milestone(issueUpdateRequest.milestone())
.build();
}

public static IssueResponses toResponses(Issues issues, User loggedinUser) {
List<IssueResponse> issueResponses = issues.stream()
.map(issue -> toResponse(issue, loggedinUser))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.codesquad.issuetracker.issue.dto.IssueDetailResponse;
import com.codesquad.issuetracker.issue.dto.IssueRequest;
import com.codesquad.issuetracker.issue.dto.IssueResponses;
import com.codesquad.issuetracker.issue.dto.IssueUpdateRequest;
import com.codesquad.issuetracker.issue.mapper.IssueDtoMapper;
import com.codesquad.issuetracker.issue.repository.IssueRepository;
import lombok.RequiredArgsConstructor;
Expand Down Expand Up @@ -46,4 +47,14 @@ public IssueDetailResponse update(long issueId, IssueRequest issueRequest) {
return IssueDetailResponse.from(issueRepository.save(issue));

}

public IssueDetailResponse update(long issueId, IssueUpdateRequest issueUpdateRequest) {
Issue issue = issueRepository.readById(issueId)
.orElseThrow(() -> new EntityNotFoundException());

issue.update(IssueDtoMapper.toEntity(issueUpdateRequest));

return IssueDetailResponse.from(issueRepository.save(issue));

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,7 @@
import com.codesquad.issuetracker.common.exception.EntityNotFoundException;
import com.codesquad.issuetracker.issue.controller.IssueDummyData;
import com.codesquad.issuetracker.issue.domain.*;
import com.codesquad.issuetracker.issue.dto.IssueDetailResponse;
import com.codesquad.issuetracker.issue.dto.IssueRequest;
import com.codesquad.issuetracker.issue.dto.IssueResponse;
import com.codesquad.issuetracker.issue.dto.IssueResponses;
import com.codesquad.issuetracker.issue.dto.*;
import com.codesquad.issuetracker.issue.repository.IssueRepository;
import com.codesquad.issuetracker.label.controller.LabelDummyData;
import com.codesquad.issuetracker.label.domain.Label;
Expand Down Expand Up @@ -283,7 +280,8 @@ static Stream<Arguments> createProvider() {
.labelIds(LabelDummyData.labels().stream().map(Label::getId).collect(Collectors.toSet()))
.milestoneId(MilestoneDummyData.openedMilestone().getId())
.build(),
IssueDetailResponse.builder().id(1L)
IssueDetailResponse.builder()
.id(1L)
.number(1L)
.title("title")
.createDateTime(LocalDateTime.of(2021, 6, 21, 16, 0))
Expand Down Expand Up @@ -321,7 +319,8 @@ static Stream<Arguments> createProvider() {
.assigneeIds(UserDummyData.users().stream().map(User::getId).collect(Collectors.toSet()))
.labelIds(LabelDummyData.labels().stream().map(Label::getId).collect(Collectors.toSet()))
.build(),
IssueDetailResponse.builder().id(1L)
IssueDetailResponse.builder()
.id(1L)
.number(1L)
.title("title")
.createDateTime(LocalDateTime.of(2021, 6, 21, 16, 0))
Expand Down Expand Up @@ -361,7 +360,8 @@ static Stream<Arguments> createProvider() {
.labelIds(LabelDummyData.labels().stream().map(Label::getId).collect(Collectors.toSet()))
.milestoneId(MilestoneDummyData.openedMilestone().getId())
.build(),
IssueDetailResponse.builder().id(1L)
IssueDetailResponse.builder()
.id(1L)
.number(1L)
.title("title")
.createDateTime(LocalDateTime.of(2021, 6, 21, 16, 0))
Expand Down Expand Up @@ -399,7 +399,8 @@ static Stream<Arguments> createProvider() {
.labelIds(LabelDummyData.labels().stream().map(Label::getId).collect(Collectors.toSet()))
.milestoneId(MilestoneDummyData.openedMilestone().getId())
.build(),
IssueDetailResponse.builder().id(1L)
IssueDetailResponse.builder()
.id(1L)
.number(1L)
.title("title")
.createDateTime(LocalDateTime.of(2021, 6, 21, 16, 0))
Expand Down Expand Up @@ -436,7 +437,8 @@ static Stream<Arguments> createProvider() {
.labelIds(LabelDummyData.labels().stream().map(Label::getId).collect(Collectors.toSet()))
.milestoneId(MilestoneDummyData.openedMilestone().getId())
.build(),
IssueDetailResponse.builder().id(1L)
IssueDetailResponse.builder()
.id(1L)
.number(1L)
.title("title")
.createDateTime(LocalDateTime.of(2021, 6, 21, 16, 0))
Expand All @@ -451,14 +453,14 @@ static Stream<Arguments> createProvider() {

@ParameterizedTest
@MethodSource
void update(String 테스트케이스설명, Issue givenForReadById, Issue givenForSave, IssueRequest issueRequest, IssueDetailResponse expected) {
void update(String 테스트케이스설명, Issue givenForReadById, Issue givenForSave, IssueUpdateRequest issueUpdateRequest, IssueDetailResponse expected) {
BDDMockito.given(issueRepository.readById(givenForReadById.getId()))
.willReturn(Optional.of(givenForReadById));

BDDMockito.given(issueRepository.save(givenForSave))
.willReturn(givenForSave);

IssueDetailResponse actual = issueService.update(givenForReadById.getId(), issueRequest);
IssueDetailResponse actual = issueService.update(givenForReadById.getId(), issueUpdateRequest);

IssueTestValidator.thenVerifyIssue(actual, expected);
}
Expand All @@ -483,24 +485,26 @@ static Stream<Arguments> update() {
.id(1L)
.number(1L)
.title("title updated")
.isClosed(true)
.createDateTime(LocalDateTime.of(2021, 6, 21, 16, 0))
.author(UserDummyData.userFreddie())
.assignees(Users.of(UserDummyData.userFreddie()))
.labels(Labels.of(LabelDummyData.labelBe()))
.milestone(MilestoneDummyData.closedMilestone())
.mainComment(IssueDummyData.commentByFreddie())
.build(),
IssueRequest.builder()
IssueUpdateRequest.builder()
.title("title updated")
.mainCommentContents(IssueDummyData.commentByFreddie().getContents())
.authorId(UserDummyData.userFreddie().getId())
.isClosed(true)
.assigneeIds(new HashSet<>(Arrays.asList(UserDummyData.userFreddie().getId())))
.labelIds(new HashSet<>(Arrays.asList(LabelDummyData.labelBe().getId())))
.milestoneId(MilestoneDummyData.closedMilestone().getId())
.build(),
IssueDetailResponse.builder().id(1L)
IssueDetailResponse.builder()
.id(1L)
.number(1L)
.title("title updated")
.isClosed(true)
.createDateTime(LocalDateTime.of(2021, 6, 21, 16, 0))
.author(UserResponse.from(UserDummyData.userFreddie()))
.assignees(UserResponses.from(Users.of(UserDummyData.userFreddie())))
Expand Down

0 comments on commit 2546ccd

Please sign in to comment.