From e00b949d1f1408a20ca360694eecebb1758c6c00 Mon Sep 17 00:00:00 2001 From: Sunny Date: Thu, 9 Nov 2023 00:41:47 +0900 Subject: [PATCH] =?UTF-8?q?Revert=20"Revert=20"Revert=20"refactor:=20?= =?UTF-8?q?=EB=B3=B4=ED=98=B8=EC=86=8C=EC=97=90=20=EB=8B=AC=EB=A6=B0=20?= =?UTF-8?q?=ED=9B=84=EA=B8=B0=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C(=EB=B3=B4=ED=98=B8=EC=86=8C)=EB=A5=BC=20=EB=AA=85?= =?UTF-8?q?=EC=84=B8=EC=97=90=20=EB=A7=9E=EA=B2=8C=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=ED=95=9C=EB=8B=A4.=20(#163)"""?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 7daacc49f8a9ce29715c522a08ead984c658eea5. --- src/docs/asciidoc/index.adoc | 8 - .../review/controller/ReviewController.java | 7 +- ...e.java => FindShelterReviewsResponse.java} | 15 +- .../domain/review/service/ReviewService.java | 11 +- src/main/resources/static/docs/index.html | 3119 ++++++++--------- .../controller/ReviewControllerTest.java | 14 +- .../review/service/ReviewServiceTest.java | 14 +- 7 files changed, 1396 insertions(+), 1792 deletions(-) rename src/main/java/com/clova/anifriends/domain/review/dto/response/{FindShelterReviewsByShelterResponse.java => FindShelterReviewsResponse.java} (77%) diff --git a/src/docs/asciidoc/index.adoc b/src/docs/asciidoc/index.adoc index 328d3f39f..ea5ad864d 100644 --- a/src/docs/asciidoc/index.adoc +++ b/src/docs/asciidoc/index.adoc @@ -99,14 +99,6 @@ operation::recruitment-controller-test/register-recruitment[snippets='http-respo == 5. 봉사 후기 -=== 보호소의 후기 리스트 조회 - -==== Request -operation::review-controller-test/find-shelter-reviews-by-shelter[snippets='http-request,request-headers,path-parameters,query-parameters'] - -==== Response -operation::review-controller-test/find-shelter-reviews-by-shelter[snippets='http-response,response-fields'] - == 6. 보호 동물 = 봉사자 diff --git a/src/main/java/com/clova/anifriends/domain/review/controller/ReviewController.java b/src/main/java/com/clova/anifriends/domain/review/controller/ReviewController.java index 5bd91f4da..50eb30af4 100644 --- a/src/main/java/com/clova/anifriends/domain/review/controller/ReviewController.java +++ b/src/main/java/com/clova/anifriends/domain/review/controller/ReviewController.java @@ -4,7 +4,7 @@ import com.clova.anifriends.domain.review.dto.request.RegisterReviewRequest; import com.clova.anifriends.domain.review.dto.response.FindReviewResponse; import com.clova.anifriends.domain.review.dto.response.FindShelterReviewsByVolunteerResponse; -import com.clova.anifriends.domain.review.dto.response.FindShelterReviewsByShelterResponse; +import com.clova.anifriends.domain.review.dto.response.FindShelterReviewsResponse; import com.clova.anifriends.domain.review.dto.response.FindVolunteerReviewsResponse; import com.clova.anifriends.domain.review.service.ReviewService; import java.net.URI; @@ -44,11 +44,10 @@ public ResponseEntity registerReview( } @GetMapping("/shelters/{shelterId}/reviews") - public ResponseEntity findShelterReviewsByShelter( + public ResponseEntity findShelterReviews( @PathVariable("shelterId") Long shelterId, Pageable pageable) { - FindShelterReviewsByShelterResponse response - = reviewService.findShelterReviewsByShelter(shelterId, pageable); + FindShelterReviewsResponse response = reviewService.findShelterReviews(shelterId, pageable); return ResponseEntity.ok(response); } diff --git a/src/main/java/com/clova/anifriends/domain/review/dto/response/FindShelterReviewsByShelterResponse.java b/src/main/java/com/clova/anifriends/domain/review/dto/response/FindShelterReviewsResponse.java similarity index 77% rename from src/main/java/com/clova/anifriends/domain/review/dto/response/FindShelterReviewsByShelterResponse.java rename to src/main/java/com/clova/anifriends/domain/review/dto/response/FindShelterReviewsResponse.java index d018acdd6..8b228da96 100644 --- a/src/main/java/com/clova/anifriends/domain/review/dto/response/FindShelterReviewsByShelterResponse.java +++ b/src/main/java/com/clova/anifriends/domain/review/dto/response/FindShelterReviewsResponse.java @@ -7,18 +7,17 @@ import java.util.List; import org.springframework.data.domain.Page; -public record FindShelterReviewsByShelterResponse( - List reviews, - PageInfo pageInfo) { +public record FindShelterReviewsResponse(List reviews, + PageInfo pageInfo) { public record FindShelterReviewResponse( Long reviewId, - LocalDateTime reviewCreatedAt, - String reviewContent, + LocalDateTime createdAt, + String content, List reviewImageUrls, String volunteerName, - int volunteerTemperature, + int temperature, String volunteerImageUrl, long VolunteerReviewCount) { @@ -37,11 +36,11 @@ public static FindShelterReviewResponse from(Review review) { } } - public static FindShelterReviewsByShelterResponse from(Page reviewPage) { + public static FindShelterReviewsResponse from(Page reviewPage) { PageInfo pageInfo = PageInfo.of(reviewPage.getTotalElements(), reviewPage.hasNext()); List reviews = reviewPage .map(FindShelterReviewResponse::from) .stream().toList(); - return new FindShelterReviewsByShelterResponse(reviews, pageInfo); + return new FindShelterReviewsResponse(reviews, pageInfo); } } diff --git a/src/main/java/com/clova/anifriends/domain/review/service/ReviewService.java b/src/main/java/com/clova/anifriends/domain/review/service/ReviewService.java index f6cd83793..54ba68368 100644 --- a/src/main/java/com/clova/anifriends/domain/review/service/ReviewService.java +++ b/src/main/java/com/clova/anifriends/domain/review/service/ReviewService.java @@ -6,7 +6,7 @@ import com.clova.anifriends.domain.review.Review; import com.clova.anifriends.domain.review.dto.response.FindReviewResponse; import com.clova.anifriends.domain.review.dto.response.FindShelterReviewsByVolunteerResponse; -import com.clova.anifriends.domain.review.dto.response.FindShelterReviewsByShelterResponse; +import com.clova.anifriends.domain.review.dto.response.FindShelterReviewsResponse; import com.clova.anifriends.domain.review.dto.response.FindVolunteerReviewsResponse; import com.clova.anifriends.domain.review.exception.ApplicantNotFoundException; import com.clova.anifriends.domain.review.exception.ReviewBadRequestException; @@ -37,11 +37,10 @@ private Review getReview(Long userId, Long reviewId) { } @Transactional(readOnly = true) - public FindShelterReviewsByShelterResponse findShelterReviewsByShelter( - Long shelterId, - Pageable pageable) { - Page reviewPage = reviewRepository.findAllByShelterId(shelterId, pageable); - return FindShelterReviewsByShelterResponse.from(reviewPage); + public FindShelterReviewsResponse findShelterReviews(Long shelterId, Pageable pageable) { + Page reviewPage + = reviewRepository.findAllByShelterId(shelterId, pageable); + return FindShelterReviewsResponse.from(reviewPage); } @Transactional diff --git a/src/main/resources/static/docs/index.html b/src/main/resources/static/docs/index.html index 0c5feafae..6397022b7 100644 --- a/src/main/resources/static/docs/index.html +++ b/src/main/resources/static/docs/index.html @@ -1,598 +1,593 @@ - - - - -API 문서 - - - + + + + + API 문서 + + +
-

공통 권한

-
-

0. 인증

-
+

공통 권한

+
+

0. 인증

+
-
-
-
-

1. 봉사자

-
-
-

봉사자가 완료한 봉사 모집글 리스트 조회

-
-

Request

-
-
HTTP request
-
-
+
+
+
+

1. 봉사자

+
+
+

봉사자가 완료한 봉사 모집글 리스트 조회

+
+

Request

+
+
HTTP request
+
+
GET /api/volunteers/1/recruitments/completed?pageNumber=0&pageSize=10 HTTP/1.1
-X-CSRF-TOKEN: tw9kn4U5vGCJCaHv8M-VQqN4OywKgBECX6D_746S3SeGYHhqgjpQ-bcP2FikO5nWkeKhJ5FKFhVo4Sgvb5ScibzzuUSzUk4M
+X-CSRF-TOKEN: SiYfXSGFaZOJPEgcpof4iiM5-8WM1fmKtCyfjOHW56AO1mD8fkN-aULkDKOkBHp6wqrMvBIP1qe84Minhhym74KygcY_4gPI
 Host: localhost:8080
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /api/volunteers/{volunteerId}/recruitments/completed
ParameterDescription

volunteerId

봉사자 ID

-
-
-
Query parameters
- ------ - - - - - - - - - - - - - - - - - - - - - - -
필드명필수값제약설명

pageNumber

true

페이지 번호

pageSize

true

페이지 사이즈

-
-
-
-

Response

-
-
HTTP response
-
-
+
+
+
+
+
Path parameters
+ + + + + + + + + + + + + + + + + + +
Table 1. /api/volunteers/{volunteerId}/recruitments/completed
ParameterDescription

volunteerId

봉사자 ID

+
+
+
Query parameters
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
필드명필수값제약설명

pageNumber

true

페이지 번호

pageSize

true

페이지 사이즈

+
+
+
+

Response

+
+
HTTP response
+
+
HTTP/1.1 200 OK
 Content-Type: application/json;charset=UTF-8
 X-Content-Type-Options: nosniff
@@ -606,7 +601,7 @@ 
-
-
-
-
-
Response fields
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

recruitments

Array

봉사 모집글 리스트

recruitments[].recruitmentId

Number

봉사 모집글 ID

recruitments[].recruitmentTitle

String

봉사 모집글 제목

recruitments[].recruitmentStartTime

String

봉사 날짜

recruitments[].shelterName

String

보호소 이름

pageInfo

Object

페이지 정보

pageInfo.totalElements

Number

총 요소 개수

pageInfo.hasNext

Boolean

다음 페이지 여부

-
-
-
-
-
-
-

보호 동물

-
-
-

보호 동물 상세 조회

-
-

Request

-
-
HTTP request
-
-
+
+
+
+
+
Response fields
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

recruitments

Array

봉사 모집글 리스트

recruitments[].recruitmentId

Number

봉사 모집글 ID

recruitments[].recruitmentTitle

String

봉사 모집글 제목

recruitments[].recruitmentStartTime

String

봉사 날짜

recruitments[].shelterName

String

보호소 이름

pageInfo

Object

페이지 정보

pageInfo.totalElements

Number

총 요소 개수

pageInfo.hasNext

Boolean

다음 페이지 여부

+
+
+
+
+
+
+

보호 동물

+
+
+

보호 동물 상세 조회

+
+

Request

+
+
HTTP request
+
+
GET /api/animals/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE2OTk0MzYyNDIsInN1YiI6IjEiLCJleHAiOjE2OTk0MzcyNDIsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.BgdJ7CFunj47tDrEBrZJwcObNvosB5NlIiSfGmgEU3QbIkLAG6gNWDa1JWJWs1Oo
-X-CSRF-TOKEN: CfwHkJDvQdj5l8MzItsDejNqSv-HtjW-CjIfTxyq_rOCVN6DMcpmofXWdLnU8vYGQ_Y3TwRaZ57jjgSTawIsfS-cnIO2Nrq3
+Authorization: eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE2OTk0MzAyOTAsInN1YiI6IjEiLCJleHAiOjE2OTk0MzEyOTAsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.uwCVMszrCNj-7VmcVsTx49DLvLsoKzdsjgfR8kKtdpZlmhV2M4TvoJSWY5yoxic6
+X-CSRF-TOKEN: 5h8uAxGXg_djONGejPe8yBbq2MYs8tzQkFFk8cvPQSrzLUwb0ScaNymm5pVOW-muv9qIrHLf9f8bx7j9pjJWk_j6dRiQHil_
 Host: localhost:8080
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /api/animals/{animalId}
ParameterDescription

animalId

보호 동물 ID

-
-
-
-

Response

-
-
HTTP response
-
-
+
+
+
+
+
Path parameters
+ + + + + + + + + + + + + + + + + + +
Table 1. /api/animals/{animalId}
ParameterDescription

animalId

보호 동물 ID

+
+
+
+

Response

+
+
HTTP response
+
+
HTTP/1.1 200 OK
 Content-Type: application/json;charset=UTF-8
 X-Content-Type-Options: nosniff
@@ -751,214 +746,214 @@ 
-
-
-
-
-
Response fields
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

animalId

Number

보호 동물 ID

animalName

String

보호 동물 이름

animalBirthDate

String

보호 동물 출생 날짜

animalType

String

보호 동물 종류

animalBreed

String

보호 동물 품종

animalGender

String

보호 동물 성별

animalIsNeutered

Boolean

보호 동물 중성화 유무

animalActive

String

보호 동물 활동성

animalWeight

Number

보호 동물 몸무게

animalInformation

String

보호 동물 기타 정보

animalImageUrls[]

Array

보호 동물 이미지 url 리스트

animalIsAdopted

Boolean

보호 동물 입양 여부

-
-
-
-
-
-

보호소

-
-

1. 봉사자

-
-
-

1) 봉사 모집글 조회 & 검색

