From 76ae0395f5ee5dcb02bfee97edf4c2db3de44769 Mon Sep 17 00:00:00 2001 From: hseong3243 <48748265+hseong3243@users.noreply.github.com> Date: Sun, 17 Dec 2023 12:10:54 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EB=B3=B4=ED=98=B8=20=EB=8F=99?= =?UTF-8?q?=EB=AC=BC=20=EB=AA=A9=EB=A1=9D=20=EC=A1=B0=ED=9A=8C=20=EC=BF=BC?= =?UTF-8?q?=EB=A6=AC=EB=A5=BC=20=EA=B0=9C=EC=84=A0=ED=95=9C=EB=8B=A4.=20(#?= =?UTF-8?q?440)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor: 보호 동물 목록 조회에 페치 조인을 추가한다. * refactor: 보호 동물 목록 조회 쿼리를 개선한다. * refactor: 보호 동물 목록 조회 서비스 로직이 호출하는 쿼리를 변경한다. * refactor: 보호 동물 등록 서비스 메서드 파라미터를 개선한다. * refactor: 중복된 클래스를 제거한다. * refactor: 잘못된 변수명을 수정한다. --- .../animal/controller/AnimalController.java | 14 +- .../dto/response/FindAnimalsResponse.java | 9 - .../domain/animal/mapper/AnimalMapper.java | 26 -- .../repository/AnimalRepositoryCustom.java | 2 +- .../repository/AnimalRepositoryImpl.java | 18 +- .../domain/animal/service/AnimalMapper.java | 27 ++ .../domain/animal/service/AnimalService.java | 32 +- src/main/resources/static/docs/index.html | 404 +++++++++--------- .../controller/AnimalControllerTest.java | 21 +- .../repository/AnimalRepositoryTest.java | 12 +- .../service/AnimalServiceIntegrationTest.java | 81 +++- .../animal/service/AnimalServiceTest.java | 52 +-- 12 files changed, 418 insertions(+), 280 deletions(-) delete mode 100644 src/main/java/com/clova/anifriends/domain/animal/mapper/AnimalMapper.java create mode 100644 src/main/java/com/clova/anifriends/domain/animal/service/AnimalMapper.java diff --git a/src/main/java/com/clova/anifriends/domain/animal/controller/AnimalController.java b/src/main/java/com/clova/anifriends/domain/animal/controller/AnimalController.java index ed8d3281f..5759ec143 100644 --- a/src/main/java/com/clova/anifriends/domain/animal/controller/AnimalController.java +++ b/src/main/java/com/clova/anifriends/domain/animal/controller/AnimalController.java @@ -40,8 +40,18 @@ public class AnimalController { public ResponseEntity registerAnimal( @LoginUser Long volunteerId, @RequestBody @Valid RegisterAnimalRequest registerAnimalRequest) { - RegisterAnimalResponse registerAnimalResponse = animalService.registerAnimal(volunteerId, - registerAnimalRequest); + RegisterAnimalResponse registerAnimalResponse = animalService.registerAnimal( + volunteerId, + registerAnimalRequest.name(), + registerAnimalRequest.birthDate(), + registerAnimalRequest.type(), + registerAnimalRequest.breed(), + registerAnimalRequest.gender(), + registerAnimalRequest.isNeutered(), + registerAnimalRequest.active(), + registerAnimalRequest.weight(), + registerAnimalRequest.information(), + registerAnimalRequest.imageUrls()); URI location = URI.create("/api/shelters/animals/" + registerAnimalResponse.animalId()); return ResponseEntity.created(location).body(registerAnimalResponse); } diff --git a/src/main/java/com/clova/anifriends/domain/animal/dto/response/FindAnimalsResponse.java b/src/main/java/com/clova/anifriends/domain/animal/dto/response/FindAnimalsResponse.java index 50caf49db..13035e3f8 100644 --- a/src/main/java/com/clova/anifriends/domain/animal/dto/response/FindAnimalsResponse.java +++ b/src/main/java/com/clova/anifriends/domain/animal/dto/response/FindAnimalsResponse.java @@ -4,7 +4,6 @@ import com.clova.anifriends.domain.animal.repository.response.FindAnimalsResult; import com.clova.anifriends.domain.common.PageInfo; import java.util.List; -import org.springframework.data.domain.Page; import org.springframework.data.domain.Slice; public record FindAnimalsResponse( @@ -42,14 +41,6 @@ public static FindAnimalResponse from(FindAnimalsResult animal) { } - public static FindAnimalsResponse from(Page pagination) { - PageInfo pageInfo = PageInfo.of(pagination.getTotalElements(), pagination.hasNext()); - List findAnimalByVolunteerResponses = pagination.get() - .map(FindAnimalResponse::from).toList(); - - return new FindAnimalsResponse(pageInfo, findAnimalByVolunteerResponses); - } - public static FindAnimalsResponse fromV2(Slice animalsWithPagination, Long count) { PageInfo pageInfo = PageInfo.of(count, animalsWithPagination.hasNext()); diff --git a/src/main/java/com/clova/anifriends/domain/animal/mapper/AnimalMapper.java b/src/main/java/com/clova/anifriends/domain/animal/mapper/AnimalMapper.java deleted file mode 100644 index 8dc85bd0b..000000000 --- a/src/main/java/com/clova/anifriends/domain/animal/mapper/AnimalMapper.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.clova.anifriends.domain.animal.mapper; - -import com.clova.anifriends.domain.animal.Animal; -import com.clova.anifriends.domain.animal.dto.request.RegisterAnimalRequest; -import com.clova.anifriends.domain.shelter.Shelter; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; - -@NoArgsConstructor(access = AccessLevel.PROTECTED) -public final class AnimalMapper { - - public static Animal toAnimal(Shelter shelter, RegisterAnimalRequest registerAnimalRequest) { - return new Animal( - shelter, - registerAnimalRequest.name(), - registerAnimalRequest.birthDate(), - registerAnimalRequest.type(), - registerAnimalRequest.breed(), - registerAnimalRequest.gender(), - registerAnimalRequest.isNeutered(), - registerAnimalRequest.active(), - registerAnimalRequest.weight(), - registerAnimalRequest.information(), - registerAnimalRequest.imageUrls()); - } -} diff --git a/src/main/java/com/clova/anifriends/domain/animal/repository/AnimalRepositoryCustom.java b/src/main/java/com/clova/anifriends/domain/animal/repository/AnimalRepositoryCustom.java index 9e487f52c..c972c19c8 100644 --- a/src/main/java/com/clova/anifriends/domain/animal/repository/AnimalRepositoryCustom.java +++ b/src/main/java/com/clova/anifriends/domain/animal/repository/AnimalRepositoryCustom.java @@ -27,7 +27,7 @@ Page findAnimalsByShelter( Pageable pageable ); - Page findAnimals( + Page findAnimals( AnimalType type, AnimalActive active, AnimalNeuteredFilter neuteredFilter, diff --git a/src/main/java/com/clova/anifriends/domain/animal/repository/AnimalRepositoryImpl.java b/src/main/java/com/clova/anifriends/domain/animal/repository/AnimalRepositoryImpl.java index 75077e19e..7eda2ce3f 100644 --- a/src/main/java/com/clova/anifriends/domain/animal/repository/AnimalRepositoryImpl.java +++ b/src/main/java/com/clova/anifriends/domain/animal/repository/AnimalRepositoryImpl.java @@ -81,7 +81,7 @@ public Page findAnimalsByShelter( } @Override - public Page findAnimals( + public Page findAnimals( AnimalType type, AnimalActive active, AnimalNeuteredFilter neuteredFilter, @@ -90,8 +90,22 @@ public Page findAnimals( AnimalSize size, Pageable pageable ) { - List animals = query.selectFrom(animal) + List animals = query + .select(new QFindAnimalsResult( + animal.animalId, + animal.name.name, + animal.createdAt, + animal.shelter.name.name, + animal.shelter.addressInfo.address, + ExpressionUtils.as( + select(animalImage.imageUrl.max()) + .from(animalImage) + .where(animalImage.animal.eq(animal)) + , "animageImageUrl") + )) + .from(animal) .join(animal.shelter) + .leftJoin(animal.shelter.image) .where( animalTypeContains(type), animalActiveContains(active), diff --git a/src/main/java/com/clova/anifriends/domain/animal/service/AnimalMapper.java b/src/main/java/com/clova/anifriends/domain/animal/service/AnimalMapper.java new file mode 100644 index 000000000..6b7a6f424 --- /dev/null +++ b/src/main/java/com/clova/anifriends/domain/animal/service/AnimalMapper.java @@ -0,0 +1,27 @@ +package com.clova.anifriends.domain.animal.service; + +import com.clova.anifriends.domain.animal.dto.response.FindAnimalsResponse; +import com.clova.anifriends.domain.animal.dto.response.FindAnimalsResponse.FindAnimalResponse; +import com.clova.anifriends.domain.animal.repository.response.FindAnimalsResult; +import com.clova.anifriends.domain.common.PageInfo; +import java.util.List; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; +import org.springframework.data.domain.Page; + +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public final class AnimalMapper { + + public static FindAnimalsResponse resultToResponse(Page animalPage) { + List content = animalPage + .map(result -> new FindAnimalResponse( + result.getAnimalId(), + result.getAnimalName(), + result.getShelterName(), + result.getShelterAddress(), + result.getAnimalImageUrl() + )).toList(); + PageInfo pageInfo = PageInfo.of(animalPage.getTotalElements(), animalPage.hasNext()); + return new FindAnimalsResponse(pageInfo, content); + } +} diff --git a/src/main/java/com/clova/anifriends/domain/animal/service/AnimalService.java b/src/main/java/com/clova/anifriends/domain/animal/service/AnimalService.java index b277379c4..78a416377 100644 --- a/src/main/java/com/clova/anifriends/domain/animal/service/AnimalService.java +++ b/src/main/java/com/clova/anifriends/domain/animal/service/AnimalService.java @@ -3,13 +3,11 @@ import com.clova.anifriends.domain.animal.Animal; import com.clova.anifriends.domain.animal.AnimalAge; import com.clova.anifriends.domain.animal.AnimalSize; -import com.clova.anifriends.domain.animal.dto.request.RegisterAnimalRequest; import com.clova.anifriends.domain.animal.dto.response.FindAnimalDetail; import com.clova.anifriends.domain.animal.dto.response.FindAnimalsByShelterResponse; import com.clova.anifriends.domain.animal.dto.response.FindAnimalsResponse; import com.clova.anifriends.domain.animal.dto.response.RegisterAnimalResponse; import com.clova.anifriends.domain.animal.exception.AnimalNotFoundException; -import com.clova.anifriends.domain.animal.mapper.AnimalMapper; import com.clova.anifriends.domain.animal.repository.AnimalCacheRepository; import com.clova.anifriends.domain.animal.repository.AnimalRepository; import com.clova.anifriends.domain.animal.repository.response.FindAnimalsResult; @@ -44,9 +42,30 @@ public class AnimalService { @Transactional public RegisterAnimalResponse registerAnimal( - Long shelterId, RegisterAnimalRequest registerAnimalRequest) { + Long shelterId, + String name, + LocalDate birthDate, + String type, + String breed, + String gender, + Boolean isNeutered, + String active, + Double weight, + String information, + List imageUrls) { Shelter shelter = getShelterById(shelterId); - Animal animal = AnimalMapper.toAnimal(shelter, registerAnimalRequest); + Animal animal = new Animal( + shelter, + name, + birthDate, + type, + breed, + gender, + isNeutered, + active, + weight, + information, + imageUrls); animalRepository.save(animal); animalCacheRepository.saveAnimal(animal); animalCacheRepository.increaseTotalNumberOfAnimals(); @@ -94,7 +113,7 @@ public FindAnimalsResponse findAnimals( AnimalGender gender, AnimalSize size, Pageable pageable) { - Page animalsWithPagination = animalRepository.findAnimals( + Page animalPage = animalRepository.findAnimals( type, active, neuteredFilter, @@ -103,8 +122,7 @@ public FindAnimalsResponse findAnimals( size, pageable ); - - return FindAnimalsResponse.from(animalsWithPagination); + return AnimalMapper.resultToResponse(animalPage); } @Transactional(readOnly = true) diff --git a/src/main/resources/static/docs/index.html b/src/main/resources/static/docs/index.html index d4c183efc..5615c5634 100644 --- a/src/main/resources/static/docs/index.html +++ b/src/main/resources/static/docs/index.html @@ -639,7 +639,7 @@
HTT
POST /api/auth/shelters/login HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Content-Length: 91
-X-CSRF-TOKEN: wxU2N19-BbIP1alwKhEXEb7In2LCE-6iaI2gxdke2jxRE1BS9CwBBDtJN4sitJpGGjwjJIapslumJ9-PULiT8bwq7Q4zcjZh
+X-CSRF-TOKEN: SlOHpQIjYv3jFQ9_tV7wenZkVvTtNOlmOzGrrDzZD_kEakjGf2DhxGBHAc3Odj1K1HPEQxdce5XbVY1LXleZngm9OchlC3D0
 Host: localhost:8080
 
 {
@@ -785,7 +785,7 @@ 
POST /api/auth/volunteers/login HTTP/1.1 Content-Type: application/json;charset=UTF-8 Content-Length: 91 -X-CSRF-TOKEN: _tN0mrb4LAFHlpeGRLPLBugw2gkgIkN6thXkDqzDAE9JyCmjy-tArtebTWBqoaC3Ip7_YokJ9zFBEiJX0CTXbc_7Zix_8BiS +X-CSRF-TOKEN: Q_258L0_YAe1ue5v9uL6Dgo-zzRIsd3K27Ok6f7wxikFvKjpIsyKk4VZATaY3Npbl8_Oa28H4g150rzn7tWW0MqW9h03j5nd Host: localhost:8080 { @@ -929,9 +929,9 @@
POST /api/auth/volunteers/refresh HTTP/1.1
-X-CSRF-TOKEN: 3CsUS4B5BxjUDz5lJbrwc9z22U0iU3Uek_QOmI7nmGpALQA96BMiKuRLMH35PwoGFJfEQ-6U9HQQYEUz9ZdrqbrfoF4mHDVc
+X-CSRF-TOKEN: yxR5pWbpLSQfeGe0ShEkeSl1mf5xuZA_V3a5FwHg4sJWGVu4qSEfxl7ZHhcyHleNKTwQHRsTtJ8ViPUSZhLddTaGgfBmKGuI
 Host: localhost:8080
-Cookie: volunteerRefreshToken=eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTcsInN1YiI6IjEiLCJleHAiOjE3MDE0Mjg3OTcsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.BJpTwXHqjv0sKstOmvxXO2CkNfBpuM3vVFJf6snxgVaH8k3LSAcSUeyn1AvYJKQ_
+Cookie: volunteerRefreshToken=eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTQsInN1YiI6IjEiLCJleHAiOjE3MDI3NDIwMTQsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.u9z8JGbz1B6WfHloLAZpSoXAxh-6Z8RO-nfw1oxzlpda8H0OamkciSsr_KjxXnc7
 Content-Type: application/x-www-form-urlencoded
@@ -968,14 +968,14 @@
@@ -1046,9 +1046,9 @@
POST /api/auth/shelters/refresh HTTP/1.1
-X-CSRF-TOKEN: VjLwCDQcNVpMCBTa7hX5BixhsNzL8eI_FwdGDVa0Urj31wU9NAXGMFYtBGJhaSHrjTjNZBtXneX-kNISdjZzb2-MN4mS5DUF
+X-CSRF-TOKEN: X3GMenbZjChDNJXHg9LL0gzU7lF5kdAVBQsvptnSzk3u0LVRbBPoTxLhvBhuAfb3sv__tG-ww2lAoeQ4PW0dnuvi-nvestQy
 Host: localhost:8080
-Cookie: shelterRefreshToken=eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTcsInN1YiI6IjEiLCJleHAiOjE3MDE0Mjg3OTcsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.BJpTwXHqjv0sKstOmvxXO2CkNfBpuM3vVFJf6snxgVaH8k3LSAcSUeyn1AvYJKQ_
+Cookie: shelterRefreshToken=eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTQsInN1YiI6IjEiLCJleHAiOjE3MDI3NDIwMTQsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.u9z8JGbz1B6WfHloLAZpSoXAxh-6Z8RO-nfw1oxzlpda8H0OamkciSsr_KjxXnc7
 Content-Type: application/x-www-form-urlencoded
@@ -1085,14 +1085,14 @@
@@ -1163,9 +1163,9 @@
POST /api/auth/volunteers/logout HTTP/1.1
-X-CSRF-TOKEN: dFHj11kRnwKVQr3XyKJOkIbj7Rpk7nBlz-H3iu4jHOA-3O-dRTeGsjshrma4etvk-Y9687SGwHtU2hRI-dTB6NdAKIZc7oyq
+X-CSRF-TOKEN: jSbgfeFiel4dFEVPfsx1_rtYKM1YEddNslrN-KC51gMSAuhJuUXVGNhbS24wcnMtRuFBy9htBaxoJuRgi2z-wcPdsGB0NYt-
 Host: localhost:8080
-Cookie: volunteerRefreshToken=eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTcsInN1YiI6IjEiLCJleHAiOjE3MDE0Mjg3OTcsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.BJpTwXHqjv0sKstOmvxXO2CkNfBpuM3vVFJf6snxgVaH8k3LSAcSUeyn1AvYJKQ_
+Cookie: volunteerRefreshToken=eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTQsInN1YiI6IjEiLCJleHAiOjE3MDI3NDIwMTQsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.u9z8JGbz1B6WfHloLAZpSoXAxh-6Z8RO-nfw1oxzlpda8H0OamkciSsr_KjxXnc7
 Content-Type: application/x-www-form-urlencoded
@@ -1238,9 +1238,9 @@
POST /api/auth/shelters/logout HTTP/1.1
-X-CSRF-TOKEN: ijrIgUBVnhVUXkw2aKwa9zTNpzsx83q79SuWpKo5xx-B5lLJswrx5SI2qHZ5aSpTC4EukweoiloCwhyWzRP0wZoA8ibn0jCo
+X-CSRF-TOKEN: MYWVVCe4-yp1I4bYImBJrHgCLEAq3uHQ9HyCLb00zllH65BjU7StYheJzUhYQrPtQU19yh47AXgf79f9wB3jG4hW_WF33qFR
 Host: localhost:8080
-Cookie: shelterRefreshToken=eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTcsInN1YiI6IjEiLCJleHAiOjE3MDE0Mjg3OTcsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.BJpTwXHqjv0sKstOmvxXO2CkNfBpuM3vVFJf6snxgVaH8k3LSAcSUeyn1AvYJKQ_
+Cookie: shelterRefreshToken=eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTQsInN1YiI6IjEiLCJleHAiOjE3MDI3NDIwMTQsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.u9z8JGbz1B6WfHloLAZpSoXAxh-6Z8RO-nfw1oxzlpda8H0OamkciSsr_KjxXnc7
 Content-Type: application/x-www-form-urlencoded
@@ -1326,7 +1326,7 @@
POST /api/volunteers/email HTTP/1.1 Content-Type: application/json;charset=UTF-8 Content-Length: 32 -X-CSRF-TOKEN: A3qCGRvfMDew6FBYnuuJADsFrOfBJpTLGcKy4dR8tGIkuo5oMky1Lnq8BVKd3WY5-8a9OAszgd75EfbmK_aHgudL11pCg79Z +X-CSRF-TOKEN: MrReIl_aDZTYUt7aejKRG8Kl_a2azgIQyqqHi2AT2BCmoYr8UNZmQWm8b_b1Zey-Qh-lK_LA0JWq-mc9-prhuFUguSWVmbnO Host: localhost:8080 { @@ -1422,7 +1422,7 @@
POST /api/volunteers HTTP/1.1 Content-Type: application/json;charset=UTF-8 Content-Length: 169 -X-CSRF-TOKEN: 8yyZ72Dp6P9DHU1yrdjoMaBNwgpWUSt3dO4tZZ1WBFjUtaoDxxWsiVWI2sluLyxFy_XcAcUs7zMwY0paQdZJAPg1ZTvjhZM3 +X-CSRF-TOKEN: zrYifKZKy74C56HEvR_EDcRCFiUorcmMZOGs3814yp_hpXg1qtAXHsJ6_ocv3pHyjzLwPqEjO0RKnqihV4PKvfoa8qbUkx4N Host: localhost:8080 { @@ -1584,8 +1584,8 @@
GET /api/volunteers/me HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTUsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTUsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.K84ApMrOCE4xGin6pveg-HKR1TVGkiVEra14ZUWik_dA0trB5R5HFTSG9bxF5vzT
-X-CSRF-TOKEN: eJn5hkQn2s4Fsu5KhRl1g5PWazP96u58X_KybtNUMHY_3G-lHP3KtyBF6Kso09p4vTRBu6W0RlLJ0t5RZsOGVuFtVhUN71qQ
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMjMsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMjMsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.dM9azJlTP8qKrQhIKV2UjurRGy9Cq_2XtAjb6zRrXiy6wUoekeDhG4Ge1MF8kJ3z
+X-CSRF-TOKEN: cgJzarx2sB_hvYUr7CFcVCKOuNGDCP3ngidLCWzNc14eV0mVQzFADItOhijMj-Qf3wxoZBS7lem3O57K5BN8a1iuRG56M3z2
 Host: localhost:8080
@@ -1715,9 +1715,9 @@
PATCH /api/volunteers/me/passwords HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTUsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTUsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.K84ApMrOCE4xGin6pveg-HKR1TVGkiVEra14ZUWik_dA0trB5R5HFTSG9bxF5vzT
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMjQsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMjQsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.XqcUaWOENeAdsvdXIfL7jRqDTFP7NSMPbiuhnwRhpXYG4vntnPOwU4zwApPZcBiU
 Content-Length: 76
-X-CSRF-TOKEN: Dx3QRxcHFH2eEqLVEjnsTKPnOYgvW7ec3y6lBhJFsXOXwaZKbSjiISVicRmzKpfiIhTYdZvVFOpJaoax7x2RYHN2iUbx8MV9
+X-CSRF-TOKEN: _TyPSSzFNeuwq29eAOckYyyFZXs4vObIJfYN1fPcdCM0CGX3yQ7ufxvyBI6dzV5nMMoQABy1SBld2dflFMU45ZHrRkYHPVHO
 Host: localhost:8080
 
 {
@@ -1811,15 +1811,15 @@ 
PATCH /api/volunteers/me HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTUsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTUsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.K84ApMrOCE4xGin6pveg-HKR1TVGkiVEra14ZUWik_dA0trB5R5HFTSG9bxF5vzT
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMjMsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMjMsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.dM9azJlTP8qKrQhIKV2UjurRGy9Cq_2XtAjb6zRrXiy6wUoekeDhG4Ge1MF8kJ3z
 Content-Length: 153
-X-CSRF-TOKEN: ofxTJGMi2a1yQcC7crHsrCQBc0MUga4o9vDAtXj2RqfNoyGtx8kxEwYW6phfI6PZFpzYyRNjXiEktJkFkMKjhUuVJZ-omhTJ
+X-CSRF-TOKEN: cwAUVJ46TrrjTen_Adp-1AViAib8OcQSGv3Kn3nfDoWlv6NTQ2MiN6gDeo7OL42aOPdK4WBRL0edWqU_eZvyqRznaLPAjsdk
 Host: localhost:8080
 
 {
   "name" : "새로운이름",
   "gender" : "MALE",
-  "birthDate" : "2023-12-01",
+  "birthDate" : "2023-12-16",
   "phoneNumber" : "010-9999-9999",
   "imageUrl" : "www.aws.s3.com/2"
 }
@@ -1936,8 +1936,8 @@
GET /api/shelters/volunteers/1/profile HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTUsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTUsInJvbGUiOiJST0xFX1NIRUxURVIifQ.6Ma_fCVl3_208u052ESfbJii2wKsZFLWb6hI8Gb5xFraKFFS7eWPMEcWWQGL8eYU
-X-CSRF-TOKEN: Txa_n39-LJStRogitSrqen-u9iFyAqoTfHSy95Q0h8jReoBzeSeK-0xGSKyAIOxAhwfeSxuY2xlDZs8-S0KExKAN4_nlG-ZB
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMjMsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMjMsInJvbGUiOiJST0xFX1NIRUxURVIifQ.alOm9VlmcxT9X4GIjtQmlhyoe6P-LBBaiLZjmrWZO8s32oS0bA9kKOj8mdGpl-UC
+X-CSRF-TOKEN: p21UZceAgGnpoqXvRfoNDa9I8rMWgNBMkw_-zATLKRUguwvUkFlnVaG5sQzEwZeLdNc5PZoq34sv4-hhp2vHrmD7ESIZgzu1
 Host: localhost:8080
@@ -2056,7 +2056,7 @@
POST /api/shelters/email HTTP/1.1 Content-Type: application/json;charset=UTF-8 Content-Length: 33 -X-CSRF-TOKEN: egZCki489Dhci8BfOFTaItEB5Z0m2mNy5E-WBmC0--RtQPX8G2V28R4JzQlxvfY-D3nuEOJlyKUT6wBfhSv3M1GNz9wPdpGa +X-CSRF-TOKEN: Kqjn4WyJdB5H-W7NgqcixqouSpJKli83LcK1kMypacpHK54nHMzW1V3vRChqz1mou4oW_skeZ6t89R0aH6eFpPTIUf1xHfwU Host: localhost:8080 { @@ -2152,7 +2152,7 @@
POST /api/shelters HTTP/1.1 Content-Type: application/json;charset=UTF-8 Content-Length: 305 -X-CSRF-TOKEN: 50yPylAFn1Mbdjpf0bRhydSjhPkqlyAFv3Oz4Rea6xiG73uv1X7t_jIzqWQ2QgNotZlV_-CWqcAd8kIo3UKFhCD_inrki0zN +X-CSRF-TOKEN: NTy-dPHuzDquKKB9AgGlNm5zzFm3oT83akWQieAba_M7A2hgDAuHF8OL_gODSZBKYyyRAg0S4WGPklkaC3zxvoF6CcQMMQpT Host: localhost:8080 { @@ -2325,8 +2325,8 @@
GET /api/shelters/1/profile HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTQsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTQsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.l6x3x9bZ2NMv3ffoB9fkIJXg3D97sVNzCLVYMKIx7pNMA-EJG85N9nYhGExHLFC8
-X-CSRF-TOKEN: 02NqLjyljUWJEuj9qpYiwTqqGEPBiDZKqSMbdZf7qI6BDwuktwZYHQ-S632kK9CcybsW9Q2TNSGj7VNnnUErF6_Mm73lajyR
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMjMsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMjMsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.dM9azJlTP8qKrQhIKV2UjurRGy9Cq_2XtAjb6zRrXiy6wUoekeDhG4Ge1MF8kJ3z
+X-CSRF-TOKEN: WrWHo3Wh-2343pltv1egtT5YlHjJ4EJ0dgf1_qDI-4zK2GN5bIS_wE3DylzV7_pa2XqU0FppuRn6giNZT2KWz5X6mLX56ldB
 Host: localhost:8080
@@ -2451,7 +2451,7 @@
GET /api/shelters/1/profile/simple HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-X-CSRF-TOKEN: 7caYMvx4g1pGVZ7lKpCw5EN5kZCiA1UtXWOfvtWIFL0ABtPH1KKtAs0asG5rN6nSG72E13ROvKmVMWwAPlqtirC4II01Z-b-
+X-CSRF-TOKEN: hfs3BUt7nhTlEjHEAmgduvzi6369ceM5aTToLbdFPgDZeFD6sc4FNX1M_SLIdwXyM0Upg5rbxhyNQdMUCgXbT48gXGLvQWPK
 Host: localhost:8080
@@ -2557,8 +2557,8 @@
GET /api/shelters/me HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTQsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTQsInJvbGUiOiJST0xFX1NIRUxURVIifQ.dMgnp5tLTDeADQQXWVyQhaxzRu1AgLhkRi5iIFVy0vAS3kyYors9n0lOTdcQ5FoO
-X-CSRF-TOKEN: jjELp9bZFpRwhakd92sII5qlj568OKf58jJENKVGtjPrkeeKuwJuk7XuJPJd58orlUY8Gq6cov-NWZXUwARzVZV2hgaK8N-5
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMjMsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMjMsInJvbGUiOiJST0xFX1NIRUxURVIifQ.alOm9VlmcxT9X4GIjtQmlhyoe6P-LBBaiLZjmrWZO8s32oS0bA9kKOj8mdGpl-UC
+X-CSRF-TOKEN: FnZSKKGRCeWWKA9ZeqhUoEk6jtDF47OHcZgqxBUeHkxGNVFjJBA3HJSmP9y7HT5tG4VgwXwIo-j01NWqR60f8yEufH91AzBS
 Host: localhost:8080
@@ -2688,9 +2688,9 @@
PATCH /api/shelters/me/passwords HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTQsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTQsInJvbGUiOiJST0xFX1NIRUxURVIifQ.dMgnp5tLTDeADQQXWVyQhaxzRu1AgLhkRi5iIFVy0vAS3kyYors9n0lOTdcQ5FoO
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMjMsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMjMsInJvbGUiOiJST0xFX1NIRUxURVIifQ.alOm9VlmcxT9X4GIjtQmlhyoe6P-LBBaiLZjmrWZO8s32oS0bA9kKOj8mdGpl-UC
 Content-Length: 76
-X-CSRF-TOKEN: vlpXL4_63_SGjzkoYP_rJtZveNaEvXcQLn7vNHJeeqKy2a_f2mo0FrbMvcyr7AkYBNLfF-NXVbe33EI9G0iJBkU9T8OGusrt
+X-CSRF-TOKEN: 4ldi8y9yZM5FDfTW0h9Yyet8CzpepNHsUz12GUuXRqEdYZKM1GYGyh9KUP1oP5Ww4TJs_NlIJlg8nLfBZAlPe3-vcJZ5APTu
 Host: localhost:8080
 
 {
@@ -2784,9 +2784,9 @@ 
PATCH /api/shelters/me/address/status HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTQsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTQsInJvbGUiOiJST0xFX1NIRUxURVIifQ.dMgnp5tLTDeADQQXWVyQhaxzRu1AgLhkRi5iIFVy0vAS3kyYors9n0lOTdcQ5FoO
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMjMsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMjMsInJvbGUiOiJST0xFX1NIRUxURVIifQ.alOm9VlmcxT9X4GIjtQmlhyoe6P-LBBaiLZjmrWZO8s32oS0bA9kKOj8mdGpl-UC
 Content-Length: 31
-X-CSRF-TOKEN: LA2ACdZF4hrN3oBtKnjhW1f--HcqBDrqyE6JadkJZmrL4JjRGTixP-Zz0SvgurcJSFXVOWea1U8aNQ7H8Sy8WultBVyt1Prl
+X-CSRF-TOKEN: s0h33NiHAVtgekkEvTa9o0XbYWUo_VyyyFHAEsPGrgHxHXlAg3lH7uq1NG9NTn813huJm3LvTFxMmT-fqWikI_f-mjaQLU54
 Host: localhost:8080
 
 {
@@ -2872,9 +2872,9 @@ 
PATCH /api/shelters/me HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTQsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTQsInJvbGUiOiJST0xFX1NIRUxURVIifQ.dMgnp5tLTDeADQQXWVyQhaxzRu1AgLhkRi5iIFVy0vAS3kyYors9n0lOTdcQ5FoO
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMjMsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMjMsInJvbGUiOiJST0xFX1NIRUxURVIifQ.alOm9VlmcxT9X4GIjtQmlhyoe6P-LBBaiLZjmrWZO8s32oS0bA9kKOj8mdGpl-UC
 Content-Length: 226
-X-CSRF-TOKEN: UYqsjr_riVDTAQPcivxF8qtDXwkZkxzAw3aXe1_QhNXy4wxdN77Ovo3T6mn-YDLsudFxlsl1cjEo9X3t-hX2HWay5raU2mk-
+X-CSRF-TOKEN: 2pe9eNY4EqW6fHDSFlIQ9D1O6Wot5fHdORZse42UzUbzqTDU4vTZHOALdsSXShTrLn8kxFl8xAhJ18nwD3UIQ76k-ySRmVW2
 Host: localhost:8080
 
 {
@@ -3017,8 +3017,8 @@ 

Request

HTTP request
-
GET /api/recruitments?keyword=%EA%B2%85%EC%83%89%EC%96%B4&startDate=2023-12-01&endDate=2023-12-01&closedFilter=IS_OPENED&keywordFilter=IS_CONTENT&pageNumber=0&pageSize=10 HTTP/1.1
-X-CSRF-TOKEN: Yw0G3bFvafPylAJK5-EOsK7V_K66dJhTtmDpnGUW5n26q9aHU24z7IAJD8Hf9WR_08w6gsri0cyCR6x-gwXfrlQl1U2Om-Dj
+
GET /api/recruitments?keyword=%EA%B2%85%EC%83%89%EC%96%B4&startDate=2023-12-16&endDate=2023-12-16&closedFilter=IS_OPENED&keywordFilter=IS_CONTENT&pageNumber=0&pageSize=10 HTTP/1.1
+X-CSRF-TOKEN: h1xeYJByb6sVgqytQcyefLO7c7gnZgkv-c9VhZdB2K_5PRFfvm1vAqZKW844sc-VduGqSNGDXoAXVToCzfoz5qEj6J_KWHRr
 Host: localhost:8080
@@ -3098,20 +3098,21 @@

보호소 이미지 url

+

recruitments[].recruitmentCreatedAt

+

String

+

봉사 모집글 생성 시간

+ +

pageInfo

Object

페이지 정보

@@ -3220,8 +3226,8 @@

Request

HTTP request
-
GET /api/v2/recruitments?keyword=%EA%B2%85%EC%83%89%EC%96%B4&startDate=2023-12-01&endDate=2023-12-01&closedFilter=IS_OPENED&keywordFilter=IS_CONTENT&recruitmentId=1&createdAt=2023-12-01T17%3A20%3A10.180376&pageNumber=0&pageSize=10 HTTP/1.1
-X-CSRF-TOKEN: fYHr7jTt3qndrGPWhcpZIiA0q8Ev60qqqy7LdBVzRg4lZ8e1H-SN1gbe6prwlAa1t-dtGhVVhqMZ3CiHnUz5THcWdTlGAaPQ
+
GET /api/v2/recruitments?keyword=%EA%B2%85%EC%83%89%EC%96%B4&startDate=2023-12-16&endDate=2023-12-16&closedFilter=IS_OPENED&keywordFilter=IS_CONTENT&recruitmentId=1&createdAt=2023-12-16T22%3A06%3A59.379521&pageNumber=0&pageSize=10 HTTP/1.1
+X-CSRF-TOKEN: MtReGx_-Gcas1JBbQLWP2SwmO9T_hdsEz05oLXHjLVv3LRW9VuJsKXrPLfWB4ac4c5i74R0QFu2esO8pqSxdG0jSFWiVGSOL
 Host: localhost:8080
@@ -3313,20 +3319,21 @@

보호소 이미지 url

+

recruitments[].recruitmentCreatedAt

+

String

+

봉사 모집글 생성 시간

+ +

pageInfo

Object

페이지 정보

@@ -3437,7 +3449,7 @@
GET /api/recruitments/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-X-CSRF-TOKEN: IJKVdQnj70aMMinPaqjlyh4gtIoSNrSWit5Uk_OB7AdoEsTxGfHzFzDb2n6hBEquD4XR83hBmbMlUtC76bhs8sDnjTENI_OV
+X-CSRF-TOKEN: Iw7ocnD7-abVDqwC1_SNjfSXndaWd1h_U5PbpbeRc4oX-2LRQTiKR0fLyZ74Op4359m5vcbzsO_1E25SMqC-l46iSu5zmVrl
 Host: localhost:8080
@@ -3483,10 +3495,10 @@
GET /api/shelters/1/recruitments HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-X-CSRF-TOKEN: t9K-dV_DvB_MtcuIjzx1sshUrG4SGF3LYI7Xx2HGjtqufdGf1LffEGqn3i_h0am5uBFBiv5hgQ8gLmvmV-3hpFPz7enLTbWn
+X-CSRF-TOKEN: dZhKdy9nohY_v9riEC1ie5SCA6_U64yFvtO0AoH10YT7x4zPRKwrExwCkXUS2-6AdABWTaWzLs2w2buojeOCMLTG5-LCo7up
 Host: localhost:8080
@@ -3668,8 +3680,8 @@
Request
HTTP request
-
GET /api/shelters/recruitments?keyword=%EA%B2%85%EC%83%89%EC%96%B4&startDate=2023-12-01&endDate=2023-12-01&closedFilter=IS_OPENED&keywordFilter=IS_SHELTER_NAME&pageNumber=0&pageSize=10 HTTP/1.1
+
GET /api/shelters/recruitments?keyword=%EA%B2%85%EC%83%89%EC%96%B4&startDate=2023-12-16&endDate=2023-12-16&closedFilter=IS_OPENED&keywordFilter=IS_SHELTER_NAME&pageNumber=0&pageSize=10 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTAsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTAsInJvbGUiOiJST0xFX1NIRUxURVIifQ.KZXBKo3-TvrAx55rG4urIx4NbRzuY3cU93T6MWg-m6YPUddqfA1fUkB4f4x0SYXo
-X-CSRF-TOKEN: Kx9IrETXeXmR3lW9tq_6n2JpKF1jSxEfq1t0RIQqBYXJvi5WGioqyiXnHU686zCP14LOrVFZBWRRKScykmMScLYbNbz83xg3
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTksInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTksInJvbGUiOiJST0xFX1NIRUxURVIifQ.x0FfgnjMmL-dQFHIv4wCjmXhw-m9eWWWvD0db_9YicbageImq2_C32SGZRLqeNFF
+X-CSRF-TOKEN: 2iFWCmsOLBuTft-zk9UnL1vZt8o7NMj9f5Dl-j6NEQyByzPw6RJkPwpsTyK-Se6HpvgTH2vhmqhdA_7QHPaHzFy5Imrnr1XA
 Host: localhost:8080
@@ -3870,9 +3882,9 @@
POST /api/shelters/recruitments HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTAsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTAsInJvbGUiOiJST0xFX1NIRUxURVIifQ.KZXBKo3-TvrAx55rG4urIx4NbRzuY3cU93T6MWg-m6YPUddqfA1fUkB4f4x0SYXo
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTksInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTksInJvbGUiOiJST0xFX1NIRUxURVIifQ.x0FfgnjMmL-dQFHIv4wCjmXhw-m9eWWWvD0db_9YicbageImq2_C32SGZRLqeNFF
 Content-Length: 223
-X-CSRF-TOKEN: iP8bYqbQ2tBn-CFi0PXsyn_-YqRuRe7geXwPRuzkP83Motbu6sktUcOy7OhKnBBU4tjYr06bT5xXddrNHB86cN-GDfutm7Tb
+X-CSRF-TOKEN: pCasoKY_leo-LdpLARfCQGriqRpOPQEY0uEgvu6FCt6G7BmNkRTKlJdZpN8TSLsqODr2eAvahHgqWzQ14YIVj9-waeq01Hu9
 Host: localhost:8080
 
 {
   "title" : "title",
-  "startTime" : "2023-12-02T17:20:10.208423",
-  "endTime" : "2023-12-02T18:20:10.208423",
-  "deadline" : "2023-12-01T22:20:10.208423",
+  "startTime" : "2023-12-17T22:06:59.437298",
+  "endTime" : "2023-12-17T23:06:59.437298",
+  "deadline" : "2023-12-17T03:06:59.437298",
   "capacity" : 10,
   "content" : "content",
   "imageUrls" : [ ]
@@ -4130,8 +4142,8 @@ 
PATCH /api/shelters/recruitments/1/close HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTAsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTAsInJvbGUiOiJST0xFX1NIRUxURVIifQ.KZXBKo3-TvrAx55rG4urIx4NbRzuY3cU93T6MWg-m6YPUddqfA1fUkB4f4x0SYXo
-X-CSRF-TOKEN: bQHEpDHMQUfdBxARE_8KogpoePPDm5QBOmuk0GrJF_lsysV6WTDxwAD5ICHwNSdycNI-mmhRVcrz_6MsWwjG4g6rI5wPqPAc
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTksInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTksInJvbGUiOiJST0xFX1NIRUxURVIifQ.x0FfgnjMmL-dQFHIv4wCjmXhw-m9eWWWvD0db_9YicbageImq2_C32SGZRLqeNFF
+X-CSRF-TOKEN: GHEOpZOn7rfRLMJfo2ZORZJ6xlYABh4jItPFoHRrX6s1sEwVL0A7nffC2dX8T6Y-kEt6caRC6zQ4ZyYOF7KkmUUKaZ0DiC0s
 Host: localhost:8080
@@ -4205,16 +4217,16 @@
PATCH /api/shelters/recruitments/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTAsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTAsInJvbGUiOiJST0xFX1NIRUxURVIifQ.KZXBKo3-TvrAx55rG4urIx4NbRzuY3cU93T6MWg-m6YPUddqfA1fUkB4f4x0SYXo
-Content-Length: 234
-X-CSRF-TOKEN: YgITwTeOK_fP0V7zqEh1ExXnlxSz_RurX0kLGGT9PGXUPJdSWjRw8AW6HMDi4mqQmmVBIHbTunaLmyOGbi05KVLIDgS1C_Zg
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTksInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTksInJvbGUiOiJST0xFX1NIRUxURVIifQ.x0FfgnjMmL-dQFHIv4wCjmXhw-m9eWWWvD0db_9YicbageImq2_C32SGZRLqeNFF
+Content-Length: 231
+X-CSRF-TOKEN: 5IuMSji-PDsaqstak06T_m2ij69Dz6l6N9wn9loGn-GhRB9n0rm6clyNXQ03kvg59WOnzguRopcgq5BXU7lBzmxjqNSXd35X
 Host: localhost:8080
 
 {
   "title" : "title",
-  "startTime" : "2024-01-01T17:20:10.192824",
-  "endTime" : "2024-01-01T18:20:10.192824",
-  "deadline" : "2023-12-31T17:20:10.192824",
+  "startTime" : "2024-01-16T22:06:59.40488",
+  "endTime" : "2024-01-16T23:06:59.40488",
+  "deadline" : "2024-01-15T22:06:59.40488",
   "capacity" : 10,
   "content" : "content",
   "imageUrls" : [ "a1", "a2" ]
@@ -4362,8 +4374,8 @@ 
DELETE /api/shelters/recruitments/1 HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTAsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTAsInJvbGUiOiJST0xFX1NIRUxURVIifQ.KZXBKo3-TvrAx55rG4urIx4NbRzuY3cU93T6MWg-m6YPUddqfA1fUkB4f4x0SYXo
-X-CSRF-TOKEN: 0X_hqHtW9VJ04GdQUPEsSxC_pwJNBM_Lnp4X9KbNqIWua0wI50fWnU81wmNZgV80ZdwYfnbaijosYfzmqqYukpH0n-bKWHxp
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTksInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTksInJvbGUiOiJST0xFX1NIRUxURVIifQ.x0FfgnjMmL-dQFHIv4wCjmXhw-m9eWWWvD0db_9YicbageImq2_C32SGZRLqeNFF
+X-CSRF-TOKEN: 7SYaWmYuQQi3vusY_crdtavJFB_RrSeS5iaUw96AqzpPll0fjhV_P1NMcDCah91-nufphZ_5OX7hyEa_1kCg8b-wkgl-pDwq
 Host: localhost:8080
@@ -4436,8 +4448,8 @@
GET /api/shelters/volunteers/1/recruitments/completed?pageNumber=0&pageSize=10 HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTAsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTAsInJvbGUiOiJST0xFX1NIRUxURVIifQ.KZXBKo3-TvrAx55rG4urIx4NbRzuY3cU93T6MWg-m6YPUddqfA1fUkB4f4x0SYXo
-X-CSRF-TOKEN: BqvCWtb_UGEzoWaXQIdF0ZZA9gI4QQ96pKRqt_vBfPa7Uwy8Z5_0au_IMlUemVD1cqpxsvdw2zpbdj1XlZdd05_2T5OIZD2E
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTksInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTksInJvbGUiOiJST0xFX1NIRUxURVIifQ.x0FfgnjMmL-dQFHIv4wCjmXhw-m9eWWWvD0db_9YicbageImq2_C32SGZRLqeNFF
+X-CSRF-TOKEN: 3bFHWN3TWGM9rFcF-_cbvG2wWCQZXdcq_9YqN7XCGDsmSPOZv4MmO763alAQyTJjytov2AnRdR0vO-YHxrVPDtP1K1kRKZH8
 Host: localhost:8080
@@ -4515,7 +4527,7 @@
POST /api/volunteers/recruitments/1/apply HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTYsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3OTYsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.dCJ11bReOMGBOwq6w4__teRAmmXxjoN2mhaS2x_3RhT_acwPm_96ioy0RNoFKIV7
-X-CSRF-TOKEN: aR3DMT7_VHDZ6XHVF10YunhqgpnEOTJVVuWRJ04v2isGwnTDCCzwVAzGNUb03hDtdXAsjBsJr_umDlF4NIHzRX9JuBwxp0ei
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTIsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTIsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.teZ1kadzvOUa_Fy-PYGLzoNjl7eqOZhLt-5MMaGXHOARFS6ttCuv7QQp02hBWf-_
+X-CSRF-TOKEN: 2E0q5swv6ZJ_-hzx95Jx_TqhapW7lToJV5tZyYM8EfsRlsGE6ytJgv0c36BSzX_Gzr9FzliQR62K8Qskbq44rbANIZ8lrvTg
 Host: localhost:8080
@@ -4682,8 +4694,8 @@
GET /api/volunteers/recruitments/1/apply HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTYsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3OTYsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.dCJ11bReOMGBOwq6w4__teRAmmXxjoN2mhaS2x_3RhT_acwPm_96ioy0RNoFKIV7
-X-CSRF-TOKEN: Omqf_l5gGoVvspSzlwwYGHsLdQVrZyBrk9XpnKsjUy2wF4vEWV2rn2kBfuNC0K3XoyEsLBk-WGRZARVG8eGLq5IVZxTVLrmh
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTIsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTIsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.teZ1kadzvOUa_Fy-PYGLzoNjl7eqOZhLt-5MMaGXHOARFS6ttCuv7QQp02hBWf-_
+X-CSRF-TOKEN: HrcDeaxfEsgsNBC8XJWDZA91TcbaElPGlp54748XxnKn3tPPetRgSs1rJ_8BAymNa7i3AD8RYKTqJ2frpvoaiux2oBTD6er_
 Host: localhost:8080
@@ -4787,8 +4799,8 @@
GET /api/volunteers/applicants?pageNumber=0&pageSize=10 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTYsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3OTYsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.dCJ11bReOMGBOwq6w4__teRAmmXxjoN2mhaS2x_3RhT_acwPm_96ioy0RNoFKIV7
-X-CSRF-TOKEN: IE2tKw4DnaqSW3oeC-t4rSt_vnK5ls5hJ8d_Qpt6UV4O_oZkQXzJHThhqsy_YhwmO8ZMnRwekxDa9fdMEqVGJ6gYZWtsyrNV
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTIsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTIsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.teZ1kadzvOUa_Fy-PYGLzoNjl7eqOZhLt-5MMaGXHOARFS6ttCuv7QQp02hBWf-_
+X-CSRF-TOKEN: bUbZ784Cw2EiV_JvHmzxSxpAWA2LSJSWDHQ9w6ZvMEBiabfPDCTq3a878lcPYJMMe0HFfCJzdTS4Lay7NRVcoJRXAnRaD4H8
 Host: localhost:8080
@@ -4841,7 +4853,7 @@
@@ -4943,8 +4955,8 @@
GET /api/shelters/recruitments/1/applicants HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTYsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3OTYsInJvbGUiOiJST0xFX1NIRUxURVIifQ.eBjLmGjy2jUejkofJ5wrifUvMneALvg6VlUq4OB1S9D34N5Eo2QdTNbiJSb4TTNr
-X-CSRF-TOKEN: EGXKcoY0Lt_KO_iSaP-m2Yl9XeqR6nsctKBktTbXqOBc65WPIQaoQLRXTO3nDs30XtKSuO1NcIuo3UsxjJIAjQfnztdk3va3
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTIsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTIsInJvbGUiOiJST0xFX1NIRUxURVIifQ.PUe95oj6ryAkER3VQYZYhpuqsGkdgv4yWOJ3h2oVsL97szQVYNmxgBL2aeLhE1xJ
+X-CSRF-TOKEN: hSnKs-Yg-1snQPEHGtkeCBJ6_DutSebEoVvQROI3EWn1u_rq4RH6hoAWwjgKI5MwfvQqbCZL0QKecdXplzi1cttUd1DC3cPe
 Host: localhost:8080
@@ -5011,7 +5023,7 @@
GET /api/shelters/recruitments/1/approval HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTYsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3OTYsInJvbGUiOiJST0xFX1NIRUxURVIifQ.eBjLmGjy2jUejkofJ5wrifUvMneALvg6VlUq4OB1S9D34N5Eo2QdTNbiJSb4TTNr
-X-CSRF-TOKEN: BbJg-BLTXOpAnC5bpRWb-SQh9y3URD4wXhxrkTIJsuhrMC44ZoMDyyTiPtxt_RxpkzivmkFA2k_kJwodZ30J81Nt19tcCRYB
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTIsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTIsInJvbGUiOiJST0xFX1NIRUxURVIifQ.PUe95oj6ryAkER3VQYZYhpuqsGkdgv4yWOJ3h2oVsL97szQVYNmxgBL2aeLhE1xJ
+X-CSRF-TOKEN: 5W456HmS8faCbb4Yrm5VTyR6eNeQyG8g28tBkSLPXPWbjN3r0VlcihrxyJSvX9goyENhfB0cVbbzrFwNvf1wpUP2OsP4vbjS
 Host: localhost:8080
@@ -5238,9 +5250,9 @@
PATCH /api/shelters/recruitments/1/applicants/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTYsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3OTYsInJvbGUiOiJST0xFX1NIRUxURVIifQ.eBjLmGjy2jUejkofJ5wrifUvMneALvg6VlUq4OB1S9D34N5Eo2QdTNbiJSb4TTNr
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTIsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTIsInJvbGUiOiJST0xFX1NIRUxURVIifQ.PUe95oj6ryAkER3VQYZYhpuqsGkdgv4yWOJ3h2oVsL97szQVYNmxgBL2aeLhE1xJ
 Content-Length: 25
-X-CSRF-TOKEN: fYxVoMi72Y6RXoYwljRzjJLK3mSxhjA5XH4XHacBomB4vmjdH-hhwfnevby8Pb5UohlHuKrz81zVtwAUZEkjL8NlwQMahlnr
+X-CSRF-TOKEN: wOGsHXmvMO6M2Gn9YpJfbMeK-abEZpYgbz_4GF-G6bugZHx69dadeE-fVteh6FvIUL9rXKW81J71AqINVg7Oejnk0I6TVkpC
 Host: localhost:8080
 
 {
@@ -5352,9 +5364,9 @@ 
PATCH /api/shelters/recruitments/1/approval HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTYsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3OTYsInJvbGUiOiJST0xFX1NIRUxURVIifQ.eBjLmGjy2jUejkofJ5wrifUvMneALvg6VlUq4OB1S9D34N5Eo2QdTNbiJSb4TTNr
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTIsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTIsInJvbGUiOiJST0xFX1NIRUxURVIifQ.PUe95oj6ryAkER3VQYZYhpuqsGkdgv4yWOJ3h2oVsL97szQVYNmxgBL2aeLhE1xJ
 Content-Length: 77
-X-CSRF-TOKEN: k0Gu7-hWAoME7lD0Sf3VmUASc0NSVakUSlm3KyWxob03sQ_2qyeW3YpjNrsp1mHGcNDh-nFwXno2Ycg5eWuBSRCBwogD1zfB
+X-CSRF-TOKEN: uQo_BWB4vtH_n9pKY-zPKa-JxbXr2LI8ketGGYUKVAFLbB63iDoHPAMb2uPSre1-UsH7TJ6w6NfZuYYRpthwf-BpZ2J-CCmC
 Host: localhost:8080
 
 {
@@ -5489,7 +5501,7 @@ 
GET /api/shelters/1/reviews?pageNumber=0&pageSize=10 HTTP/1.1
-X-CSRF-TOKEN: R5u3OaOFj9YlfKggfiDvPER6Ty8ARAX-fv1lxFnb1DZMX2dxcqzVCZKxt7MIRJkUSg3bC3QfYhY4fWPTR8pR9mu_sVAtZ15H
+X-CSRF-TOKEN: lfaMM3jxgDjskMLPfhaqyDaL_mCDPsCIs9SEb2eY6IlCpAZDrJXuVkrBsQzBoPT8Gzue_QS501iwD_Klg-3nDAGtju0hwWVy
 Host: localhost:8080
@@ -5561,15 +5573,15 @@
POST /api/volunteers/reviews HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTQsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTQsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.l6x3x9bZ2NMv3ffoB9fkIJXg3D97sVNzCLVYMKIx7pNMA-EJG85N9nYhGExHLFC8
-Content-Length: 102
-X-CSRF-TOKEN: KcPIgnG88kgtP0YroAmCEnaAsnu-w9N_sdTnSrwltWgev_M5S6b9tEmFlnsACyUSxiS2d0eynxqP9rFS1OyDKY8U1lAsh5UA
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMjIsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMjIsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.dQiLY94KZn3KCgiLJySZOh4IgBexRZtzjW0FjxN1hxY-orpKBKCbyS7hk2-Z1BDK
+Content-Length: 100
+X-CSRF-TOKEN: chsXNjDPJMbDPT7FLtEufqspoyV5xFi0CMdaLFY0S50aWV0oEClxU1T_EaXuXlz1SPwaT5kfjh1P9zuZMPE-FG4BcqwrYGxK
 Host: localhost:8080
 
 {
-  "applicationId" : 1,
+  "applicantId" : 1,
   "content" : "reviewContent",
   "imageUrls" : [ "imageUrl1", "imageUrl2" ]
 }
@@ -5721,7 +5733,7 @@

applicationId

+

applicantId

Number

true

@@ -5732,14 +5744,14 @@

String

true

-

org.springframework.restdocs.snippet.Attributes$Attribute@3c2a3aca

+

org.springframework.restdocs.snippet.Attributes$Attribute@24558048

imageUrls[]

Array

-

org.springframework.restdocs.snippet.Attributes$Attribute@45215780

+

org.springframework.restdocs.snippet.Attributes$Attribute@51d5d835

@@ -5777,8 +5789,8 @@
GET /api/volunteers/reviews/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTQsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTQsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.l6x3x9bZ2NMv3ffoB9fkIJXg3D97sVNzCLVYMKIx7pNMA-EJG85N9nYhGExHLFC8
-X-CSRF-TOKEN: xTyJgmxApgxWda4DvImAupizdEOV8YkcCs9X_nduKqxovJJkoQy841x3kjV7Rc872aS0iqiKWSGnwrExPf5hxkUKT5pa2vNQ
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMjIsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMjIsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.dQiLY94KZn3KCgiLJySZOh4IgBexRZtzjW0FjxN1hxY-orpKBKCbyS7hk2-Z1BDK
+X-CSRF-TOKEN: 4Z0u8S14utRbXgAMubGhVUAPCEu8f1gASuBa2TnNhRTBMkTv1fwfkEtB3-N2ajU02JyVNyE3JSqEGW4tf9hj7Fr05yGjB3HZ
 Host: localhost:8080
@@ -5894,9 +5906,9 @@
PATCH /api/volunteers/reviews/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTQsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTQsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.l6x3x9bZ2NMv3ffoB9fkIJXg3D97sVNzCLVYMKIx7pNMA-EJG85N9nYhGExHLFC8
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMjIsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMjIsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.dQiLY94KZn3KCgiLJySZOh4IgBexRZtzjW0FjxN1hxY-orpKBKCbyS7hk2-Z1BDK
 Content-Length: 66
-X-CSRF-TOKEN: RfHi04VLJPB7wlituO6kush1lsQMKhjoVgEAZ0o-AK1HLF6BcJPQsuF-HcNWozyagcOQ3PgTu_xtSC7FYjQ0V3xfMZpxTWu2
+X-CSRF-TOKEN: divJYDsQUKxHYZll0BeMA3wXzC9nBIBkKpJJLQwtDXowKfoeRB2oUl5zMpRqB64E4jq4Mhgv4U1WZ7JJE6UvSTpLPkJRTZ59
 Host: localhost:8080
 
 {
@@ -5974,14 +5986,14 @@ 

String

true

-

org.springframework.restdocs.snippet.Attributes$Attribute@636fbbdf

+

org.springframework.restdocs.snippet.Attributes$Attribute@6f312e96

imageUrls[]

Array

-

org.springframework.restdocs.snippet.Attributes$Attribute@173b37aa

+

org.springframework.restdocs.snippet.Attributes$Attribute@64378a6

@@ -6011,8 +6023,8 @@
DELETE /api/volunteers/reviews/1 HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTQsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTQsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.l6x3x9bZ2NMv3ffoB9fkIJXg3D97sVNzCLVYMKIx7pNMA-EJG85N9nYhGExHLFC8
-X-CSRF-TOKEN: zZI_mcnGnd3ydbdPwhfon7shW079YW7A-bStocrjcsMaUxUr-vdZ_fD0q7_fQI4t9jrcqo5CdnafWQjtyoOZk_OHRfMray0Y
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMjIsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMjIsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.dQiLY94KZn3KCgiLJySZOh4IgBexRZtzjW0FjxN1hxY-orpKBKCbyS7hk2-Z1BDK
+X-CSRF-TOKEN: SpZHr8rr14z4mO-ikqwQSXXKl1_SgYSb6wsc7EtKuoU8lz0VcvVxzfOPsb7V_Nebq4EkfkD-umbnsby2iWh_3H57g-EPpl8t
 Host: localhost:8080
@@ -6085,8 +6097,8 @@
GET /api/volunteers/me/reviews?pageNumber=0&pageSize=10 HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTQsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTQsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.l6x3x9bZ2NMv3ffoB9fkIJXg3D97sVNzCLVYMKIx7pNMA-EJG85N9nYhGExHLFC8
-X-CSRF-TOKEN: e87vJPBYddvyQ02uKypWacPgZBP6_1HhsKiSN_bvHrFHqueRS6veR8FpFOnfJnjNHwdiW6CGSXGYm2jMhJjzVMLXf9Bzn9Oh
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMjIsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMjIsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.dQiLY94KZn3KCgiLJySZOh4IgBexRZtzjW0FjxN1hxY-orpKBKCbyS7hk2-Z1BDK
+X-CSRF-TOKEN: ONgHF6LHmNzbKDjRPkYrDzc-nh56GFc068rDlql1RPj--YbzAb0_J5Gk_ur2Hg_gDmsfOA8PsyYfKWEZ2fOho8wQJcucneDK
 Host: localhost:8080
@@ -6157,7 +6169,7 @@
GET /api/shelters/volunteers/1/reviews?pageNumber=0&pageSize=10 HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTQsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTQsInJvbGUiOiJST0xFX1NIRUxURVIifQ.dMgnp5tLTDeADQQXWVyQhaxzRu1AgLhkRi5iIFVy0vAS3kyYors9n0lOTdcQ5FoO
-X-CSRF-TOKEN: 3QdtFtpJpmisD7jIing3AE0gnCa1sFDVX9n8gNTptFDXRLBl6DJVJekvwl-Ba9yuu1UDMy8VsR_RiGn4brqdtrHQgmexJYJR
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMjIsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMjIsInJvbGUiOiJST0xFX1NIRUxURVIifQ.wLPypunbxu9iwQn-E2FRNOubn_3_dOSoI8KtvDzVnh858Hg9--mSWdpWZN_vN9ms
+X-CSRF-TOKEN: gPe74S9z61b0ulMmyWDKkc3kxK5KZaGCj2xx2UT_ZrtM6x4osMKI2UxE02HZjTZErE3-p_2H6c8oBpCvulhE7SHOX44u331N
 Host: localhost:8080
@@ -6366,7 +6378,7 @@
GET /api/shelters/me/reviews?pageNumber=0&pageSize=10 HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MTQsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MTQsInJvbGUiOiJST0xFX1NIRUxURVIifQ.dMgnp5tLTDeADQQXWVyQhaxzRu1AgLhkRi5iIFVy0vAS3kyYors9n0lOTdcQ5FoO
-X-CSRF-TOKEN: N0zAPQPvaOI45ZFxO6nI699mb-5BUlJIz_w7iTEbfyAxqYf1Uir1WWKMXdIV06VEX4T82OZWQtYgNGRl-M0O6lB6HhAFnLfN
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMjIsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMjIsInJvbGUiOiJST0xFX1NIRUxURVIifQ.wLPypunbxu9iwQn-E2FRNOubn_3_dOSoI8KtvDzVnh858Hg9--mSWdpWZN_vN9ms
+X-CSRF-TOKEN: hD3MN1w26z-7SsTP1lOUiGA6zPMeoyQLvwwzX-yl9nlY3F8AtwiqBG4H012WePaus36gsFIK4ZIulUcm2jtWZ9uRkE9ouT05
 Host: localhost:8080
@@ -6526,19 +6538,19 @@

리뷰 ID

-

reviews[].createdAt

+

reviews[].reviewCreatedAt

String

리뷰 생성일

-

reviews[].content

+

reviews[].reviewContent

String

리뷰 내용

@@ -6600,7 +6612,7 @@

봉사자 이름

-

reviews[].temperature

+

reviews[].volunteerTemperature

Number

봉사자 온도

@@ -6610,7 +6622,7 @@

봉사자 프로필 이미지 url

-

reviews[].VolunteerReviewCount

+

reviews[].volunteerReviewCount

Number

봉사자 리뷰 수

@@ -6654,8 +6666,8 @@
GET /api/animals?type=DOG&gender=FEMALE&neuteredFilter=IS_NEUTERED&active=ACTIVE&animalSize=SMALL&animalSize=10&age=ADULT&page=0 HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3ODgsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3ODgsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9._qP23gt23VBOyge9hUKnjaJ4PK_nHy3GJf_i-w2KIr81S14kZiT0z0T5ENPs66x3
-X-CSRF-TOKEN: 08sXN2JCEm43WyucAo90QLBZ4TCb6_JjYiuii2h9_EPeKBDyt_hzUQZ3JgoaaRP5NqJAcoVvzAn6jcVOUxORvA4bynbqSSWW
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMDQsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMDQsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.ANCNuMkQ-oaNNSBeMzIm4XNcRDflDptjsjsviBacievBgoei88XdyyKE_yWZv2SM
+X-CSRF-TOKEN: knVHbwkzQV-dAebAFMThfra4RbGyt8Gw-4x7720ad_-0mb_6okF3WWoGJzqwMdGhJOnVStSKaNOCh_ednblK21h_Q8eHqIaf
 Host: localhost:8080
@@ -6735,7 +6747,7 @@
@@ -6827,8 +6839,8 @@

Request

HTTP request
-
GET /api/v2/animals?type=DOG&gender=FEMALE&neuteredFilter=IS_NEUTERED&active=ACTIVE&animalSize=SMALL&animalSize=10&age=ADULT&animalId=1&createdAt=2023-12-01T17%3A19%3A48.252478&page=0 HTTP/1.1
-X-CSRF-TOKEN: bU7LHS6iMK_PICkW7dHR1vGm94WS3kIY6dTkVk4d0yDymRxpXiiqLUvHVJriEEp33Pzl4JKR2r3zvCA13OWGNHd_4RjGoX4K
+
GET /api/v2/animals?type=DOG&gender=FEMALE&neuteredFilter=IS_NEUTERED&active=ACTIVE&animalSize=SMALL&animalSize=10&age=ADULT&animalId=1&createdAt=2023-12-16T22%3A06%3A44.354131&page=0 HTTP/1.1
+X-CSRF-TOKEN: TWGdAfyqviob18jnnk1sKBvibIEjEb-W90W2Oh9bTtabYrQLeVmvN8qdjRk25a7SrGBYSX2DQeAXJ9u7k3KDCX5if7SvVtFq
 Host: localhost:8080
@@ -7014,8 +7026,8 @@
GET /api/animals/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3ODgsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3ODgsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9._qP23gt23VBOyge9hUKnjaJ4PK_nHy3GJf_i-w2KIr81S14kZiT0z0T5ENPs66x3
-X-CSRF-TOKEN: bJ_Md3wboLvWeK3MgRD-0EPLSx2K-LotVd8eERsnCo4c6W1hVauqFUx-wY77Gc765T3KsiH4ZiS8wY0AY7t4cn0WMugu2QxU
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMDQsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMDQsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.ANCNuMkQ-oaNNSBeMzIm4XNcRDflDptjsjsviBacievBgoei88XdyyKE_yWZv2SM
+X-CSRF-TOKEN: RgMd1OIsvol0ggjVVk_HQONblYqXIkYpLiEckEarP3Qn_0KFI2d744dK3btZu2nhbmLzJYI4uOuvESIESBV9pHbKDhIUnXuz
 Host: localhost:8080
@@ -7059,7 +7071,7 @@
POST /api/shelters/animals HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3ODgsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3ODgsInJvbGUiOiJST0xFX1NIRUxURVIifQ.GOSMrOHMXzHRe1RxmCEpo3zExyle4aP5cKC6Fhu1-Yu3arqkC_2ZhXideporR5F6
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMDQsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMDQsInJvbGUiOiJST0xFX1NIRUxURVIifQ.3K_Ji5WAd7xpzz9-lBNZ7ynEAtJcbCU5ClSanVNH605wv8kB9V0GULsuk9t0sX-g
 Content-Length: 253
-X-CSRF-TOKEN: nbWOEUyrl7xc3whDNv8LQ2mpblQ92upasfFG1qXVw08kqpi1qY29JCrI8YRx7G4gU9I_IVieQzYK4t93gMEi4pbs9X4Um6HR
+X-CSRF-TOKEN: i9rGlCMagRdHTp7WD52B98CNzdBOJrP22s4w9iC3nrFIS46R7ev_phUi4HJqLaflarC1x_no4LEsFdbbuPkGlxKC_Iksf-qm
 Host: localhost:8080
 
 {
   "name" : "name",
-  "birthDate" : "2023-12-01",
+  "birthDate" : "2023-12-16",
   "type" : "DOG",
   "breed" : "품종",
   "gender" : "FEMALE",
@@ -7242,8 +7254,8 @@ 
GET /api/shelters/animals?keyword=%EA%B2%80%EC%83%89%EC%96%B4&type=DOG&gender=MALE&neuteredFilter=IS_NEUTERED&active=ACTIVE&animalSize=SMALL&age=BABY&page=0&size=10 HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3ODgsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3ODgsInJvbGUiOiJST0xFX1NIRUxURVIifQ.GOSMrOHMXzHRe1RxmCEpo3zExyle4aP5cKC6Fhu1-Yu3arqkC_2ZhXideporR5F6
-X-CSRF-TOKEN: XynJ2XNXfztTY3_yF-X2HXK9Tj0sve8Gcn9deWAROFq6EpiQbEyo4BdvRgl-BUfDccjCJEGFYwQV2I0rFB1qSVVyDT6Id6_1
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMDQsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMDQsInJvbGUiOiJST0xFX1NIRUxURVIifQ.3K_Ji5WAd7xpzz9-lBNZ7ynEAtJcbCU5ClSanVNH605wv8kB9V0GULsuk9t0sX-g
+X-CSRF-TOKEN: tAejQ5L-Ef6ZM2uKL-AZbPDIc-7lLKVLR9eTHR3uD2gu9glJ0TfCIfSYIci0Al7rG80tX8bxXtbXH5BmdOKifn_daVpLwjEv
 Host: localhost:8080
@@ -7277,8 +7289,8 @@
GET /api/shelters/animals?keyword=%EA%B2%80%EC%83%89%EC%96%B4&type=DOG&gender=MALE&neuteredFilter=IS_NEUTERED&active=ACTIVE&animalSize=SMALL&age=BABY&page=0&size=10 HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3ODgsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3ODgsInJvbGUiOiJST0xFX1NIRUxURVIifQ.GOSMrOHMXzHRe1RxmCEpo3zExyle4aP5cKC6Fhu1-Yu3arqkC_2ZhXideporR5F6
-X-CSRF-TOKEN: XynJ2XNXfztTY3_yF-X2HXK9Tj0sve8Gcn9deWAROFq6EpiQbEyo4BdvRgl-BUfDccjCJEGFYwQV2I0rFB1qSVVyDT6Id6_1
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMDQsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMDQsInJvbGUiOiJST0xFX1NIRUxURVIifQ.3K_Ji5WAd7xpzz9-lBNZ7ynEAtJcbCU5ClSanVNH605wv8kB9V0GULsuk9t0sX-g
+X-CSRF-TOKEN: tAejQ5L-Ef6ZM2uKL-AZbPDIc-7lLKVLR9eTHR3uD2gu9glJ0TfCIfSYIci0Al7rG80tX8bxXtbXH5BmdOKifn_daVpLwjEv
 Host: localhost:8080
@@ -7316,14 +7328,14 @@
PATCH /api/shelters/animals/1 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3ODcsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3ODcsInJvbGUiOiJST0xFX1NIRUxURVIifQ.a1-Nhp73mXpYqXYdePjaJ-b0oEO48ISdWnnkJP8zc6rMc8havWF64gipWrcrT6sT
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMDMsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMDMsInJvbGUiOiJST0xFX1NIRUxURVIifQ._jkCzcS7L4KbV0JPGbOjW3S5QAQz7llELcV55CPvp4MOLp0KMkFnEBHuQEfZ4lbX
 Content-Length: 266
-X-CSRF-TOKEN: d7y2nve_hWZoxYIN2TnejX6U0KF_eS4GKIvqdRGP07KP3XfCQo7VrcWHsFZFp7tv6xTqu06i_ZlKTxcrTL2JQSm7sIS5vhHz
+X-CSRF-TOKEN: WaZh1X75C5gRvs2fmbydNIz6yKoKuhi5ppR26fIdK712pxcIbZcD4EqYOa88ia6ooZGpV7WZ5ZM8iCCUk6ZE35d_E99GlSY6
 Host: localhost:8080
 
 {
   "name" : "animalName",
-  "birthDate" : "2023-12-01",
+  "birthDate" : "2023-12-16",
   "type" : "DOG",
   "breed" : "animalBreed",
   "gender" : "MALE",
@@ -7383,9 +7395,9 @@ 
PATCH /api/shelters/animals/1/status HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3ODgsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3ODgsInJvbGUiOiJST0xFX1NIRUxURVIifQ.GOSMrOHMXzHRe1RxmCEpo3zExyle4aP5cKC6Fhu1-Yu3arqkC_2ZhXideporR5F6
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMDQsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMDQsInJvbGUiOiJST0xFX1NIRUxURVIifQ.3K_Ji5WAd7xpzz9-lBNZ7ynEAtJcbCU5ClSanVNH605wv8kB9V0GULsuk9t0sX-g
 Content-Length: 24
-X-CSRF-TOKEN: ail_jqvHS5UudFyk6Bfehd7q3Il0-BMZOYSt36Hf_XhE1BKWC0xOu5nzcqIDTW3Aizrqse_S8bFFnXI0WrHM55Xmzht37XGl
+X-CSRF-TOKEN: fBgkUd9Li2xKs02TOfNVONCk-VYFb47GtVYgmt-1IBVGcLNGRXwWZ74u6Fhn1i_2Wt5hWuCc1G83CuvrgTQYr73XEyJ_QtZ2
 Host: localhost:8080
 
 {
@@ -7440,8 +7452,8 @@ 
DELETE /api/shelters/animals/1 HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3ODgsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3ODgsInJvbGUiOiJST0xFX1NIRUxURVIifQ.GOSMrOHMXzHRe1RxmCEpo3zExyle4aP5cKC6Fhu1-Yu3arqkC_2ZhXideporR5F6
-X-CSRF-TOKEN: Gxqs4nyCInPyNwr8QEjvYAuGHhlP2C7YYYlF6oUsq4eJpqnzIyid1E6zR0vfAmieImXbWGqzMyF54Uj1Vr58j7cUmOOwn56R
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMDQsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMDQsInJvbGUiOiJST0xFX1NIRUxURVIifQ.3K_Ji5WAd7xpzz9-lBNZ7ynEAtJcbCU5ClSanVNH605wv8kB9V0GULsuk9t0sX-g
+X-CSRF-TOKEN: 4it2qbctNgOkVHbYkt9cPLDIdy4KmIS-UDvJz5Fxf6AFgkzP1BJAmdYfBDaJZBXvpPJoBIiqWk8_qOeTNQ-q-aJHSpA1si37
 Host: localhost:8080
@@ -7525,8 +7537,8 @@
GET /api/chat/rooms/1/messages?pageNumber=0&pageSize=10 HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTksInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3OTksInJvbGUiOiJST0xFX1NIRUxURVIifQ.uJRrh2Pi6-LwlvS9pqjVqk_midGRH_oaunqJ64kfxr5YMf1gsiAXGatFy5X_bZow
-X-CSRF-TOKEN: KJZ6KVQ5TtpyccMcsnRnJ1slSzTuby8d90nZVNh1aMQDMywIGKdKHjUMK7hfQ6J401lTED9AZg3dWxowz3-7YL5BX_c1A0hp
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTUsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTUsInJvbGUiOiJST0xFX1NIRUxURVIifQ.X2leR1Fnf0OsKKbtjULEj8wpSXS2eEFiBH8ny8-bcNGQm9FmTl8cYmkaomKJlqMD
+X-CSRF-TOKEN: OI5S1YtF4TurRE3vXQYtctRNCNhYtRtDswZ61Pu1AVEtCCSTDrtj4-p11Q6GcS_aPysZQ-V5JbpujHlugmdJ7J3XZ2cVPRWq
 Host: localhost:8080
@@ -7605,7 +7617,7 @@
GET /api/volunteers/chat/rooms/shelters/1 HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTksInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3OTksInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.sPcgIBC6ExCxkGRWYOP3zegN-oSeibJKs5gWBR-QwD3Pv1lcOgVhx2mnYpFCbFK7
-X-CSRF-TOKEN: IRPMqJwMCuGJWdOSKoqX_FM5Zaualwt5_v2Yba45tQTO2UgAQ3f8nP88M4Wka7KhE6ejyzcMSMn58zlUy5isXJ9bhzH373Bi
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTUsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTUsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.ou-8kCNqWMVh2W0ebXYNHHBRlzCthyiBsq8Nn7SPJj4GqNOVqVoyrnR5ERkn8hl2
+X-CSRF-TOKEN: E9nllfafTADSnPgB_sUiciaBvXjNArb6GCbqoGNVHuiXwaRSIL_SpJL7LzH_pc4zz-gWSkKxkEGpYI7XKB_Tk1Q2fNHz-cY3
 Host: localhost:8080
@@ -7795,9 +7807,9 @@
POST /api/volunteers/chat/rooms HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTksInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3OTksInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.sPcgIBC6ExCxkGRWYOP3zegN-oSeibJKs5gWBR-QwD3Pv1lcOgVhx2mnYpFCbFK7
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTUsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTUsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.ou-8kCNqWMVh2W0ebXYNHHBRlzCthyiBsq8Nn7SPJj4GqNOVqVoyrnR5ERkn8hl2
 Content-Length: 21
-X-CSRF-TOKEN: lS2YF14HqHNqXnEFQA9gCAdTXBgLlbZGetofb7RVSy837Yuj9xmscWlikEFHaklgeSJUbWZkcXlv89JrQ-p7Wo1kfhoA27qU
+X-CSRF-TOKEN: cerEeKeJ47afbEiQUnxK1nu_jz6-9GBFJ-kA279dmx2B8NH_RtygT5661dOyCSnzYlF-5EzZol-MzFloFNgwud1s_i3ixOGd
 Host: localhost:8080
 
 {
@@ -7934,8 +7946,8 @@ 
GET /api/volunteers/chat/rooms HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTksInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3OTksInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.sPcgIBC6ExCxkGRWYOP3zegN-oSeibJKs5gWBR-QwD3Pv1lcOgVhx2mnYpFCbFK7
-X-CSRF-TOKEN: 4G6qx9hn-MTGBVl1fBbp6zYTbMaB0nHawPsp5i4hv4GSIc8ohVeb9-tSyfLrZmBASDvd01cnQf-xtkD38shLgBxCh7irQ_kb
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTUsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTUsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.ou-8kCNqWMVh2W0ebXYNHHBRlzCthyiBsq8Nn7SPJj4GqNOVqVoyrnR5ERkn8hl2
+X-CSRF-TOKEN: 1s-orH8QtjNBAo9icyMKRfWXcYICIubPdyBuaFmFV9kIvrsf462dz0Z21VFsY7cHRg4-d8SjXLpmR9fiFRVcCTvgYexthoor
 Host: localhost:8080
@@ -7981,7 +7993,7 @@
@@ -8053,8 +8065,8 @@
GET /api/volunteers/chat/rooms/1 HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTksInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3OTksInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.sPcgIBC6ExCxkGRWYOP3zegN-oSeibJKs5gWBR-QwD3Pv1lcOgVhx2mnYpFCbFK7
-X-CSRF-TOKEN: N2xFPt8nljiTbNiC4bv-sisgoiuQxMAlsRcasCcpe5HLJuRKVA9yDu8X8F6-XOC705bK0RITj0nypfgI1y95gkRIQqP-EtB5
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTUsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTUsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.ou-8kCNqWMVh2W0ebXYNHHBRlzCthyiBsq8Nn7SPJj4GqNOVqVoyrnR5ERkn8hl2
+X-CSRF-TOKEN: _UWRgvcIw7yh9H_pyvvo8-mD8N4a9k4lay8m6Z6_9NXlqzZ_zXeh45Y79IiMwUze8tbcw4yw3ed7l3sIXRxF0KyIkOSEm1Qa
 Host: localhost:8080
@@ -8163,8 +8175,8 @@
GET /api/volunteers/chat/rooms/unread HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTksInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3OTksInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.sPcgIBC6ExCxkGRWYOP3zegN-oSeibJKs5gWBR-QwD3Pv1lcOgVhx2mnYpFCbFK7
-X-CSRF-TOKEN: Cwlu3jonpoxhFlj2NQ9Ocax1wzFwl3wb3dShq62d7eeNnLPqb2hYvAwekLhMJ2jEViJ6F59A7ghJp0o25bCRnp_4iYPr_4rf
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTUsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTUsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.ou-8kCNqWMVh2W0ebXYNHHBRlzCthyiBsq8Nn7SPJj4GqNOVqVoyrnR5ERkn8hl2
+X-CSRF-TOKEN: DGRTJcTWhqPW4vkgHCFbC0ix4zjaj2YrWXu9fryUq6JUhxVEblJmF6Gz5ZP7g8EQfgxvPHyEzgC5u1QGaEKPGI32z5Jmsicl
 Host: localhost:8080
@@ -8250,8 +8262,8 @@
GET /api/shelters/chat/rooms HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTksInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3OTksInJvbGUiOiJST0xFX1NIRUxURVIifQ.uJRrh2Pi6-LwlvS9pqjVqk_midGRH_oaunqJ64kfxr5YMf1gsiAXGatFy5X_bZow
-X-CSRF-TOKEN: tSX8LangjpoXXFyeC6cgB_xdWAQN0k-QDs-Vsg3_tSAVzHryhUfEHs2Eufs6bjn_PYoUMs48dWY143q9bPyj0TqZ10F3-RiT
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTUsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTUsInJvbGUiOiJST0xFX1NIRUxURVIifQ.X2leR1Fnf0OsKKbtjULEj8wpSXS2eEFiBH8ny8-bcNGQm9FmTl8cYmkaomKJlqMD
+X-CSRF-TOKEN: lW1Cm9FpDJ6gsY86Wyct1PTfY-mHN9wzQwVFVgQ4tc59MhU0pQlz_rNbOKqNg7kCbQoZ7MTsTtG0BO4edDR2bzENh_ceUXAG
 Host: localhost:8080
@@ -8297,7 +8309,7 @@
@@ -8369,8 +8381,8 @@
GET /api/shelters/chat/rooms/1 HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTksInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3OTksInJvbGUiOiJST0xFX1NIRUxURVIifQ.uJRrh2Pi6-LwlvS9pqjVqk_midGRH_oaunqJ64kfxr5YMf1gsiAXGatFy5X_bZow
-X-CSRF-TOKEN: w82BI0BnowuzWGLR-H2l1oaEdZwKozocS-OegSHE1-lwr5QH9P21GnlXkj2ea1SymVCRtL7nWP49kVgxf4GosUL3s9xHy6xl
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTUsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTUsInJvbGUiOiJST0xFX1NIRUxURVIifQ.X2leR1Fnf0OsKKbtjULEj8wpSXS2eEFiBH8ny8-bcNGQm9FmTl8cYmkaomKJlqMD
+X-CSRF-TOKEN: Yk9bWZvKj3x3VStzlBYrJEN2V2u8x_yG8tOBAqhF8nxEcU6vAXc4OqPz6klaYRhBozsfQCBDegqJ8cWrl-vnNpB2xR9wFS-f
 Host: localhost:8080
@@ -8457,8 +8469,8 @@
GET /api/shelters/chat/rooms/unread HTTP/1.1
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg3OTksInN1YiI6IjEiLCJleHAiOjE3MDE0MTk3OTksInJvbGUiOiJST0xFX1NIRUxURVIifQ.uJRrh2Pi6-LwlvS9pqjVqk_midGRH_oaunqJ64kfxr5YMf1gsiAXGatFy5X_bZow
-X-CSRF-TOKEN: 6r3tHCR4gINj2J4OR_NK_8We1WqNXHsk06FYL5SWAwcXJgVb3I_UekBP5uFO76Y8JN5-xqSq-FPvaB4Jt8M5HfWhNjcvEWNu
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTUsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTUsInJvbGUiOiJST0xFX1NIRUxURVIifQ.X2leR1Fnf0OsKKbtjULEj8wpSXS2eEFiBH8ny8-bcNGQm9FmTl8cYmkaomKJlqMD
+X-CSRF-TOKEN: uFnZdVB-KonGevlGmU5CAdA9pZGeS8t1l3dRIIgWrojT4xQb3jzvEWYbT-zrH8x1rWN2YOMJiKn4fvpY9k9gRLlyyuzr0SYr
 Host: localhost:8080
@@ -8551,8 +8563,8 @@
GET /api/volunteers/notifications HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MDEsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MDEsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.74DmfIl6a7ijLG0usNB6hwybw9jXKaq2LqHOfb0LBQwJwwszaukujOCAyqecJHtc
-X-CSRF-TOKEN: P9RiFWwVNjursL7VDBinLYvr7i4CRNixxYXwT7NyFl1JFmuWD7dXIQotD1-Gh4znaTWTTLnYw0w0dOGcoOSWLYBEc24rL1mh
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTgsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTgsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.Sd0Y1nx74gSig8mCOwtx8lWXLi0yyTDaqLX01Bgz1CrKiGt6EUbiYS39iq0UvjMK
+X-CSRF-TOKEN: 0C_P6zxzLbA-HH32zunVfhq7Q6_wMgz7KdcdAVBPNNI91e9s5Rf8jVlCHtQTJU3BrMThSXmPbs3HAjXWT-N4OGR2B7Zfs4tZ
 Host: localhost:8080
@@ -8665,8 +8677,8 @@
GET /api/volunteers/notifications/read HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MDEsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MDEsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.74DmfIl6a7ijLG0usNB6hwybw9jXKaq2LqHOfb0LBQwJwwszaukujOCAyqecJHtc
-X-CSRF-TOKEN: SF8WK7DJMjwer9UNNmHRPkVfdgtrQI8MGU_3IaAUuOHURu29LmZzGNX7V14zmrE4AkzlCSFtWzJZeLwheyvCEJklioPgc9-K
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTgsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTgsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.Sd0Y1nx74gSig8mCOwtx8lWXLi0yyTDaqLX01Bgz1CrKiGt6EUbiYS39iq0UvjMK
+X-CSRF-TOKEN: 72rmM3kOVf9aMY-evPnDzcHlB50qAqq21KuGt-opRuH1OaN92QnRC0E3N893U7uvi9T3-PeGKqVIMMub5Zvn0Y5Pf9XECMce
 Host: localhost:8080
@@ -8748,8 +8760,8 @@
PATCH /api/volunteers/notifications/read HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MDEsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MDEsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.74DmfIl6a7ijLG0usNB6hwybw9jXKaq2LqHOfb0LBQwJwwszaukujOCAyqecJHtc
-X-CSRF-TOKEN: srEEUTKK9L5nWZNMC943QdAhm0iq8Cguw2LMuYR2f9MAe2DqhNA1Z1Hswt9KYfB7afMDIugQtnDPkUoD9VKqjOcQHLI0SVbY
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTgsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTgsInJvbGUiOiJST0xFX1ZPTFVOVEVFUiJ9.Sd0Y1nx74gSig8mCOwtx8lWXLi0yyTDaqLX01Bgz1CrKiGt6EUbiYS39iq0UvjMK
+X-CSRF-TOKEN: C3U2iCM6hzHelda4-1FqLqADSlwJZYsktPvHXiRn1S9p4M02MhBU6hcCvwbz9LTbn3xeTJU1Z2Q6UrMJgp7xakFfsBxR0PsO
 Host: localhost:8080
@@ -8806,8 +8818,8 @@
GET /api/shelters/notifications HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MDEsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MDEsInJvbGUiOiJST0xFX1NIRUxURVIifQ.xRHycDr6EoaU1EBL6EjgQXE-Mg4nwYhF4MgagGVx8i9KfoTHN1qLXbrEKTDpadMS
-X-CSRF-TOKEN: 8o4IW6Mqoenc0dQ7QXaobIKulLBT3dQPjPObQq7tJ8FJ2tHHy78wY8Afw9zx5eFfeVucDbGcuYhn7-UivpX6dsrcRfJ87uf2
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTgsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTgsInJvbGUiOiJST0xFX1NIRUxURVIifQ.IOptDqlH7NPUcxFwiPoRJZ1l_dsLdyb5YgQmSG-Zn5_Q-FYp2-9nnMab1w1gfuHO
+X-CSRF-TOKEN: 9ZQmke5kCZwq-VFLQDGkmhlDK4RnTjy5GfmoIqU9sTgoB3U1xfAUpt0FPa4HmmZzdhyQqih6BuZVLQqUep3OEpwFiQpKNREG
 Host: localhost:8080
@@ -8920,8 +8932,8 @@
GET /api/shelters/notifications/read HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MDEsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MDEsInJvbGUiOiJST0xFX1NIRUxURVIifQ.xRHycDr6EoaU1EBL6EjgQXE-Mg4nwYhF4MgagGVx8i9KfoTHN1qLXbrEKTDpadMS
-X-CSRF-TOKEN: td_MWSa9RNRzwHlSO8Ov3yf5ztIW55vUPz-2K2dLmJk-3EIfgbmoa0PZcOdeokBhAu6b7kTK47N3hf75Wg3QSV9yoK1Y6yEm
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTgsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTgsInJvbGUiOiJST0xFX1NIRUxURVIifQ.IOptDqlH7NPUcxFwiPoRJZ1l_dsLdyb5YgQmSG-Zn5_Q-FYp2-9nnMab1w1gfuHO
+X-CSRF-TOKEN: uj3WxKEv5Bp_HHZ4sRF6OO1No-DlxLCDDMi302k835Z9eUP72ArmopAd03xSekUchDxODt4sjtnT94Wub6yCtQ0E76QbSXDI
 Host: localhost:8080
@@ -9003,8 +9015,8 @@
PATCH /api/shelters/notification/read HTTP/1.1
 Content-Type: application/json;charset=UTF-8
-Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDE0MTg4MDEsInN1YiI6IjEiLCJleHAiOjE3MDE0MTk4MDEsInJvbGUiOiJST0xFX1NIRUxURVIifQ.xRHycDr6EoaU1EBL6EjgQXE-Mg4nwYhF4MgagGVx8i9KfoTHN1qLXbrEKTDpadMS
-X-CSRF-TOKEN: HFwPr3kS2OJliuqj8merdpXvBkjJ2CYiB4ECpYO48XfqCIXzL24-mEsj79NIs9KXwkqfE6DcKyrx7xYPMrJkxruOkEfTP73D
+Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJpc3N1ZXIiLCJpYXQiOjE3MDI3MzIwMTgsInN1YiI6IjEiLCJleHAiOjE3MDI3MzMwMTgsInJvbGUiOiJST0xFX1NIRUxURVIifQ.IOptDqlH7NPUcxFwiPoRJZ1l_dsLdyb5YgQmSG-Zn5_Q-FYp2-9nnMab1w1gfuHO
+X-CSRF-TOKEN: uGXRP4XOU_nys9_D_CFpMhfmpOB_-wc-0iMq4pPpBaT1gTJA2lTkCOD3YZvfhOmimQxdUyLVidlKmGUT4hdO1arcZJbHuAt2
 Host: localhost:8080
@@ -9337,7 +9349,7 @@

diff --git a/src/test/java/com/clova/anifriends/domain/animal/controller/AnimalControllerTest.java b/src/test/java/com/clova/anifriends/domain/animal/controller/AnimalControllerTest.java index 5e9e23c5e..73ff6d019 100644 --- a/src/test/java/com/clova/anifriends/domain/animal/controller/AnimalControllerTest.java +++ b/src/test/java/com/clova/anifriends/domain/animal/controller/AnimalControllerTest.java @@ -4,6 +4,9 @@ import static com.clova.anifriends.domain.animal.support.fixture.AnimalFixture.animal; import static com.clova.anifriends.domain.shelter.support.ShelterFixture.shelter; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; +import static org.mockito.ArgumentMatchers.anyDouble; +import static org.mockito.ArgumentMatchers.anyList; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.BDDMockito.given; @@ -39,6 +42,7 @@ import com.clova.anifriends.domain.animal.dto.response.FindAnimalDetail; import com.clova.anifriends.domain.animal.dto.response.FindAnimalsByShelterResponse; import com.clova.anifriends.domain.animal.dto.response.FindAnimalsResponse; +import com.clova.anifriends.domain.animal.dto.response.FindAnimalsResponse.FindAnimalResponse; import com.clova.anifriends.domain.animal.dto.response.RegisterAnimalResponse; import com.clova.anifriends.domain.animal.repository.response.FindAnimalsResult; import com.clova.anifriends.domain.animal.support.fixture.AnimalDtoFixture; @@ -54,7 +58,6 @@ import java.util.List; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.SliceImpl; import org.springframework.http.MediaType; @@ -74,7 +77,9 @@ void registerAnimal() throws Exception { false, AnimalActive.QUIET.getName(), 0.7, "기타 정보", List.of("www.aws.s3.com/2")); RegisterAnimalResponse registerAnimalResponse = new RegisterAnimalResponse(1L); - given(animalService.registerAnimal(anyLong(), any())).willReturn(registerAnimalResponse); + given(animalService.registerAnimal(anyLong(), anyString(), any(), anyString(), anyString(), + anyString(), anyBoolean(), anyString(), anyDouble(), anyString(), + anyList())).willReturn(registerAnimalResponse); //when ResultActions resultActions = mockMvc.perform(post("/api/shelters/animals") @@ -261,10 +266,16 @@ void findAnimals() throws Exception { Shelter shelter = shelter(); Animal animal = animal(shelter); - ReflectionTestUtils.setField(animal, "animalId", 1L); - FindAnimalsResponse response = FindAnimalsResponse - .from(new PageImpl<>(List.of(animal))); + FindAnimalResponse findAnimalResponse = new FindAnimalResponse( + 1L, + animal.getName(), + shelter.getName(), + shelter.getAddress(), + "imageUrl" + ); + FindAnimalsResponse response = new FindAnimalsResponse(PageInfo.of(1, false), + List.of(findAnimalResponse)); when(animalService.findAnimals( any(AnimalType.class), diff --git a/src/test/java/com/clova/anifriends/domain/animal/repository/AnimalRepositoryTest.java b/src/test/java/com/clova/anifriends/domain/animal/repository/AnimalRepositoryTest.java index 942143fbb..5d9aa200e 100644 --- a/src/test/java/com/clova/anifriends/domain/animal/repository/AnimalRepositoryTest.java +++ b/src/test/java/com/clova/anifriends/domain/animal/repository/AnimalRepositoryTest.java @@ -388,7 +388,7 @@ void allFilterExist() { PageRequest pageRequest = PageRequest.of(0, 10); // when - Page result = animalRepository.findAnimals( + Page result = animalRepository.findAnimals( typeFilter, activeFilter, neuteredFilter, @@ -399,7 +399,9 @@ void allFilterExist() { ); // then - assertThat(result.getContent()).containsExactlyInAnyOrder(matchAnimal1, matchAnimal2); + assertThat(result.getContent()) + .map(FindAnimalsResult::getAnimalId) + .containsExactlyInAnyOrder(matchAnimal1.getAnimalId(), matchAnimal2.getAnimalId()); } @Test @@ -454,7 +456,7 @@ void allFilterNotExist() { PageRequest pageRequest = PageRequest.of(0, 10); // when - Page result = animalRepository.findAnimals( + Page result = animalRepository.findAnimals( nullTypeFilter, nullActiveFilter, nullIsNeuteredFilter, @@ -465,7 +467,9 @@ void allFilterNotExist() { ); // then - assertThat(result.getContent()).containsExactlyInAnyOrder(matchAnimal1, matchAnimal2); + assertThat(result.getContent()) + .map(FindAnimalsResult::getAnimalId) + .containsExactlyInAnyOrder(matchAnimal1.getAnimalId(), matchAnimal2.getAnimalId()); } } diff --git a/src/test/java/com/clova/anifriends/domain/animal/service/AnimalServiceIntegrationTest.java b/src/test/java/com/clova/anifriends/domain/animal/service/AnimalServiceIntegrationTest.java index bdaf7a103..3d7f2eaec 100644 --- a/src/test/java/com/clova/anifriends/domain/animal/service/AnimalServiceIntegrationTest.java +++ b/src/test/java/com/clova/anifriends/domain/animal/service/AnimalServiceIntegrationTest.java @@ -6,17 +6,19 @@ import com.clova.anifriends.base.BaseIntegrationTest; import com.clova.anifriends.domain.animal.Animal; +import com.clova.anifriends.domain.animal.AnimalAge; import com.clova.anifriends.domain.animal.AnimalImage; +import com.clova.anifriends.domain.animal.AnimalSize; import com.clova.anifriends.domain.animal.dto.request.RegisterAnimalRequest; import com.clova.anifriends.domain.animal.dto.response.FindAnimalsResponse; import com.clova.anifriends.domain.animal.dto.response.FindAnimalsResponse.FindAnimalResponse; import com.clova.anifriends.domain.animal.dto.response.RegisterAnimalResponse; import com.clova.anifriends.domain.animal.repository.AnimalRedisRepository; import com.clova.anifriends.domain.animal.repository.response.FindAnimalsResult; -import com.clova.anifriends.domain.animal.support.fixture.AnimalDtoFixture; import com.clova.anifriends.domain.animal.support.fixture.AnimalFixture; import com.clova.anifriends.domain.animal.vo.AnimalActive; import com.clova.anifriends.domain.animal.vo.AnimalGender; +import com.clova.anifriends.domain.animal.vo.AnimalNeuteredFilter; import com.clova.anifriends.domain.animal.vo.AnimalType; import com.clova.anifriends.domain.shelter.Shelter; import com.clova.anifriends.domain.shelter.support.ShelterFixture; @@ -26,6 +28,7 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Slice; import org.springframework.transaction.annotation.Transactional; @@ -65,7 +68,17 @@ void registerAnimal() { //when RegisterAnimalResponse response = animalService.registerAnimal( - shelter.getShelterId(), registerAnimalRequest); + shelter.getShelterId(), + registerAnimalRequest.name(), + registerAnimalRequest.birthDate(), + registerAnimalRequest.type(), + registerAnimalRequest.breed(), + registerAnimalRequest.gender(), + registerAnimalRequest.isNeutered(), + registerAnimalRequest.active(), + registerAnimalRequest.weight(), + registerAnimalRequest.information(), + registerAnimalRequest.imageUrls()); //then Animal animal = entityManager.createQuery( @@ -281,7 +294,16 @@ void findAnimalsByVolunteer5() { Animal animalToAdd = AnimalFixture.animal(shelter); animalService.registerAnimal(shelter.getShelterId(), - AnimalDtoFixture.registerAnimal(animalToAdd)); + animalToAdd.getName(), + animalToAdd.getBirthDate(), + animalToAdd.getType().toString(), + animalToAdd.getBreed(), + animalToAdd.getGender().toString(), + animalToAdd.isNeutered(), + animalToAdd.getActive().toString(), + animalToAdd.getWeight(), + animalToAdd.getInformation(), + animalToAdd.getImages()); Slice pagination = animalRepository.findAnimalsV2(null, null, null, null, null, null, @@ -300,4 +322,57 @@ void findAnimalsByVolunteer5() { assertThat(result.animals()).containsExactlyInAnyOrderElementsOf(expected.animals()); } } + + @Nested + @DisplayName("findAnimals 메서드 실행 시") + class FindAnimalsTest { + + AnimalType animalType = null; + AnimalActive animalActive = null; + AnimalNeuteredFilter animalNeuteredFilter = null; + AnimalAge animalAge = null; + AnimalGender animalGender = null; + AnimalSize animalSize = null; + + @Test + @DisplayName("성공") + void findAnimals() { + //given + Shelter shelter = ShelterFixture.shelter(); + Animal animal = AnimalFixture.animal(shelter); + Animal animalB = AnimalFixture.animal(shelter); + shelterRepository.save(shelter); + animalRepository.save(animal); + animalRepository.save(animalB); + PageRequest pageRequest = PageRequest.of(0, 20); + + //when + FindAnimalsResponse findAnimals = animalService.findAnimals(animalType, animalActive, + animalNeuteredFilter, animalAge, animalGender, animalSize, pageRequest); + + //then + assertThat(findAnimals.animals()).hasSize(2); + } + + @Test + @DisplayName("성공") + void findAnimalsV1_1() { + //given + Shelter shelter = ShelterFixture.shelter(); + Animal animal = AnimalFixture.animal(shelter); + Animal animalB = AnimalFixture.animal(shelter); + shelterRepository.save(shelter); + animalRepository.save(animal); + animalRepository.save(animalB); + PageRequest pageRequest = PageRequest.of(0, 20); + + //when + Page result = animalRepository.findAnimals(animalType, + animalActive, + animalNeuteredFilter, animalAge, animalGender, animalSize, pageRequest); + + //then + assertThat(result.getContent()).hasSize(2); + } + } } diff --git a/src/test/java/com/clova/anifriends/domain/animal/service/AnimalServiceTest.java b/src/test/java/com/clova/anifriends/domain/animal/service/AnimalServiceTest.java index 5e683ba66..af9f7e5a4 100644 --- a/src/test/java/com/clova/anifriends/domain/animal/service/AnimalServiceTest.java +++ b/src/test/java/com/clova/anifriends/domain/animal/service/AnimalServiceTest.java @@ -99,7 +99,17 @@ void registerAnimal() { given(shelterRepository.findById(anyLong())).willReturn(Optional.ofNullable(shelter)); //when - animalService.registerAnimal(1L, registerAnimalRequest); + animalService.registerAnimal(1L, + registerAnimalRequest.name(), + registerAnimalRequest.birthDate(), + registerAnimalRequest.type(), + registerAnimalRequest.breed(), + registerAnimalRequest.gender(), + registerAnimalRequest.isNeutered(), + registerAnimalRequest.active(), + registerAnimalRequest.weight(), + registerAnimalRequest.information(), + registerAnimalRequest.imageUrls()); //then then(animalCacheRepository).should().saveAnimal(any(Animal.class)); @@ -114,7 +124,17 @@ void exceptionWhenShelterNotFound() { //given //when Exception exception = catchException( - () -> animalService.registerAnimal(1L, registerAnimalRequest)); + () -> animalService.registerAnimal(1L, + registerAnimalRequest.name(), + registerAnimalRequest.birthDate(), + registerAnimalRequest.type(), + registerAnimalRequest.breed(), + registerAnimalRequest.gender(), + registerAnimalRequest.isNeutered(), + registerAnimalRequest.active(), + registerAnimalRequest.weight(), + registerAnimalRequest.information(), + registerAnimalRequest.imageUrls())); //then assertThat(exception).isInstanceOf(ShelterNotFoundException.class); @@ -204,11 +224,6 @@ class FindAnimalsTest { @DisplayName("성공: 모든 필터 존재") void findAnimals1() { // given - String mockName = "animalName"; - String mockInformation = "animalInformation"; - String mockBreed = "animalBreed"; - List mockImageUrls = List.of("www.aws.s3.com/2"); - AnimalType typeFilter = AnimalType.DOG; AnimalActive activeFilter = AnimalActive.ACTIVE; AnimalNeuteredFilter neuteredFilter = AnimalNeuteredFilter.IS_NEUTERED; @@ -217,26 +232,14 @@ void findAnimals1() { AnimalSize sizeFilter = AnimalSize.MEDIUM; Shelter shelter = ShelterFixture.shelter(); - - Animal matchAnimal = new Animal( - shelter, - mockName, - LocalDate.now().minusMonths(ageFilter.getMinMonth()), - typeFilter.getName(), - mockBreed, - genderFilter.getName(), - neuteredFilter.isNeutered(), - activeFilter.getName(), - sizeFilter.getMinWeight(), - mockInformation, - mockImageUrls - ); + Animal animal = animal(shelter); + FindAnimalsResult animalsResult = AnimalDtoFixture.findAnimalsResult(animal); PageRequest pageRequest = PageRequest.of(0, 10); - Page pageResult = new PageImpl<>(List.of(matchAnimal), pageRequest, 1); + PageImpl pageResult = new PageImpl<>(List.of(animalsResult), + pageRequest, 1); - FindAnimalsResponse expected = FindAnimalsResponse.from( - pageResult); + FindAnimalsResponse expected = AnimalMapper.resultToResponse(pageResult); when(animalRepository.findAnimals(typeFilter, activeFilter, neuteredFilter, ageFilter, genderFilter, sizeFilter, pageRequest)) @@ -249,7 +252,6 @@ void findAnimals1() { // then assertThat(result).usingRecursiveComparison().isEqualTo(expected); - } }