Skip to content

Commit

Permalink
feat: 닉네임 유효성 체크하는 로직 추가
Browse files Browse the repository at this point in the history
* 현재는 중복 여부만 확인
  • Loading branch information
yujung7768903 committed Jan 3, 2024
1 parent 540f969 commit febe663
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public CustomResponseEntity<Void> updateGroupName(
@RequestBody @Valid GroupNameUpdateRequest request, @Login Users user
) {
return CustomResponseEntity.success(
groupService.updateGroupName(groupId,request.toServiceRequest(), user)
groupService.updateGroupName(groupId, request.toServiceRequest(), user)
);
}

Expand Down Expand Up @@ -116,4 +116,13 @@ public CustomResponseEntity<List<GroupPlaceResponse>> keywordCentralizedMeetingS
) {
return CustomResponseEntity.success(groupService.keywordCentralizedMeetingSpot(x, y, local, keyword));
}

// 닉네임 유효성 체크
@GetMapping("/nickname")
public CustomResponseEntity<NicknameValidationResponse> checkNicknameValidation(
@RequestParam Long groupId,
@RequestParam String nickname
) {
return CustomResponseEntity.success(groupService.checkNicknameValidation(groupId, nickname));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,11 @@
import com.moim.backend.domain.space.entity.Groups;
import com.moim.backend.domain.space.entity.Participation;
import com.moim.backend.domain.space.response.MiddlePoint;
import jakarta.validation.constraints.NotNull;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.Collection;
import java.util.List;

@Repository
Expand All @@ -25,5 +23,5 @@ public interface ParticipationRepository extends JpaRepository<Participation, Lo

List<Participation> findAllByGroupGroupIdAndUserIdIn(Long group_groupId, List<Long> userId);
List<Participation> findAllByGroup(Groups group);

List<Participation> findAllByGroupAndUserName(Groups group, String name);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.moim.backend.domain.space.response;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor
@AllArgsConstructor
public class NicknameValidationResponse {
boolean isDuplicated;
}
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,13 @@ public GroupDetailResponse readParticipateGroupByRegion(Long groupId) {
return GroupDetailResponse.response(group, admin, regions);
}

public NicknameValidationResponse checkNicknameValidation(Long groupId, String nickname) {
Groups group = getGroup(groupId);
List<Participation> participationList = participationRepository.findAllByGroupAndUserName(group, nickname);
boolean isDuplicated = (participationList.size() > 0) ? true : false;
return new NicknameValidationResponse(isDuplicated);
}

private void toRegionsResponse(List<GroupRegionResponse> regions, Participation participation) {
// 그룹화 지역 이름 생성
String regionName = getRegionName(participation);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.moim.backend.docs.space;

import com.epages.restdocs.apispec.ResourceSnippetParameters;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.moim.backend.RestDocsSupport;
import com.moim.backend.domain.space.controller.GroupController;
import com.moim.backend.domain.space.request.controller.GroupCreateRequest;
Expand All @@ -10,6 +11,7 @@
import com.moim.backend.domain.space.response.*;
import com.moim.backend.domain.space.response.group.*;
import com.moim.backend.domain.space.service.GroupService;
import com.moim.backend.domain.user.response.UserLoginResponse;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders;
Expand All @@ -22,6 +24,7 @@
import static com.epages.restdocs.apispec.Schema.schema;
import static com.moim.backend.domain.space.entity.TransportationType.PERSONAL;
import static com.moim.backend.domain.space.entity.TransportationType.PUBLIC;
import static com.moim.backend.domain.user.config.Platform.NAVER;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock;
Expand Down Expand Up @@ -793,4 +796,36 @@ void updateGroupName() throws Exception {
.andExpect(status().isOk())
.andDo(document);
}

@DisplayName("닉네임 유효성 체크")
@Test
void checkNicknameValidation() throws Exception {
// given
given(groupService.checkNicknameValidation(1L, "중복될일없는 특이한 닉네임"))
.willReturn(new NicknameValidationResponse(false));

ResourceSnippetParameters parameters = ResourceSnippetParameters.builder()
.tag("닉네임 유효성 체크 API")
.summary("닉네임 유효성 체크 API")
.queryParameters(
parameterWithName("groupId").description("그룹 Id"),
parameterWithName("nickname").description("닉네임"))
.responseFields(
fieldWithPath("code").type(NUMBER).description("상태 코드"),
fieldWithPath("message").type(STRING).description("상태 메세지"),
fieldWithPath("data.duplicated").type(BOOLEAN).description("닉네임 중복 여부"))
.responseSchema(schema("NicknameValidationResponse"))
.build();
RestDocumentationResultHandler document = documentHandler("check-nickname-validation", prettyPrint(), prettyPrint(), parameters);

// when // then
MockHttpServletRequestBuilder httpRequest = RestDocumentationRequestBuilders.get("/group/nickname")
.param("groupId", "1")
.param("nickname", "중복될일없는 특이한 닉네임");

mockMvc.perform(httpRequest)
.andDo(print())
.andExpect(status().isOk())
.andDo(document);
}
}

0 comments on commit febe663

Please sign in to comment.