-
-

Request

-
-
HTTP request
-
-
+
+
+
+
+
Response fields
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

animalId

Number

보호 동물 ID

animalName

String

보호 동물 이름

animalBirthDate

String

보호 동물 출생 날짜

animalType

String

보호 동물 종류

animalBreed

String

보호 동물 품종

animalGender

String

보호 동물 성별

animalIsNeutered

Boolean

보호 동물 중성화 유무

animalActive

String

보호 동물 활동성

animalWeight

Number

보호 동물 몸무게

animalInformation

String

보호 동물 기타 정보

animalImageUrls[]

Array

보호 동물 이미지 url 리스트

animalIsAdopted

Boolean

보호 동물 입양 여부

+
+
+
+
+
+

보호소

+
+

1. 봉사자

+
+
+

1) 봉사 모집글 조회 & 검색

+
+

Request

+
+
HTTP request
+
+
GET /api/volunteers/recruitments?keyword=%EA%B2%85%EC%83%89%EC%96%B4&startDate=2023-11-08&endDate=2023-11-08&isClosed=false&title=true&content=false&shelterName=false&pageNumber=0&pageSize=10 HTTP/1.1
-Authorization: eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE2OTk0MzYyNDgsInN1YiI6IjEiLCJleHAiOjE2OTk0MzcyNDgsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.Veqp0RIfytfETlrO71aWAspYC_JttgCl-ShLdpOXEyZ5xnQS3V4JpmOVGTeTkJ3o
-X-CSRF-TOKEN: HfuUojMBKwwKAbC0iKXSJPoeuW5vQnE9QK98zSgCVpzOEwuOfp-lmwMyGTonONKGsIjmHM0ulA9YJxUQI5gd-h41NKX2JGjv
+Authorization: eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE2OTk0MzAyOTQsInN1YiI6IjEiLCJleHAiOjE2OTk0MzEyOTQsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.eGIhqzJd5gvxPOAPtRplNR6czR0QHCs0XC_KCSzefiP_5w5hJTmn6UgfkIjbXl2t
+X-CSRF-TOKEN: aNQE1Xiq-QllNnvDyOYwYlo70BHFQ98ew2EYG3qffJr7UqXGW7Fh4xnIyztIBU738MsEVT4L_SihJe4z-wB6KU6uTv7Dap3z
 Host: localhost:8080
