-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* feat: 보호소 회원가입 서비스 로직 추가 * refactor: 보호소 전화번호 검증 로직을 개선한다. * feat: 보호소 주소 검증 로직을 추가한다. * feat: 보호소 회원가입 api를 구현한다. * refactor: 상수를 이용해 예외 메시지를 관리하도록 개선한다. * style: 파일 마지막 개행을 추가한다.
- Loading branch information
1 parent
c356d89
commit b7a1261
Showing
12 changed files
with
431 additions
and
106 deletions.
There are no files selected for viewing
25 changes: 25 additions & 0 deletions
25
src/main/java/com/clova/anifriends/domain/shelter/controller/RegisterShelterRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
package com.clova.anifriends.domain.shelter.controller; | ||
|
||
import jakarta.validation.constraints.NotBlank; | ||
import jakarta.validation.constraints.NotNull; | ||
|
||
public record RegisterShelterRequest( | ||
@NotBlank(message = "이메일은 필수값입니다.") | ||
String email, | ||
@NotBlank(message = "패스워드는 필수값입니다.") | ||
String password, | ||
@NotBlank(message = "보호소 이름은 필수값입니다.") | ||
String name, | ||
@NotBlank(message = "보호소 주소는 필수값입니다.") | ||
String address, | ||
@NotBlank(message = "보호소 상세 주소는 필수값입니다.") | ||
String addressDetail, | ||
@NotBlank(message = "보호소 전화번호는 필수값입니다.") | ||
String phoneNumber, | ||
@NotBlank(message = "보호소 임시 전화번호는 필수값입니다.") | ||
String sparePhoneNumber, | ||
@NotNull(message = "보호소 주소 공개 여부는 필수값입니다.") | ||
Boolean isOpenedAddress | ||
) { | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,22 @@ | ||
package com.clova.anifriends.domain.shelter.controller; | ||
|
||
import static org.mockito.ArgumentMatchers.anyBoolean; | ||
import static org.mockito.ArgumentMatchers.anyString; | ||
import static org.mockito.BDDMockito.given; | ||
import static org.springframework.restdocs.headers.HeaderDocumentation.headerWithName; | ||
import static org.springframework.restdocs.headers.HeaderDocumentation.requestHeaders; | ||
import static org.springframework.restdocs.headers.HeaderDocumentation.responseHeaders; | ||
import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get; | ||
import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.post; | ||
import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; | ||
import static org.springframework.restdocs.payload.PayloadDocumentation.requestFields; | ||
import static org.springframework.restdocs.payload.PayloadDocumentation.responseFields; | ||
import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; | ||
import static org.springframework.restdocs.request.RequestDocumentation.pathParameters; | ||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; | ||
|
||
import com.clova.anifriends.base.BaseControllerTest; | ||
import com.clova.anifriends.docs.format.DocumentationFormatGenerator; | ||
import com.clova.anifriends.domain.shelter.Shelter; | ||
import com.clova.anifriends.domain.shelter.dto.FindShelterDetailResponse; | ||
import com.clova.anifriends.domain.shelter.dto.FindShelterMyPageResponse; | ||
|
@@ -24,6 +30,56 @@ | |
|
||
class ShelterControllerTest extends BaseControllerTest { | ||
|
||
@Test | ||
@DisplayName("보호소 회원가입 api 호출 시") | ||
void registerShelter() throws Exception { | ||
//given | ||
String email = "[email protected]"; | ||
String password = "password123!"; | ||
String name = "보호소 이름"; | ||
String address = "보호소 주소"; | ||
String addressDetail = "보호소 상세 주소"; | ||
String phoneNumber = "보호소 전화번호"; | ||
String sparePhoneNumber = "보호소 임시 전화번호"; | ||
boolean isOpenedAddress = false; | ||
RegisterShelterRequest registerShelterRequest = new RegisterShelterRequest(email, password, | ||
name, address, addressDetail, phoneNumber, sparePhoneNumber, isOpenedAddress); | ||
|
||
given(shelterService.registerShelter(anyString(), anyString(), anyString(), anyString(), | ||
anyString(), anyString(), anyString(), anyBoolean())) | ||
.willReturn(1L); | ||
|
||
//when | ||
ResultActions resultActions = mockMvc.perform(post("/api/shelters") | ||
.contentType(MediaType.APPLICATION_JSON) | ||
.content(objectMapper.writeValueAsString(registerShelterRequest))); | ||
|
||
//then | ||
resultActions.andExpect(status().isCreated()) | ||
.andDo(restDocs.document( | ||
requestFields( | ||
fieldWithPath("email").type(JsonFieldType.STRING).description("보호소 이메일") | ||
.attributes(DocumentationFormatGenerator.getConstraint("@ 포함")), | ||
fieldWithPath("password").type(JsonFieldType.STRING).description("보호소 패스워드") | ||
.attributes(DocumentationFormatGenerator.getConstraint("6자 이상, 16자 이하")), | ||
fieldWithPath("name").type(JsonFieldType.STRING).description("보호소 이름") | ||
.attributes(DocumentationFormatGenerator.getConstraint("1자 이상, 20자 이하")), | ||
fieldWithPath("address").type(JsonFieldType.STRING).description("보호소 주소") | ||
.attributes(DocumentationFormatGenerator.getConstraint("1자 이상, 100자 이하")), | ||
fieldWithPath("addressDetail").type(JsonFieldType.STRING).description("보호소 상세 주소") | ||
.attributes(DocumentationFormatGenerator.getConstraint("1자 이상, 100자 이하")), | ||
fieldWithPath("phoneNumber").type(JsonFieldType.STRING).description("보호소 전화번호") | ||
.attributes(DocumentationFormatGenerator.getConstraint("- 포함, 전화번호 형식 준수")), | ||
fieldWithPath("sparePhoneNumber").type(JsonFieldType.STRING).description("보호소 임시 전화번호") | ||
.attributes(DocumentationFormatGenerator.getConstraint("- 포함, 전화번호 형식 준수")), | ||
fieldWithPath("isOpenedAddress").type(JsonFieldType.BOOLEAN).description("보호소 주소 공개 여부") | ||
), | ||
responseHeaders( | ||
headerWithName("Location").description("생성된 리소스 접근 가능 위치") | ||
) | ||
)); | ||
} | ||
|
||
@Test | ||
@DisplayName("findShelterDetail 실행 시") | ||
void findShelterDetail() throws Exception { | ||
|
Oops, something went wrong.