Skip to content

Commit

Permalink
Merge pull request #72 from HongDam-org/feat/member-refactoring
Browse files Browse the repository at this point in the history
[FEAT] Group + Path Test
  • Loading branch information
jinjoo-lab authored Nov 27, 2023
2 parents 262f311 + cab6b72 commit 6cecea4
Show file tree
Hide file tree
Showing 6 changed files with 88 additions and 5 deletions.
3 changes: 2 additions & 1 deletion backend/src/docs/member.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@
== Member
=== 닉네임 중복 검색
operation::get duplicate nickname[snippets='http-request,http-response']

=== 닉네임으로 멤버 검색
operation::get member nickname[snippets='http-request,http-response']
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
package com.twtw.backend.domain.member.controller;

import com.twtw.backend.domain.member.dto.response.DuplicateNicknameResponse;
import com.twtw.backend.domain.member.dto.response.SearchMemberResponse;
import com.twtw.backend.domain.member.service.MemberService;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/member")
Expand All @@ -22,4 +20,10 @@ public MemberController(MemberService memberService) {
public ResponseEntity<DuplicateNicknameResponse> duplicateNickname(@PathVariable String name) {
return ResponseEntity.ok(memberService.duplicateNickname(name));
}

@GetMapping()
public ResponseEntity<SearchMemberResponse> searchMemberByNickname(
@RequestParam(name = "nickname") String nickname) {
return ResponseEntity.ok(memberService.getMemberByNickname(nickname));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.twtw.backend.domain.member.dto.response;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;

@Getter
@Builder
@AllArgsConstructor
public class SearchMemberResponse {
private Boolean isExist;
private MemberResponse memberResponse;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.twtw.backend.domain.member.dto.response.DuplicateNicknameResponse;
import com.twtw.backend.domain.member.dto.response.MemberResponse;
import com.twtw.backend.domain.member.dto.response.SearchMemberResponse;
import com.twtw.backend.domain.member.entity.Member;
import com.twtw.backend.domain.member.mapper.MemberMapper;
import com.twtw.backend.domain.member.repository.MemberRepository;
Expand Down Expand Up @@ -39,6 +40,18 @@ public Member getMemberById(UUID id) {
return member;
}

public SearchMemberResponse getMemberByNickname(String nickname) {
Optional<Member> member = memberRepository.findByNickname(nickname);

if (member.isPresent()) {
Member findMember = member.get();

return new SearchMemberResponse(true, memberMapper.toMemberResponse(findMember));
}

return new SearchMemberResponse(false, null);
}

public MemberResponse getResponseByMember(Member member) {
return memberMapper.toMemberResponse(member);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import com.twtw.backend.domain.member.dto.response.DuplicateNicknameResponse;
import com.twtw.backend.domain.member.dto.response.MemberResponse;
import com.twtw.backend.domain.member.dto.response.SearchMemberResponse;
import com.twtw.backend.domain.member.service.MemberService;
import com.twtw.backend.support.docs.RestDocsTest;

Expand All @@ -22,6 +24,8 @@
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.ResultActions;

import java.util.UUID;

@DisplayName("MemberController의")
@WebMvcTest(MemberController.class)
public class MemberControllerTest extends RestDocsTest {
Expand Down Expand Up @@ -49,4 +53,37 @@ void duplicate() throws Exception {
getDocumentRequest(),
getDocumentResponse()));
}

@Test
@DisplayName("Member가 제대로 검색되는가")
void searchMemberByNickname() throws Exception {
// given
String expectedNickname = "JIN_JOO_ONE";

final MemberResponse memberResponse =
new MemberResponse(UUID.randomUUID(), expectedNickname);

final SearchMemberResponse response = new SearchMemberResponse(true, memberResponse);
given(memberService.getMemberByNickname(expectedNickname)).willReturn(response);

// when
final ResultActions perform =
mockMvc.perform(
get("/member")
.param("nickname", expectedNickname)
.contentType(MediaType.APPLICATION_JSON)
.header(
"Authorization",
"Bearer wefa3fsdczf32.gaoiuergf92.gb5hsa2jgh"));

// then
perform.andExpect(status().isOk());

perform.andDo(print())
.andDo(
document(
"get member nickname",
getDocumentRequest(),
getDocumentResponse()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

import com.twtw.backend.domain.member.dto.response.DuplicateNicknameResponse;
import com.twtw.backend.domain.member.dto.response.MemberResponse;
import com.twtw.backend.domain.member.dto.response.SearchMemberResponse;
import com.twtw.backend.domain.member.entity.Member;
import com.twtw.backend.domain.member.repository.MemberRepository;
import com.twtw.backend.fixture.member.MemberEntityFixture;
Expand Down Expand Up @@ -55,4 +56,18 @@ void getResponseByMember() {
// then
assertThat(memberResponse.getId()).isEqualTo(member.getId());
}

@Test
@DisplayName("Nickname을 통한 Member 검색이 수행되는가")
void searchMemberByNickname() {
// given
final Member member = memberRepository.save(MemberEntityFixture.FIRST_MEMBER.toEntity());

// when
final SearchMemberResponse response =
memberService.getMemberByNickname(member.getNickname());

// then
assertThat(response.getMemberResponse().getId()).isEqualTo(member.getId());
}
}

0 comments on commit 6cecea4

Please sign in to comment.