-
-
-
-
-
Request headers
- ---- - - - - - - - - - - - - -
NameDescription

Authorization

봉사자 액세스 토큰

-
-
-
Query parameters
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
필드명필수값제약설명

keyword

검색어

startDate

yyyy-MM-dd

검색 시작일

endDate

yyyy-MM-dd

검색 종료일

isClosed

true, false

마감 여부

title

기본값 true

제목 포함 검색

content

기본값 true

본문 포함 검색

shelterName

기본값 true

보호소 이름 포함 검색

pageNumber

true

페이지 번호

pageSize

true

페이지 사이즈

-
-
-
-

Response

-
-
HTTP response
-
-
+
+
+
+
+
Request headers
+ + + + + + + + + + + + + + + + + +
NameDescription

Authorization

봉사자 액세스 토큰

+
+
+
Query parameters
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
필드명필수값제약설명

keyword

검색어

startDate

yyyy-MM-dd

검색 시작일

endDate

yyyy-MM-dd

검색 종료일

isClosed

true, false

마감 여부

title

기본값 true

제목 포함 검색

content

기본값 true

본문 포함 검색

shelterName

기본값 true

보호소 이름 포함 검색

pageNumber

true

페이지 번호

pageSize

true

페이지 사이즈

+
+
+
+

Response

