Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/docs/asciidoc/api/mypage/mypage.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ include::exit-survey.adoc[]
include::record-exit-survey.adoc[]
include::comment-get.adoc[]
include::subscribed-companies.adoc[]
include::random-nickname.adoc[]
20 changes: 20 additions & 0 deletions src/docs/asciidoc/api/mypage/random-nickname.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
[[GetRandomNickname]]
== 랜덤 닉네임 생성 API(GET: /devdevdev/api/v1/mypage/nickname/random)
* 회원은 랜덤 닉네임을 생성할 수 있다.
* 비회원은 랜덤 닉네임을 생성할 수 없다.

=== 정상 요청/응답
==== HTTP Request
include::{snippets}/random-nickname/http-request.adoc[]
==== HTTP Request Header Fields
include::{snippets}/random-nickname/request-headers.adoc[]

==== HTTP Response
include::{snippets}/random-nickname/http-response.adoc[]
==== HTTP Response Fields
include::{snippets}/random-nickname/response-fields.adoc[]


=== 예외
==== HTTP Response
include::{snippets}/not-found-member-exception/response-body.adoc[]
9 changes: 3 additions & 6 deletions src/main/java/com/dreamypatisiel/devdevdev/LocalInitData.java
Original file line number Diff line number Diff line change
Expand Up @@ -208,15 +208,12 @@ private List<Bookmark> createBookmarks(Member member, List<TechArticle> techArti
private List<TechArticle> createTechArticles(Map<Long, Company> companyIdMap) {
List<TechArticle> techArticles = new ArrayList<>();
Iterable<ElasticTechArticle> elasticTechArticles = elasticTechArticleRepository.findTop10By();
int count = 0;
for (ElasticTechArticle elasticTechArticle : elasticTechArticles) {
count++;
Company company = companyIdMap.get(elasticTechArticle.getCompanyId());
if (company == null) {
log.info("company가 null 이다. elasticTechArticleId={} count={}", elasticTechArticle.getId(), count);
if (company != null) {
TechArticle techArticle = TechArticle.createTechArticle(elasticTechArticle, company);
techArticles.add(techArticle);
}
TechArticle techArticle = TechArticle.createTechArticle(elasticTechArticle, company);
techArticles.add(techArticle);
}
return techArticles;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.dreamypatisiel.devdevdev.web.controller.member;

import com.dreamypatisiel.devdevdev.domain.repository.techArticle.BookmarkSort;
import com.dreamypatisiel.devdevdev.domain.service.member.MemberNicknameDictionaryService;
import com.dreamypatisiel.devdevdev.domain.service.member.MemberService;
import com.dreamypatisiel.devdevdev.global.security.jwt.model.JwtCookieConstant;
import com.dreamypatisiel.devdevdev.global.utils.AuthenticationMemberUtils;
Expand Down Expand Up @@ -42,6 +43,7 @@
public class MypageController {

private final MemberService memberService;
private final MemberNicknameDictionaryService memberNicknameDictionaryService;

@Operation(summary = "북마크 목록 조회")
@GetMapping("/mypage/bookmarks")
Expand Down Expand Up @@ -133,4 +135,11 @@ public ResponseEntity<BasicResponse<SliceCustom<SubscribedCompanyResponse>>> get

return ResponseEntity.ok(BasicResponse.success(mySubscribedCompanies));
}

@Operation(summary = "랜덤 닉네임 생성", description = "랜덤 닉네임을 생성합니다.")
@GetMapping("/mypage/nickname/random")
public ResponseEntity<BasicResponse<String>> getRandomNickname() {
String response = memberNicknameDictionaryService.createRandomNickname();
return ResponseEntity.ok(BasicResponse.success(response));
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.dreamypatisiel.devdevdev.web.controller;
package com.dreamypatisiel.devdevdev.web.controller.member;

import static com.dreamypatisiel.devdevdev.global.constant.SecurityConstant.AUTHORIZATION_HEADER;
import static com.dreamypatisiel.devdevdev.global.constant.SecurityConstant.BEARER_PREFIX;
Expand All @@ -17,6 +17,7 @@
import com.dreamypatisiel.devdevdev.global.security.jwt.model.Token;
import com.dreamypatisiel.devdevdev.global.security.oauth2.model.SocialMemberDto;
import com.dreamypatisiel.devdevdev.global.utils.CookieUtils;
import com.dreamypatisiel.devdevdev.web.controller.SupportControllerTest;
import com.dreamypatisiel.devdevdev.web.dto.response.ResultType;
import jakarta.servlet.http.Cookie;
import java.nio.charset.StandardCharsets;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.dreamypatisiel.devdevdev.web.controller;
package com.dreamypatisiel.devdevdev.web.controller.member;

import com.dreamypatisiel.devdevdev.domain.entity.*;
import com.dreamypatisiel.devdevdev.domain.entity.embedded.*;
Expand All @@ -23,6 +23,7 @@
import com.dreamypatisiel.devdevdev.global.security.oauth2.model.SocialMemberDto;
import com.dreamypatisiel.devdevdev.global.security.oauth2.model.UserPrincipal;
import com.dreamypatisiel.devdevdev.global.utils.CookieUtils;
import com.dreamypatisiel.devdevdev.web.controller.SupportControllerTest;
import com.dreamypatisiel.devdevdev.web.dto.request.member.RecordMemberExitSurveyAnswerRequest;
import com.dreamypatisiel.devdevdev.web.dto.request.member.RecordMemberExitSurveyQuestionOptionsRequest;
import com.dreamypatisiel.devdevdev.web.dto.response.ResultType;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.dreamypatisiel.devdevdev.web.controller;
package com.dreamypatisiel.devdevdev.web.controller.member;

import static com.dreamypatisiel.devdevdev.web.dto.response.ResultType.SUCCESS;
import static org.mockito.ArgumentMatchers.any;
Expand All @@ -15,9 +15,11 @@
import com.dreamypatisiel.devdevdev.domain.entity.enums.Role;
import com.dreamypatisiel.devdevdev.domain.entity.enums.SocialType;
import com.dreamypatisiel.devdevdev.domain.repository.member.MemberRepository;
import com.dreamypatisiel.devdevdev.domain.service.member.MemberNicknameDictionaryService;
import com.dreamypatisiel.devdevdev.domain.service.member.MemberService;
import com.dreamypatisiel.devdevdev.global.constant.SecurityConstant;
import com.dreamypatisiel.devdevdev.global.security.oauth2.model.SocialMemberDto;
import com.dreamypatisiel.devdevdev.web.controller.SupportControllerTest;
import com.dreamypatisiel.devdevdev.web.dto.SliceCustom;
import com.dreamypatisiel.devdevdev.web.dto.response.ResultType;
import com.dreamypatisiel.devdevdev.web.dto.response.comment.MyWrittenCommentResponse;
Expand All @@ -43,6 +45,29 @@ public class MyPageControllerUsedMockServiceTest extends SupportControllerTest {
MemberRepository memberRepository;
@MockBean
MemberService memberService;
@MockBean
MemberNicknameDictionaryService memberNicknameDictionaryService;

@Test
@DisplayName("회원은 랜덤 닉네임을 생성할 수 있다.")
void getRandomNickname() throws Exception {
// given
String result = "주말에 공부하는 토마토";

// when
when(memberNicknameDictionaryService.createRandomNickname()).thenReturn(result);

// then
mockMvc.perform(get("/devdevdev/api/v1/mypage/nickname/random")
.contentType(MediaType.APPLICATION_JSON)
.characterEncoding(StandardCharsets.UTF_8)
.header(SecurityConstant.AUTHORIZATION_HEADER, SecurityConstant.BEARER_PREFIX + accessToken))
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$.resultType").value(SUCCESS.name()))
.andExpect(jsonPath("$.data").isNotEmpty())
.andExpect(jsonPath("$.data").isString());
}

@Test
@DisplayName("회원이 내가 썼어요 댓글을 조회한다.")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.dreamypatisiel.devdevdev.web.controller;
package com.dreamypatisiel.devdevdev.web.controller.member;

import static com.dreamypatisiel.devdevdev.global.security.jwt.model.JwtCookieConstant.DEVDEVDEV_ACCESS_TOKEN;
import static com.dreamypatisiel.devdevdev.global.security.jwt.model.JwtCookieConstant.DEVDEVDEV_LOGIN_STATUS;
Expand All @@ -19,6 +19,7 @@
import com.dreamypatisiel.devdevdev.domain.repository.member.MemberRepository;
import com.dreamypatisiel.devdevdev.global.security.oauth2.model.SocialMemberDto;
import com.dreamypatisiel.devdevdev.global.utils.CookieUtils;
import com.dreamypatisiel.devdevdev.web.controller.SupportControllerTest;
import com.dreamypatisiel.devdevdev.web.dto.response.ResultType;
import jakarta.servlet.http.Cookie;
import java.util.Date;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import com.dreamypatisiel.devdevdev.domain.entity.enums.Role;
import com.dreamypatisiel.devdevdev.domain.entity.enums.SocialType;
import com.dreamypatisiel.devdevdev.domain.repository.member.MemberRepository;
import com.dreamypatisiel.devdevdev.domain.service.member.MemberNicknameDictionaryService;
import com.dreamypatisiel.devdevdev.domain.service.member.MemberService;
import com.dreamypatisiel.devdevdev.global.constant.SecurityConstant;
import com.dreamypatisiel.devdevdev.global.security.oauth2.model.SocialMemberDto;
Expand Down Expand Up @@ -57,6 +58,39 @@ public class MyPageControllerDocsUsedMockServiceTest extends SupportControllerDo
MemberRepository memberRepository;
@MockBean
MemberService memberService;
@MockBean
MemberNicknameDictionaryService memberNicknameDictionaryService;

@Test
@DisplayName("회원은 랜덤 닉네임을 생성할 수 있다.")
void getRandomNickname() throws Exception {
// given
String result = "주말에 공부하는 토마토";

// when
when(memberNicknameDictionaryService.createRandomNickname()).thenReturn(result);

// then
ResultActions actions = mockMvc.perform(get("/devdevdev/api/v1/mypage/nickname/random")
.contentType(MediaType.APPLICATION_JSON)
.characterEncoding(StandardCharsets.UTF_8)
.header(SecurityConstant.AUTHORIZATION_HEADER, SecurityConstant.BEARER_PREFIX + accessToken))
.andDo(print())
.andExpect(status().isOk());

// docs
actions.andDo(document("random-nickname",
preprocessRequest(prettyPrint()),
preprocessResponse(prettyPrint()),
requestHeaders(
headerWithName(AUTHORIZATION_HEADER).description("Bearer 엑세스 토큰")
),
responseFields(
fieldWithPath("resultType").type(JsonFieldType.STRING).description("응답 결과"),
fieldWithPath("data").type(JsonFieldType.STRING).description("응답 데이터(생성된 랜덤 닉네임)")
)
));
}

@Test
@DisplayName("회원이 내가 썼어요 댓글을 조회한다.")
Expand Down