Skip to content

Commit

Permalink
doc: add table templates in docs
Browse files Browse the repository at this point in the history
  • Loading branch information
ray-yhc committed Jul 24, 2023
1 parent 2533da1 commit 4d3661c
Show file tree
Hide file tree
Showing 3 changed files with 221 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import swm.hkcc.LGTM.app.modules.auth.exception.InvalidTechTag;
import swm.hkcc.LGTM.app.modules.auth.service.AuthService;
import swm.hkcc.LGTM.app.modules.auth.utils.GithubUserInfoProvider;
import swm.hkcc.LGTM.utils.CustomMDGenerator;

import java.util.Arrays;

Expand All @@ -43,6 +44,7 @@
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static swm.hkcc.LGTM.utils.CustomMDGenerator.*;

@SpringBootTest
@Transactional
Expand Down Expand Up @@ -120,18 +122,37 @@ void juniorSignup() throws Exception {
resource(ResourceSnippetParameters.builder()
.summary("[회원인증] 주니어 회원가입")
.description(
"주니어 회원가입 정보 입력 후, 회원가입 정보를 반환한다.\n\n" +
"View : 회원가입 화면\n\n\n\n" +
"[Request values]\n\n" +
"githubId : Github 아이디\n\n" +
"githubOauthId : Github 의 사용자 식별 번호. 해당 id 이용하여 LGTM의 서비스 이용자를 식별한다.\n\n" +
"nickName : 닉네임, 1자 이상 10자 이하, 클라이언트에서 trim()처리하여 보낸다, 동일한 닉네임이 있을 경우 400 에러 반환\n\n" +
"deviceToken : 디바이스 토큰\n\n" +
"profileImageUrl : 프로필 이미지 URL\n\n" +
"introduction : 나의 한줄 소개, 최대 500자, 클라이언트에서 trim()처리하여 보낸다 \n\n" +
"tagList : 태그 리스트, 텍스트의 리스트로 전달한다. 1개 이상이어야 한다. 선택가능한 태그 외의 문자열이 전달될 경우 400에러 반환\n\n" +
"educationalHistory : 학력\n\n" +
"realName : 실명\n\n"
CustomMDGenerator.builder()
.h1("[Descriptions]")
.h3("주니어 회원가입 정보 입력 후, 회원가입 정보를 반환한다.")
.h3("View : 회원가입 화면")
.h1("[Request values]")
.table(
tableHead("Request values", "Data Type", "Description"),
tableRow("githubId", "String", "Github 아이디"),
tableRow("githubOauthId", "Integer", "Github의 사용자 식별 번호. 해당 id 이용하여 LGTM의 서비스 이용자를 식별한다."),
tableRow("nickName", "String", "닉네임, 1자 이상 10자 이하, 클라이언트에서 trim()처리하여 보낸다, 동일한 닉네임이 있을 경우 400 에러 반환"),
tableRow("deviceToken", "String", "디바이스 토큰"),
tableRow("profileImageUrl", "String", "프로필 이미지 URL"),
tableRow("introduction", "String", "나의 한줄 소개, 최대 500자, 클라이언트에서 trim()처리하여 보낸다"),
tableRow("tagList", "List<String>", "태그 리스트, 텍스트의 리스트로 전달한다. 1개 이상이어야 한다. 선택가능한 태그 외의 문자열이 전달될 경우 400에러 반환"),
tableRow("educationalHistory", "String", "학력"),
tableRow("realName", "String", "실명")
)
.line()
.h1("[Errors]")
.table(
tableHead("HTTP Status", "Response Code", "Message"),
tableRow(
ResponseCode.DUPLICATE_NICK_NAME.getHttpStatus().toString(),
ResponseCode.DUPLICATE_NICK_NAME.getCode().toString(),
ResponseCode.DUPLICATE_NICK_NAME.getMessage()),
tableRow(
ResponseCode.INVALID_TECH_TAG.getHttpStatus().toString(),
ResponseCode.INVALID_TECH_TAG.getCode().toString(),
ResponseCode.INVALID_TECH_TAG.getMessage())
)
.build()
)
.requestFields(
fieldWithPath("githubId").type(JsonFieldType.STRING).description("Github 아이디"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import swm.hkcc.LGTM.app.modules.auth.utils.GithubUserInfoProvider;
import swm.hkcc.LGTM.app.modules.member.exception.InvalidBankName;
import swm.hkcc.LGTM.app.modules.member.exception.InvalidCareerPeriod;
import swm.hkcc.LGTM.utils.CustomMDGenerator;

import java.util.Arrays;

Expand All @@ -46,6 +47,7 @@
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static swm.hkcc.LGTM.utils.CustomMDGenerator.*;

@SpringBootTest
@Transactional
Expand Down Expand Up @@ -125,21 +127,48 @@ void seniorSignup() throws Exception {
resource(ResourceSnippetParameters.builder()
.summary("[회원인증] 시니어 회원가입")
.description(
"시니어 회원가입 정보 입력 후, 회원가입 정보를 반환한다.\n\n" +
"View : 회원가입 화면\n\n\n\n" +
"[Request values]\n\n" +
"githubId : Github 아이디\n\n" +
"githubOauthId : Github 의 사용자 식별 번호. 해당 id 이용하여 LGTM의 서비스 이용자를 식별한다.\n\n" +
"nickName : 닉네임, 1자 이상 10자 이하, 클라이언트에서 trim()처리하여 보낸다, 동일한 닉네임이 있을 경우 400 에러 반환\n\n" +
"deviceToken : 디바이스 토큰\n\n" +
"profileImageUrl : 프로필 이미지 URL\n\n" +
"introduction : 나의 한줄 소개, 최대 500자, 클라이언트에서 trim()처리하여 보낸다 \n\n" +
"tagList : 태그 리스트, 텍스트의 리스트로 전달한다. 1개 이상이어야 한다. 선택가능한 태그 외의 문자열이 전달될 경우 400에러 반환\n\n" +
"companyInfo : 회사 정보, 법인명에 해당하는 이름\n\n" +
"careerPeriod : 경력 기간, 개월 단위로 입력, 1 이상의 정수, 12개월 이상이어야 한다.\n\n" +
"position : 직급, 1자 이상 10자 이하, 클라이언트에서 trim()처리하여 보낸다\n\n" +
"accountNumber : 계좌번호, 숫자와 '-'로만 이루어져야 한다.\n\n" +
"bankName : 은행명, 등록되지 않은 이름일 경우 400 에러 반환"
CustomMDGenerator.builder()
.h1("[Descriptions]")
.h3("시니어 회원가입 정보 입력 후, 회원가입 정보를 반환한다.")
.h3("View : 회원가입 화면")
.h1("[Request values]")
.table(
tableHead("Request values", "Data Type", "Description"),
tableRow("githubId", "String", "Github 아이디"),
tableRow("githubOauthId", "Integer", "Github의 사용자 식별 번호. 해당 id 이용하여 LGTM의 서비스 이용자를 식별한다."),
tableRow("nickName", "String", "닉네임, 1자 이상 10자 이하, 클라이언트에서 trim()처리하여 보낸다, 동일한 닉네임이 있을 경우 400 에러 반환"),
tableRow("deviceToken", "String", "디바이스 토큰"),
tableRow("profileImageUrl", "String", "프로필 이미지 URL"),
tableRow("introduction", "String", "나의 한줄 소개, 최대 500자, 클라이언트에서 trim()처리하여 보낸다"),
tableRow("tagList", "List<String>", "태그 리스트, 텍스트의 리스트로 전달한다. 1개 이상이어야 한다. 선택가능한 태그 외의 문자열이 전달될 경우 400에러 반환"),
tableRow("companyInfo", "String", "회사 정보, 법인명에 해당하는 이름"),
tableRow("careerPeriod", "Integer", "경력 기간, 개월 단위로 입력, 1 이상의 정수, 12개월 이상이어야 한다."),
tableRow("position", "String", "직급, 1자 이상 10자 이하, 클라이언트에서 trim()처리하여 보낸다"),
tableRow("accountNumber", "String", "계좌번호, 숫자와 '-'로만 이루어져야 한다."),
tableRow("bankName", "String", "은행명, 등록되지 않은 이름일 경우 400 에러 반환")
)
.line()
.h1("[Errors]")
.table(
tableHead("HTTP Status", "Response Code", "Message"),
tableRow(
ResponseCode.DUPLICATE_NICK_NAME.getHttpStatus().toString(),
ResponseCode.DUPLICATE_NICK_NAME.getCode().toString(),
ResponseCode.DUPLICATE_NICK_NAME.getMessage()),
tableRow(
ResponseCode.INVALID_TECH_TAG.getHttpStatus().toString(),
ResponseCode.INVALID_TECH_TAG.getCode().toString(),
ResponseCode.INVALID_TECH_TAG.getMessage()),
tableRow(
ResponseCode.INVALID_CAREER_PERIOD.getHttpStatus().toString(),
ResponseCode.INVALID_CAREER_PERIOD.getCode().toString(),
ResponseCode.INVALID_CAREER_PERIOD.getMessage()),
tableRow(
ResponseCode.INVALID_BANK_NAME.getHttpStatus().toString(),
ResponseCode.INVALID_BANK_NAME.getCode().toString(),
ResponseCode.INVALID_BANK_NAME.getMessage())
)
.build()
)
.requestFields(
fieldWithPath("githubId").type(JsonFieldType.STRING).description("Github 아이디"),
Expand Down
144 changes: 144 additions & 0 deletions API-Server/src/test/java/swm/hkcc/LGTM/utils/CustomMDGenerator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
package swm.hkcc.LGTM.utils;

public class CustomMDGenerator {

private StringBuilder sb;

private CustomMDGenerator() {
sb = new StringBuilder();
}

public static CustomMDGenerator builder() {
return new CustomMDGenerator();
}

public static String tableHead(String... columns) {
StringBuilder tempSb = new StringBuilder();
tempSb.append("<tr>").append("\n");
for (String column : columns) {
tempSb.append("<th>").append(column).append("</th>").append("\n");
}
tempSb.append("</tr>").append("\n");
return tempSb.toString();
}

public static String tableRow(String... columns) {
StringBuilder tempSb = new StringBuilder();
tempSb.append("<tr>").append("\n");
for (String column : columns) {
tempSb.append("<td>").append(column).append("</td>").append("\n");
}
tempSb.append("</tr>").append("\n");
return tempSb.toString();
}

public String build() {
return sb.toString();
}

public CustomMDGenerator h1(String title) {
sb.append("# ").append(title).append("\n\n");
return this;
}

public CustomMDGenerator h2(String title) {
sb.append("## ").append(title).append("\n\n");
return this;
}

public CustomMDGenerator h3(String title) {
sb.append("### ").append(title).append("\n\n");
return this;
}

public CustomMDGenerator h4(String title) {
sb.append("#### ").append(title).append("\n\n");
return this;
}

public CustomMDGenerator h5(String title) {
sb.append("##### ").append(title).append("\n\n");
return this;
}

public CustomMDGenerator h6(String title) {
sb.append("###### ").append(title).append("\n\n");
return this;
}

public CustomMDGenerator p(String content) {
sb.append(content).append("\n\n");
return this;
}

public CustomMDGenerator code(String content) {
sb.append("```").append("\n");
sb.append(content).append("\n");
sb.append("```").append("\n\n");
return this;
}

public CustomMDGenerator code(String content, String language) {
sb.append("```").append(language).append("\n");
sb.append(content).append("\n");
sb.append("```").append("\n\n");
return this;
}

public CustomMDGenerator quote(String content) {
sb.append("> ").append(content).append("\n\n");
return this;
}

public CustomMDGenerator ul(String content) {
sb.append("- ").append(content).append("\n");
return this;
}

public CustomMDGenerator ol(String content) {
sb.append("1. ").append(content).append("\n");
return this;
}

/**
* 테이블을 생성합니다.
* 예제)
* .table(
* CustomMDGenerator.tableHead("column1", "column2"),
* CustomMDGenerator.tableRow("row1", "row2"),
* CustomMDGenerator.tableRow("row3", "row4")
* ...
* )
*
* @param head
* @param rows
* @return CustomMDGenerator
*/
public CustomMDGenerator table(String head, String... rows) {
sb.append("<table>").append("\n");

sb.append("<thead>").append("\n");
sb.append(head).append("\n");
sb.append("</thead>").append("\n");

sb.append("<tbody>").append("\n");
for (String row : rows) {
sb.append(row).append("\n");
}
sb.append("</tbody>").append("\n");

sb.append("</table>").append("\n\n");
return this;
}

public CustomMDGenerator br() {
sb.append("\n");
return this;
}

public CustomMDGenerator line() {
sb.append("---").append("\n\n");
return this;
}

}

0 comments on commit 4d3661c

Please sign in to comment.