+
+
HTTP response
+
+
HTTP/1.1 200 OK
 Content-Type: application/json;charset=UTF-8
 X-Content-Type-Options: nosniff
@@ -972,8 +967,8 @@ 
-
-
-
-
-
Response fields
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

recruitments

Array

봉사 모집글 리스트

recruitments[].recruitmentId

Number

봉사 모집글 ID

recruitments[].recruitmentTitle

String

봉사 모집글 제목

recruitments[].recruitmentStartTime

String

봉사 시작 시간

recruitments[].recruitmentEndTime

String

봉사 종료 시간

recruitments[].recruitmentIsClosed

Boolean

봉사 모집 마감 여부

recruitments[].recruitmentApplicantCount

Number

봉사 신청 인원

recruitments[].recruitmentCapacity

Number

봉사 정원

recruitments[].shelterName

String

보호소 이름

recruitments[].shelterImageUrl

String

보호소 이미지 url

pageInfo

Object

페이지 정보

pageInfo.totalElements

Number

총 요소 개수

pageInfo.hasNext

Boolean

다음 페이지 여부

-
-
-
-
-

보호소에 달린 후기 리스트 조회

-
-

Request

-
-
HTTP request
-
-
-
GET /api/volunteers/shelters/1/reviews?pageNumber=0&pageSize=10 HTTP/1.1
-Authorization: eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE2OTk0MzYyNDgsInN1YiI6IjEiLCJleHAiOjE2OTk0MzcyNDgsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.Veqp0RIfytfETlrO71aWAspYC_JttgCl-ShLdpOXEyZ5xnQS3V4JpmOVGTeTkJ3o
-X-CSRF-TOKEN: gh5tXugFOxVB9c2KT7b8ygE8NLWS1Dt-PlSnwKqGs6Kq6tbAuy5cOt83D3BslKjvd5vIrjYLGYyitg1TDm2Wpp6-isGZ3LOh
-Host: localhost:8080
-
-
-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /api/volunteers/shelters/{shelterId}/reviews
ParameterDescription

