-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BE] 쓴 피드백은 피드백 모아보기에서 바로 볼 수 있도록 변경 + 리팩터링(#613) #617
Changes from 1 commit
62fb486
1fcc4bc
a8e7a3c
efe474f
1fbf93b
8ef4741
8010cff
32cc97d
55fac74
6db2d68
bcbec54
34540ff
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,6 +13,7 @@ | |
|
||
import java.util.List; | ||
import java.util.Map; | ||
import java.util.function.Predicate; | ||
import java.util.stream.Collectors; | ||
|
||
import static corea.global.util.MapHandler.extractDistinctKeyStreams; | ||
|
@@ -30,7 +31,8 @@ public class UserFeedbackService { | |
public UserFeedbackResponse getDeliveredFeedback(long feedbackDeliverId) { | ||
Map<Long, List<FeedbackResponse>> deliveredDevelopFeedback = getDeliveredDevelopFeedback(feedbackDeliverId); | ||
Map<Long, List<FeedbackResponse>> deliverSocialFeedback = getDeliveredSocialFeedback(feedbackDeliverId); | ||
return getUserFeedbackResponse(deliveredDevelopFeedback, deliverSocialFeedback); | ||
|
||
return getUserFeedbackResponse(deliveredDevelopFeedback, deliverSocialFeedback, room -> true); | ||
} | ||
|
||
private Map<Long, List<FeedbackResponse>> getDeliveredDevelopFeedback(long feedbackDeliverId) { | ||
|
@@ -50,7 +52,8 @@ private Map<Long, List<FeedbackResponse>> getDeliveredSocialFeedback(long feedba | |
public UserFeedbackResponse getReceivedFeedback(long feedbackReceiverId) { | ||
Map<Long, List<FeedbackResponse>> receivedDevelopFeedback = getReceivedDevelopFeedback(feedbackReceiverId); | ||
Map<Long, List<FeedbackResponse>> receivedSocialFeedback = getReceivedSocialFeedback(feedbackReceiverId); | ||
return getUserFeedbackResponse(receivedDevelopFeedback, receivedSocialFeedback); | ||
|
||
return getUserFeedbackResponse(receivedDevelopFeedback, receivedSocialFeedback, Room::isClosed); | ||
} | ||
|
||
private Map<Long, List<FeedbackResponse>> getReceivedDevelopFeedback(long feedbackReceiverId) { | ||
|
@@ -67,11 +70,12 @@ private Map<Long, List<FeedbackResponse>> getReceivedSocialFeedback(long feedbac | |
.collect(Collectors.groupingBy(FeedbackResponse::roomId)); | ||
} | ||
|
||
private UserFeedbackResponse getUserFeedbackResponse(Map<Long, List<FeedbackResponse>> developFeedback, Map<Long, List<FeedbackResponse>> socialFeedback) { | ||
List<Room> rooms = roomRepository.findAllById( | ||
extractDistinctKeyStreams(developFeedback, socialFeedback).toList()); | ||
private UserFeedbackResponse getUserFeedbackResponse(Map<Long, List<FeedbackResponse>> developFeedback, Map<Long, List<FeedbackResponse>> socialFeedback, Predicate<Room> predicate) { | ||
List<Long> roomIds = extractDistinctKeyStreams(developFeedback, socialFeedback).toList(); | ||
List<Room> rooms = roomRepository.findAllById(roomIds); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. findAllByIds 와 findAllById 가 동작이 같은가요? 궁금해서 질문 남깁니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
return new UserFeedbackResponse(rooms.stream() | ||
.filter(Room::isClosed) | ||
.filter(predicate) | ||
.map(room -> FeedbacksResponse.of(room, emptyListIfNull(developFeedback.get(room.getId())), emptyListIfNull(socialFeedback.get(room.getId())))) | ||
.toList()); | ||
} | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 만약 위에서 테스트 메서드 로직도 바뀌어야 합니다! 만약 비즈니스 로직을 바꾸지 않는다고 해도 현재는 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 같이 수정완료했습니다~ 👍 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,6 @@ | ||
package corea.feedback.controller; | ||
|
||
import config.ControllerTest; | ||
import corea.auth.service.LoginService; | ||
import corea.auth.service.TokenService; | ||
import corea.feedback.dto.UserFeedbackResponse; | ||
import corea.feedback.repository.DevelopFeedbackRepository; | ||
|
@@ -15,15 +14,12 @@ | |
import corea.room.domain.Room; | ||
import corea.room.repository.RoomRepository; | ||
import io.restassured.RestAssured; | ||
import io.restassured.http.ContentType; | ||
import org.junit.jupiter.api.Disabled; | ||
import org.junit.jupiter.api.DisplayName; | ||
import org.junit.jupiter.api.Test; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
|
||
import static org.assertj.core.api.Assertions.assertThat; | ||
|
||
@Disabled | ||
@ControllerTest | ||
class UserFeedbackControllerTest { | ||
|
||
|
@@ -39,8 +35,6 @@ class UserFeedbackControllerTest { | |
@Autowired | ||
private SocialFeedbackRepository socialFeedbackRepository; | ||
|
||
@Autowired | ||
private LoginService loginService; | ||
@Autowired | ||
private TokenService tokenService; | ||
|
||
|
@@ -59,9 +53,11 @@ void deliveredFeedbacks() { | |
|
||
String token = tokenService.createAccessToken(member1); | ||
|
||
UserFeedbackResponse response = RestAssured.given().header("Authorization", token).contentType(ContentType.JSON) | ||
UserFeedbackResponse response = RestAssured.given() | ||
.auth().oauth2(token) | ||
.when().get("/user/feedbacks/delivered") | ||
.then().statusCode(200).extract().as(UserFeedbackResponse.class); | ||
.then().statusCode(200) | ||
.extract().as(UserFeedbackResponse.class); | ||
|
||
assertThat(response.feedbacks()).hasSize(2); | ||
assertThat(response.feedbacks().get(0).socialFeedback()).hasSize(1); | ||
|
@@ -72,8 +68,8 @@ void deliveredFeedbacks() { | |
@DisplayName("자신이 받은 피드백을 받는다.") | ||
void receivedFeedbacks() { | ||
Member manager = memberRepository.save(MemberFixture.MEMBER_ROOM_MANAGER_JOYSON()); | ||
Room room1 = roomRepository.save(RoomFixture.ROOM_DOMAIN(manager)); | ||
Room room2 = roomRepository.save(RoomFixture.ROOM_DOMAIN(manager)); | ||
Room room1 = roomRepository.save(RoomFixture.ROOM_DOMAIN_WITH_CLOSED(manager)); | ||
Room room2 = roomRepository.save(RoomFixture.ROOM_DOMAIN_WITH_CLOSED(manager)); | ||
Member member1 = memberRepository.save(MemberFixture.MEMBER_PORORO()); | ||
Member member2 = memberRepository.save(MemberFixture.MEMBER_YOUNGSU()); | ||
|
||
|
@@ -83,14 +79,44 @@ void receivedFeedbacks() { | |
|
||
String token = tokenService.createAccessToken(member2); | ||
|
||
UserFeedbackResponse response = RestAssured.given().header("Authorization", token).contentType(ContentType.JSON) | ||
UserFeedbackResponse response = RestAssured.given() | ||
.auth().oauth2(token) | ||
.when().get("/user/feedbacks/received") | ||
.then().statusCode(200).extract().as(UserFeedbackResponse.class); | ||
|
||
.then().statusCode(200) | ||
.extract().as(UserFeedbackResponse.class); | ||
|
||
assertThat(response.feedbacks()).hasSize(2); | ||
assertThat(response.feedbacks().get(0).developFeedback()).hasSize(1); | ||
assertThat(response.feedbacks().get(0).socialFeedback()).hasSize(1); | ||
assertThat(response.feedbacks().get(1).developFeedback()).hasSize(1); | ||
} | ||
|
||
@Test | ||
@DisplayName("자신이 받은 피드백을 받을 때는 닫혀있는 방에서만 받는다.") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "자신이 받은 피드백은 닫혀있는 방에서 작성된 피드백만 확인할 수 있다" 와 같은 수정은 어떠신가요? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 수정 완😀 |
||
void receivedFeedbacksFromClosedRoom() { | ||
Member manager = memberRepository.save(MemberFixture.MEMBER_ROOM_MANAGER_JOYSON()); | ||
Room room1 = roomRepository.save(RoomFixture.ROOM_DOMAIN(manager)); | ||
Room room2 = roomRepository.save(RoomFixture.ROOM_DOMAIN(manager)); | ||
Room room3 = roomRepository.save(RoomFixture.ROOM_DOMAIN_WITH_CLOSED(manager)); | ||
Member member1 = memberRepository.save(MemberFixture.MEMBER_PORORO()); | ||
Member member2 = memberRepository.save(MemberFixture.MEMBER_YOUNGSU()); | ||
|
||
developFeedbackRepository.save(DevelopFeedbackFixture.POSITIVE_FEEDBACK(room1.getId(), member1, member2)); | ||
developFeedbackRepository.save(DevelopFeedbackFixture.POSITIVE_FEEDBACK(room2.getId(), manager, member2)); | ||
developFeedbackRepository.save(DevelopFeedbackFixture.POSITIVE_FEEDBACK(room3.getId(), manager, member2)); | ||
socialFeedbackRepository.save(SocialFeedbackFixture.POSITIVE_FEEDBACK(room1.getId(), manager, member2)); | ||
socialFeedbackRepository.save(SocialFeedbackFixture.POSITIVE_FEEDBACK(room3.getId(), manager, member2)); | ||
|
||
String token = tokenService.createAccessToken(member2); | ||
|
||
UserFeedbackResponse response = RestAssured.given() | ||
.auth().oauth2(token) | ||
.when().get("/user/feedbacks/received") | ||
.then().statusCode(200) | ||
.extract().as(UserFeedbackResponse.class); | ||
|
||
assertThat(response.feedbacks()).hasSize(1); | ||
assertThat(response.feedbacks().get(0).developFeedback()).hasSize(1); | ||
assertThat(response.feedbacks().get(0).socialFeedback()).hasSize(1); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -43,7 +43,7 @@ class UserFeedbackServiceTest { | |
private SocialFeedbackRepository socialFeedbackRepository; | ||
|
||
@Test | ||
@DisplayName("닫힌 방마다 작성한 피드백들을 구분해서 가져온다.") | ||
@DisplayName("작성한 피드백들을 가져온다.") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 여기도 마찬가지로 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 같이 수정완료했습니다~ 👍 |
||
void findFeedbacksWithEachRoom() { | ||
Member manager = memberRepository.save(MemberFixture.MEMBER_ROOM_MANAGER_JOYSON()); | ||
Room room1 = roomRepository.save(RoomFixture.ROOM_DOMAIN_WITH_CLOSED(manager)); | ||
|
@@ -58,11 +58,11 @@ void findFeedbacksWithEachRoom() { | |
|
||
UserFeedbackResponse response = userFeedbackService.getDeliveredFeedback(reviewer.getId()); | ||
|
||
assertThat(response.feedbacks()).hasSize(2); | ||
assertThat(response.feedbacks()).hasSize(3); | ||
} | ||
|
||
@Test | ||
@DisplayName("닫힌 방에서 자신이 해준 피드백들만 가져온다.") | ||
@DisplayName("자신이 해준 피드백들만 가져온다.") | ||
void findFeedbacksWithReviewer() { | ||
Member manager = memberRepository.save(MemberFixture.MEMBER_ROOM_MANAGER_JOYSON()); | ||
Room room1 = roomRepository.save(RoomFixture.ROOM_DOMAIN_WITH_CLOSED(manager)); | ||
|
@@ -83,25 +83,23 @@ void findFeedbacksWithReviewer() { | |
|
||
assertThat(feedbackResponses.developFeedback()).hasSize(1); | ||
assertThat(feedbackResponses.socialFeedback()).hasSize(1); | ||
|
||
} | ||
|
||
@Test | ||
@DisplayName("닫힌 방에서 자신이 받은 피드백들만 가져온다.") | ||
void getReceivedFeedback() { | ||
@DisplayName("자신이 받은 피드백을 가져올 땐 방이 닫혀있는 피드백들만 가져온다.") | ||
void getReceivedFeedbackFromClosedRooms() { | ||
Member manager = memberRepository.save(MemberFixture.MEMBER_ROOM_MANAGER_JOYSON()); | ||
Room room1 = roomRepository.save(RoomFixture.ROOM_DOMAIN_WITH_CLOSED(manager)); | ||
Room room2 = roomRepository.save(RoomFixture.ROOM_DOMAIN(manager)); | ||
Member reviewer1 = memberRepository.save(MemberFixture.MEMBER_PORORO()); | ||
Member reviewer2 = memberRepository.save(MemberFixture.MEMBER_ASH()); | ||
Member reviewee = memberRepository.save(MemberFixture.MEMBER_YOUNGSU()); | ||
|
||
developFeedbackRepository.save( | ||
DevelopFeedbackFixture.POSITIVE_FEEDBACK(room1.getId(), reviewer1, reviewee)); | ||
developFeedbackRepository.save(DevelopFeedbackFixture.POSITIVE_FEEDBACK(room1.getId(), reviewer1, reviewee)); | ||
saveRevieweeToReviewer(room1.getId(), reviewer1, reviewee); | ||
saveRevieweeToReviewer(room1.getId(), reviewer2, reviewee); | ||
developFeedbackRepository.save( | ||
DevelopFeedbackFixture.POSITIVE_FEEDBACK(room2.getId(), reviewer1, reviewee)); | ||
|
||
developFeedbackRepository.save(DevelopFeedbackFixture.POSITIVE_FEEDBACK(room2.getId(), reviewer1, reviewee)); | ||
saveRevieweeToReviewer(room2.getId(), reviewer1, reviewee); | ||
saveRevieweeToReviewer(room2.getId(), reviewer2, reviewee); | ||
|
||
|
@@ -112,6 +110,26 @@ void getReceivedFeedback() { | |
assertThat(feedbackData).hasSize(1); | ||
} | ||
|
||
@Test | ||
@DisplayName("자신이 받은 피드백들만 가져온다.") | ||
void getReceivedFeedback() { | ||
Member manager = memberRepository.save(MemberFixture.MEMBER_ROOM_MANAGER_JOYSON()); | ||
Room room1 = roomRepository.save(RoomFixture.ROOM_DOMAIN_WITH_CLOSED(manager)); | ||
Member reviewer1 = memberRepository.save(MemberFixture.MEMBER_PORORO()); | ||
Member reviewer2 = memberRepository.save(MemberFixture.MEMBER_ASH()); | ||
Member reviewee = memberRepository.save(MemberFixture.MEMBER_YOUNGSU()); | ||
|
||
developFeedbackRepository.save(DevelopFeedbackFixture.POSITIVE_FEEDBACK(room1.getId(), reviewer1, reviewee)); | ||
saveRevieweeToReviewer(room1.getId(), reviewer1, reviewee); | ||
saveRevieweeToReviewer(room1.getId(), reviewer2, reviewee); | ||
|
||
UserFeedbackResponse response = userFeedbackService.getReceivedFeedback(reviewee.getId()); | ||
List<FeedbackResponse> feedbackData = response.feedbacks() | ||
.get(0) | ||
.developFeedback(); | ||
assertThat(feedbackData).hasSize(1); | ||
} | ||
|
||
private void saveRevieweeToReviewer(long roomId, Member reviewee, Member reviewer) { | ||
socialFeedbackRepository.save( | ||
new SocialFeedback(null, roomId, reviewer, reviewee, 4, List.of(FeedbackKeyword.REVIEW_FAST, FeedbackKeyword.KIND), "유용한 정보들이 많았어요") | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
predicate 가 이름을 가지면 좋겠는데, 적절한 이름이 떠오르지 않네요..