shelterId

보호소 ID

-
-
-
Query parameters
- ------ - - - - - - - - - - - - - - - - - - - - - - -
필드명필수값제약설명

pageNumber

true

페이지 번호

pageSize

true

페이지 사이즈

-
-
-
-

Response

-
-
HTTP response
-
-
-
HTTP/1.1 200 OK
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 0
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 336
-
-{
-  "reviews" : [ {
-    "reviewId" : 1,
-    "volunteerTemperature" : 36,
-    "reviewCreatedAt" : "2023-11-08T18:37:28.623979",
-    "reviewContent" : "reviewContent",
-    "volunteerEmail" : "asdf@gmail.com",
-    "reviewImageUrls" : [ "imageUrl1", "imageUrl2" ]
-  } ],
-  "pageInfo" : {
-    "totalElements" : 1,
-    "hasNext" : false
-  }
-}
-
-
-
-
-
Response fields
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

reviews

Array

리뷰 리스트

reviews[].reviewId

Number

리뷰 ID

reviews[].reviewCreatedAt

String

리뷰 생성일

reviews[].reviewContent

String

리뷰 내용

reviews[].reviewImageUrls

Array

리뷰 이미지 url 리스트

reviews[].volunteerEmail

String

봉사자 이메일

reviews[].volunteerTemperature

Number

봉사자 온도

pageInfo

Object

페이지 정보

pageInfo.totalElements

Number

총 요소 개수

pageInfo.hasNext

Boolean

다음 페이지 여부

-
-
-
-
-
-
-

2. 보호소

-
+
+
+
+
+
Response fields
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

recruitments

Array

봉사 모집글 리스트

recruitments[].recruitmentId

Number

봉사 모집글 ID

recruitments[].recruitmentTitle

String

봉사 모집글 제목

recruitments[].recruitmentStartTime

String

봉사 시작 시간

recruitments[].recruitmentEndTime

String

봉사 종료 시간

recruitments[].recruitmentIsClosed

Boolean

봉사 모집 마감 여부

recruitments[].recruitmentApplicantCount

Number

봉사 신청 인원

recruitments[].recruitmentCapacity

Number

봉사 정원

recruitments[].shelterName

String

보호소 이름

recruitments[].shelterImageUrl

String

보호소 이미지 url

pageInfo

Object

페이지 정보

pageInfo.totalElements

Number

총 요소 개수

pageInfo.hasNext

Boolean

다음 페이지 여부

+
+
+
+
+
+
+

2. 보호소

+
-
-
-
-

3. 봉사 모집

-
-
-

1) 봉사 모집글 등록

-
-

Request

-
-
HTTP request
-
-
+
+
+
+

3. 봉사 모집

+
+
+

1) 봉사 모집글 등록

+
+

Request

+
+
HTTP request
+
+
POST /api/shelters/recruitments HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE2OTk0MzYyNDgsInN1YiI6IjEiLCJleHAiOjE2OTk0MzcyNDgsInJvbGUiOiJST0xFX1NIRUxURVIifQ.XlN1zlgCSSxC95ms28vzyyau8b2ROv9iRPaVI-XuD4Q-PS54HMDERa5g7ifRyKNU
+Authorization: eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE2OTk0MzAyOTQsInN1YiI6IjEiLCJleHAiOjE2OTk0MzEyOTQsInJvbGUiOiJST0xFX1NIRUxURVIifQ.Aq-IUCvgEieH-UP9pZs6TmpiKYyJRDKdOm9WSgF1UkAWjL1owUjmnd1gfAYz6dAX
 Content-Length: 223
-X-CSRF-TOKEN: _-B_5m8GE2tOEZDP3yfW7tN6JLbX9KzSrSbMQYtGuRkr9U6vmtJG110zdwljJaiquwri3-UbCdTmlZr_yB6tdbxzjXpOxCvM
+X-CSRF-TOKEN: ZJzTdRvAsgaOs_6P84bKEV-rQlN3AA32_r2jGTLqbe8aj0_cAv_iEHr11zajhc_tw6v-cGqbbzISMWzbmIXFIFHYX9p_7C7p
 Host: localhost:8080
 
 {
   "title" : "title",
-  "startTime" : "2023-11-09T18:37:28.210436",
-  "endTime" : "2023-11-09T19:37:28.210436",
-  "deadline" : "2023-11-08T23:37:28.210436",
+  "startTime" : "2023-11-09T16:58:14.158667",
+  "endTime" : "2023-11-09T17:58:14.158667",
+  "deadline" : "2023-11-08T21:58:14.158667",
   "capacity" : 10,
   "content" : "content",
   "imageUrls" : [ ]
 }
-
-
-
-
-
Request headers
- ---- - - - - - - - - - - - - -
NameDescription

Authorization

보호소 액세스 토큰

-
-
-
Request fields
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
필드명타입필수값제약설명

title

String

true

1자 이상, 50자 이하

봉사 모집글 제목

startTime

String

true

yyyy-MM-dd’T’HH:mm:ss

봉사 시작 시간

endTime

String

true

yyyy-MM-dd’T’HH:mm:ss

봉사 종료 시간

deadline

String

true

yyyy-MM-dd’T’HH:mm:ss

봉사 모집 마감 시간

capacity

Number

true

1명 이상, 99명 이하

봉사 모집 정원

content

String

true

1자 이상, 1000자 이하

봉사 모집글 본문

imageUrls

Array

0장 이상, 5장 이하

봉사 모집글 이미지

-
-
-
-

Response

-
-
HTTP response
-
-
+
+
+
+
+
Request headers
+ + + + + + + + + + + + + + + + + +
NameDescription

Authorization

보호소 액세스 토큰

+
+
+
Request fields
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
필드명타입필수값제약설명

title

String

true

1자 이상, 50자 이하

봉사 모집글 제목

startTime

String

true

yyyy-MM-dd’T’HH:mm:ss

봉사 시작 시간

endTime

String

true

yyyy-MM-dd’T’HH:mm:ss

봉사 종료 시간

deadline

String

true

yyyy-MM-dd’T’HH:mm:ss

봉사 모집 마감 시간

capacity

Number

true

1명 이상, 99명 이하

봉사 모집 정원

content

String

true

1자 이상, 1000자 이하

봉사 모집글 본문

imageUrls

Array

0장 이상, 5장 이하

봉사 모집글 이미지

+
+
+
+

Response

+
+
HTTP response
+
+
HTTP/1.1 201 Created
 Location: /api/recruitments/1
 X-Content-Type-Options: nosniff
@@ -1393,479 +1214,273 @@ 
-
Response headers
- ---- - - - - - - - - - - - - -
NameDescription

Location

생성된 리소스에 대한 접근 api

-
-
-
-
-
- +
+
+
Response headers
+ + + + + + + + + + + + + + + + + +
NameDescription

Location

생성된 리소스에 대한 접근 api

+
+
+
+
+
+ -
-

5. 봉사 후기

-
-
-

보호소의 후기 리스트 조회

-
-

Request

-
-
HTTP request
-
-
-
GET /api/shelters/1/reviews?pageNumber=0&pageSize=10 HTTP/1.1
-Authorization: eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE2OTk0MzYyNDgsInN1YiI6IjEiLCJleHAiOjE2OTk0MzcyNDgsInJvbGUiOiJST0xFX1NIRUxURVIifQ.XlN1zlgCSSxC95ms28vzyyau8b2ROv9iRPaVI-XuD4Q-PS54HMDERa5g7ifRyKNU
-X-CSRF-TOKEN: Gq8eMhL-m93cACMG-Zun9WHLrZhZjhG-XGdG_3mFCjWc4hNseZ8nBnfPr-nxMkFln7aTxFavgKFg7ymTPlEjy0ixOwWlhnUN
-Host: localhost:8080
-
-
-
-
-
Request headers
- ---- - - - - - - - - - - - - -
NameDescription

Authorization

보호소 액세스 토큰

-
-
-
Path parameters
- - ---- - - - - - - - - - - - - -
Table 1. /api/shelters/{shelterId}/reviews
ParameterDescription

shelterId

보호소 ID

-
-
-
Query parameters
- ------ - - - - - - - - - - - - - - - - - - - - - - -
필드명필수값제약설명

pageNumber

true

페이지 번호

pageSize

true

페이지 사이즈

-
-
-
-

Response

-
-
HTTP response
-
-
-
HTTP/1.1 200 OK
-Content-Type: application/json;charset=UTF-8
-X-Content-Type-Options: nosniff
-X-XSS-Protection: 0
-Cache-Control: no-cache, no-store, max-age=0, must-revalidate
-Pragma: no-cache
-Expires: 0
-Content-Length: 401
+    
+
+
+

5. 봉사 후기

+
-{ - "reviews" : [ { - "reviewId" : 1, - "reviewCreatedAt" : "2023-11-08T18:37:28.558638", - "reviewContent" : "reviewContent", - "reviewImageUrls" : [ "imageUrl1", "imageUrl2" ], - "volunteerName" : "김봉사", - "volunteerTemperature" : 36, - "volunteerImageUrl" : "image/url", - "VolunteerReviewCount" : 1 - } ], - "pageInfo" : { - "totalElements" : 1, - "hasNext" : false - } -} -
-
-
-
-
Response fields
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

reviews

Array

리뷰 리스트

reviews[].reviewId

Number

리뷰 ID

reviews[].reviewCreatedAt

String

리뷰 생성일

reviews[].reviewContent

String

리뷰 내용

reviews[].reviewImageUrls

Array

리뷰 이미지 url 리스트

reviews[].volunteerName

String

봉사자 이름

reviews[].volunteerTemperature

Number

봉사자 온도

reviews[].volunteerImageUrl

String

봉사자 프로필 이미지 url

reviews[].VolunteerReviewCount

Number

봉사자 리뷰 수

pageInfo

Object

페이지 정보

pageInfo.totalElements

Number

총 요소 개수

pageInfo.hasNext

Boolean

다음 페이지 여부

-
-
-
-
-
- + -

봉사자

-
-

1. 봉사자

-
+
+
+

봉사자

+
+

1. 봉사자

+
-
-
-
-

2. 보호소

-
+
+
+
+

2. 보호소

+
-
-
- + - + - + - + -

Enum 문서화

-
-

1. 보호 동물 성격

-
-
-

|보호 동물 성격

-
- ---- - - - - - - - - - - - - - - - - - - - - - - - - -
코드코드명

QUIET

QUIET

NORMAL

NORMAL

ACTIVE

ACTIVE

VERY_ACTIVE

VERY_ACTIVE

-
-
-
-

2. 보호 동물 성별

-
-
-

|보호 동물 성별

-
- ---- - - - - - - - - - - - - - - - - -
코드코드명

MALE

MALE

FEMALE

FEMALE

-
-
-
-

3. 보호 동물 종류

-
-
-

|보호 동물 종류

-
- ---- - - - - - - - - - - - - - - - - - - - - -
코드코드명

DOG

DOG

CAT

CAT

ETC

ETC

-
-
-
-

4. 봉사 신청자 상태

-
-
-

|보호 동물 종류

-
- ---- - - - - - - - - - - - - - - - - - - - - -
코드코드명

DOG

DOG

CAT

CAT

ETC

ETC

-
-
-
-

5. 봉사자 성별

-
-
-

|보호 동물 종류

-
- ---- - - - - - - - - - - - - - - - - - - - - -
코드코드명

DOG

DOG

CAT

CAT

ETC

ETC

-
-
+
+
+

Enum 문서화

+
+

1. 보호 동물 성격

+
+
+

|보호 동물 성격

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
코드코드명

QUIET

QUIET

NORMAL

NORMAL

ACTIVE

ACTIVE

VERY_ACTIVE

VERY_ACTIVE

+
+
+
+

2. 보호 동물 성별

+
+
+

|보호 동물 성별

+
+ + + + + + + + + + + + + + + + + + + + + +
코드코드명

MALE

MALE

FEMALE

FEMALE

+
+
+
+

3. 보호 동물 종류

+
+
+

|보호 동물 종류

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
코드코드명

DOG

DOG

CAT

CAT

ETC

ETC

+
+
+
+

4. 봉사 신청자 상태

+
+
+

|보호 동물 종류

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
코드코드명

DOG

DOG

CAT

CAT

ETC

ETC

+
+
+
+

5. 봉사자 성별

+
+
+

|보호 동물 종류

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
코드코드명

DOG

DOG

CAT

CAT

ETC

ETC

+
+
\ No newline at end of file diff --git a/src/test/java/com/clova/anifriends/domain/review/controller/ReviewControllerTest.java b/src/test/java/com/clova/anifriends/domain/review/controller/ReviewControllerTest.java index 3060b6a34..7a8a0df28 100644 --- a/src/test/java/com/clova/anifriends/domain/review/controller/ReviewControllerTest.java +++ b/src/test/java/com/clova/anifriends/domain/review/controller/ReviewControllerTest.java @@ -42,7 +42,7 @@ import com.clova.anifriends.domain.review.dto.request.RegisterReviewRequest; import com.clova.anifriends.domain.review.dto.response.FindReviewResponse; import com.clova.anifriends.domain.review.dto.response.FindShelterReviewsByVolunteerResponse; -import com.clova.anifriends.domain.review.dto.response.FindShelterReviewsByShelterResponse; +import com.clova.anifriends.domain.review.dto.response.FindShelterReviewsResponse; import com.clova.anifriends.domain.review.dto.response.FindVolunteerReviewsResponse; import com.clova.anifriends.domain.shelter.Shelter; import com.clova.anifriends.domain.shelter.ShelterImage; @@ -104,7 +104,7 @@ void findReview() throws Exception { @Test @DisplayName("성공: 보호소가 받은 봉사자 리뷰 목록 조회 api 호출") - void findShelterReviewsByShelter() throws Exception { + void findShelterReviews() throws Exception { //given Long shelterId = 1L; Shelter shelter = shelter(); @@ -119,9 +119,9 @@ void findShelterReviewsByShelter() throws Exception { ReflectionTestUtils.setField(review, "reviewId", 1L); ReflectionTestUtils.setField(review, "createdAt", LocalDateTime.now()); PageImpl reviewPage = new PageImpl<>(List.of(review)); - FindShelterReviewsByShelterResponse response = FindShelterReviewsByShelterResponse.from(reviewPage); + FindShelterReviewsResponse response = FindShelterReviewsResponse.from(reviewPage); - given(reviewService.findShelterReviewsByShelter(anyLong(), any())).willReturn(response); + given(reviewService.findShelterReviews(anyLong(), any())).willReturn(response); //when ResultActions resultActions @@ -146,12 +146,12 @@ void findShelterReviewsByShelter() throws Exception { responseFields( fieldWithPath("reviews").type(ARRAY).description("리뷰 리스트"), fieldWithPath("reviews[].reviewId").type(NUMBER).description("리뷰 ID"), - fieldWithPath("reviews[].reviewCreatedAt").type(STRING).description("리뷰 생성일"), - fieldWithPath("reviews[].reviewContent").type(STRING).description("리뷰 내용"), + fieldWithPath("reviews[].createdAt").type(STRING).description("리뷰 생성일"), + fieldWithPath("reviews[].content").type(STRING).description("리뷰 내용"), fieldWithPath("reviews[].reviewImageUrls").type(ARRAY) .description("리뷰 이미지 url 리스트"), fieldWithPath("reviews[].volunteerName").type(STRING).description("봉사자 이름"), - fieldWithPath("reviews[].volunteerTemperature").type(NUMBER).description("봉사자 온도"), + fieldWithPath("reviews[].temperature").type(NUMBER).description("봉사자 온도"), fieldWithPath("reviews[].volunteerImageUrl").type(STRING) .description("봉사자 프로필 이미지 url"), fieldWithPath("reviews[].VolunteerReviewCount").type(NUMBER) diff --git a/src/test/java/com/clova/anifriends/domain/review/service/ReviewServiceTest.java b/src/test/java/com/clova/anifriends/domain/review/service/ReviewServiceTest.java index a328d42c5..ecd3a889f 100644 --- a/src/test/java/com/clova/anifriends/domain/review/service/ReviewServiceTest.java +++ b/src/test/java/com/clova/anifriends/domain/review/service/ReviewServiceTest.java @@ -24,7 +24,7 @@ import com.clova.anifriends.domain.review.Review; import com.clova.anifriends.domain.review.dto.response.FindReviewResponse; import com.clova.anifriends.domain.review.dto.response.FindShelterReviewsByVolunteerResponse; -import com.clova.anifriends.domain.review.dto.response.FindShelterReviewsByShelterResponse; +import com.clova.anifriends.domain.review.dto.response.FindShelterReviewsResponse; import com.clova.anifriends.domain.review.dto.response.FindVolunteerReviewsResponse; import com.clova.anifriends.domain.review.exception.ApplicantNotFoundException; import com.clova.anifriends.domain.review.exception.ReviewBadRequestException; @@ -155,12 +155,12 @@ void exceptionWhenAlreadyExistReview() { } @Nested - @DisplayName("findShelterReviewsByShelter 메서드 실행 시") - class FindShelterReviewsByShelterTest { + @DisplayName("findShelterReviews 메서드 실행 시") + class FindShelterReviewsTest { @Test @DisplayName("성공") - void findShelterReviewsByShelter() { + void findShelterReviews() { //given Long shelterId = 1L; PageRequest pageRequest = PageRequest.of(0, 10); @@ -170,14 +170,14 @@ void findShelterReviewsByShelter() { Applicant applicant = applicant(recruitment, volunteer, ATTENDANCE); Review review = review(applicant); PageImpl reviewPage = new PageImpl<>(List.of(review)); - FindShelterReviewsByShelterResponse expected = FindShelterReviewsByShelterResponse.from(reviewPage); + FindShelterReviewsResponse expected = FindShelterReviewsResponse.from(reviewPage); given(reviewRepository.findAllByShelterId(anyLong(), any())) .willReturn(reviewPage); //then - FindShelterReviewsByShelterResponse response - = reviewService.findShelterReviewsByShelter(shelterId, pageRequest); + FindShelterReviewsResponse response + = reviewService.findShelterReviews(shelterId, pageRequest); //then assertThat(response).usingRecursiveComparison()