From 562df6b0ce7b6a34bf2fbe24cfd9cbf72a88cfdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?lkd9125=28=EC=9D=B4=EA=B2=BD=EB=8F=84=29?= Date: Mon, 5 Feb 2024 18:32:40 +0900 Subject: [PATCH] =?UTF-8?q?Add:=20RestDocs=20=EC=8A=A4=EB=8B=88=ED=8E=AB?= =?UTF-8?q?=20=EC=BB=A4=EC=8A=A4=ED=85=80=EC=9C=BC=EB=A1=9C=EC=9D=B8?= =?UTF-8?q?=ED=95=9C=20=ED=95=AD=EB=AA=A9=20=EC=B6=94=EA=B0=80,=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20Transaction=20=EB=A1=A4=EB=B0=B1?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/kac-app/build.gradle | 16 +- .../app/core/security/AppSecurityConfig.java | 5 +- .../src/main/resources/static/docs/index.html | 618 +++++++++--------- .../kac/com/code/ComnCodeControllerTest.java | 140 +++- .../templates/path-parameters.snippet | 11 + .../templates/query-parameters.snippet | 10 + .../restdocs/templates/request-fields.snippet | 12 + .../templates/request-headers.snippet | 10 + .../templates/response-fields.snippet | 12 + 9 files changed, 479 insertions(+), 355 deletions(-) create mode 100644 app/kac-app/src/test/resources/org/springframework/restdocs/templates/path-parameters.snippet create mode 100644 app/kac-app/src/test/resources/org/springframework/restdocs/templates/query-parameters.snippet create mode 100644 app/kac-app/src/test/resources/org/springframework/restdocs/templates/request-fields.snippet create mode 100644 app/kac-app/src/test/resources/org/springframework/restdocs/templates/request-headers.snippet create mode 100644 app/kac-app/src/test/resources/org/springframework/restdocs/templates/response-fields.snippet diff --git a/app/kac-app/build.gradle b/app/kac-app/build.gradle index 0ea76a3..72cfc38 100644 --- a/app/kac-app/build.gradle +++ b/app/kac-app/build.gradle @@ -51,10 +51,8 @@ test { outputs.dir snippetsDir } asciidoctor { - if(project.hasProperty("excludeTest")){ - dependsOn test - inputs.dir snippetsDir - } + dependsOn test + inputs.dir snippetsDir } bootJar { @@ -65,9 +63,7 @@ bootJar { } asciidoctor.doFirst { - if(project.hasProperty("excludeTest")) { - delete file('src/main/resources/static/docs') - } + delete file('src/main/resources/static/docs') } task copyDocument(type: Copy) { @@ -77,13 +73,9 @@ task copyDocument(type: Copy) { } build { - if(project.hasProperty("excludeTest")){ - dependsOn copyDocument - } + dependsOn copyDocument } - - // querydsl def querydslDir = layout.buildDirectory.dir("generated/querydsl").get().asFile diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/app/core/security/AppSecurityConfig.java b/app/kac-app/src/main/java/kr/co/palnet/kac/app/core/security/AppSecurityConfig.java index 05e7594..bb0074b 100644 --- a/app/kac-app/src/main/java/kr/co/palnet/kac/app/core/security/AppSecurityConfig.java +++ b/app/kac-app/src/main/java/kr/co/palnet/kac/app/core/security/AppSecurityConfig.java @@ -19,7 +19,10 @@ import org.springframework.security.web.SecurityFilterChain; public class AppSecurityConfig extends SecurityConfig { // 시큐리티 적용 안하는 URL 목록 - private final String[] IGNORE_URL = {}; + private final String[] IGNORE_URL = { + "/docs/index.html", + "/v1/com/code/**" + }; private final String[] USER_URL = {}; diff --git a/app/kac-app/src/main/resources/static/docs/index.html b/app/kac-app/src/main/resources/static/docs/index.html index b3dc462..ad1c4be 100644 --- a/app/kac-app/src/main/resources/static/docs/index.html +++ b/app/kac-app/src/main/resources/static/docs/index.html @@ -485,23 +485,27 @@ Host: localhost:8080 --+++ - - + + + + +
ParameterDescription파라미터설명필수

siteCd

사이트코드

true

langDivCd

언어코드

true

@@ -512,104 +516,24 @@ Host: localhost:8080
HTTP/1.1 200 OK
 Content-Type: application/json;charset=UTF-8
-Content-Length: 1897
+Content-Length: 3
 
-[ {
-  "groupCd" : "8984",
-  "siteCd" : "KAC",
-  "groupCdNm" : "신규그룹001",
-  "rm" : "비고....",
-  "codeList" : null
-}, {
-  "groupCd" : "NEW_GROUP_1706059161",
-  "siteCd" : "KAC",
-  "groupCdNm" : "신규그룹001",
-  "rm" : "비고....",
-  "codeList" : null
-}, {
-  "groupCd" : "NEW_GROUP_1706061920",
-  "siteCd" : "KAC",
-  "groupCdNm" : "신규그룹001",
-  "rm" : "비고....",
-  "codeList" : null
-}, {
-  "groupCd" : "NEW_GROUP_1706061927",
-  "siteCd" : "KAC",
-  "groupCdNm" : "신규그룹001",
-  "rm" : "비고....",
-  "codeList" : null
-}, {
-  "groupCd" : "NEW_GROUP_1706061935",
-  "siteCd" : "KAC",
-  "groupCdNm" : "신규그룹001",
-  "rm" : "비고....",
-  "codeList" : null
-}, {
-  "groupCd" : "NEW_GROUP001",
-  "siteCd" : "KAC",
-  "groupCdNm" : "신규그룹001",
-  "rm" : "비고....",
-  "codeList" : [ {
-    "groupCd" : "NEW_GROUP001",
-    "cdId" : "NEW_CODE001",
-    "cdNm" : null,
-    "upperCd" : null,
-    "sortOrdr" : 0,
-    "addInfoValue" : "추가!!",
-    "children" : null
-  }, {
-    "groupCd" : "NEW_GROUP001",
-    "cdId" : "NEW_CODE002",
-    "cdNm" : null,
-    "upperCd" : null,
-    "sortOrdr" : 0,
-    "addInfoValue" : "추가!!",
-    "children" : null
-  }, {
-    "groupCd" : "NEW_GROUP001",
-    "cdId" : "NEW_CODE170605827510",
-    "cdNm" : null,
-    "upperCd" : null,
-    "sortOrdr" : 0,
-    "addInfoValue" : "추가!!",
-    "children" : null
-  }, {
-    "groupCd" : "NEW_GROUP001",
-    "cdId" : "NEW_CODE170605829584",
-    "cdNm" : null,
-    "upperCd" : null,
-    "sortOrdr" : 0,
-    "addInfoValue" : "추가!!",
-    "children" : null
-  }, {
-    "groupCd" : "NEW_GROUP001",
-    "cdId" : "NEW_CODE170605916148",
-    "cdNm" : null,
-    "upperCd" : null,
-    "sortOrdr" : 0,
-    "addInfoValue" : "추가!!",
-    "children" : null
-  } ]
-}, {
-  "groupCd" : "NEW_GROUP002",
-  "siteCd" : "KAC",
-  "groupCdNm" : "신규그룹001",
-  "rm" : "비고....",
-  "codeList" : null
-} ]
+[ ]
---++++ - - - + + + + @@ -617,61 +541,73 @@ Content-Length: 1897 + + + + + + + + + + + +
PathTypeDescription파라미터타입설명필수

[].groupCd

String

그룹 코드

false

[].siteCd

String

사이트 코드

false

[].groupCdNm

String

그룹 명

false

[].rm

String

비고

false

[].codeList

Array

그룹에 포함된 코드 리스트

false

[].codeList[].groupCd

String

코드의 그룹

false

[].codeList[].cdId

String

코드의 ID

false

[].codeList[].cdNm

String

코드의 이름

false

[].codeList[].upperCd

String

상위 코드의 이름

false

[].codeList[].sortOrdr

Number

코드의 정렬순서

false

[].codeList[].addInfoValue

String

코드의 추가 밸류

false

[].codeList[].children

String

코드의 하위요소

false

@@ -692,23 +628,27 @@ Host: localhost:8080 --+++ - - + + + + +
ParameterDescription파라미터설명필수

groupCd

그룹코드

true

langDivCd

언어코드

true

@@ -719,62 +659,24 @@ Host: localhost:8080
HTTP/1.1 200 OK
 Content-Type: application/json;charset=UTF-8
-Content-Length: 864
+Content-Length: 3
 
-[ {
-  "groupCd" : "NEW_GROUP001",
-  "cdId" : "NEW_CODE001",
-  "cdNm" : null,
-  "upperCd" : null,
-  "sortOrdr" : 0,
-  "addInfoValue" : "추가!!",
-  "children" : null
-}, {
-  "groupCd" : "NEW_GROUP001",
-  "cdId" : "NEW_CODE002",
-  "cdNm" : null,
-  "upperCd" : null,
-  "sortOrdr" : 0,
-  "addInfoValue" : "추가!!",
-  "children" : null
-}, {
-  "groupCd" : "NEW_GROUP001",
-  "cdId" : "NEW_CODE170605827510",
-  "cdNm" : null,
-  "upperCd" : null,
-  "sortOrdr" : 0,
-  "addInfoValue" : "추가!!",
-  "children" : null
-}, {
-  "groupCd" : "NEW_GROUP001",
-  "cdId" : "NEW_CODE170605829584",
-  "cdNm" : null,
-  "upperCd" : null,
-  "sortOrdr" : 0,
-  "addInfoValue" : "추가!!",
-  "children" : null
-}, {
-  "groupCd" : "NEW_GROUP001",
-  "cdId" : "NEW_CODE170605916148",
-  "cdNm" : null,
-  "upperCd" : null,
-  "sortOrdr" : 0,
-  "addInfoValue" : "추가!!",
-  "children" : null
-} ]
+[ ]
---++++ - - - + + + + @@ -782,36 +684,43 @@ Content-Length: 864 + + + + + + +
PathTypeDescription파라미터타입설명필수

[].groupCd

String

코드의 그룹

false

[].cdId

String

코드의 ID

false

[].cdNm

String

코드의 이름

false

[].upperCd

String

상위 코드의 이름

false

[].sortOrdr

Number

코드의 정렬순서

false

[].addInfoValue

String

코드의 추가 밸류

false

[].children

String

코드의 하위요소

false

@@ -837,64 +746,24 @@ Host: localhost:8080
HTTP/1.1 200 OK
 Content-Type: application/json;charset=UTF-8
-Content-Length: 957
+Content-Length: 3
 
-[ {
-  "groupCd" : "8984",
-  "siteCd" : "KAC",
-  "groupCdNm" : "신규그룹001",
-  "rm" : "비고....",
-  "codeList" : null
-}, {
-  "groupCd" : "NEW_GROUP_1706059161",
-  "siteCd" : "KAC",
-  "groupCdNm" : "신규그룹001",
-  "rm" : "비고....",
-  "codeList" : null
-}, {
-  "groupCd" : "NEW_GROUP_1706061920",
-  "siteCd" : "KAC",
-  "groupCdNm" : "신규그룹001",
-  "rm" : "비고....",
-  "codeList" : null
-}, {
-  "groupCd" : "NEW_GROUP_1706061927",
-  "siteCd" : "KAC",
-  "groupCdNm" : "신규그룹001",
-  "rm" : "비고....",
-  "codeList" : null
-}, {
-  "groupCd" : "NEW_GROUP_1706061935",
-  "siteCd" : "KAC",
-  "groupCdNm" : "신규그룹001",
-  "rm" : "비고....",
-  "codeList" : null
-}, {
-  "groupCd" : "NEW_GROUP001",
-  "siteCd" : "KAC",
-  "groupCdNm" : "신규그룹001",
-  "rm" : "비고....",
-  "codeList" : null
-}, {
-  "groupCd" : "NEW_GROUP002",
-  "siteCd" : "KAC",
-  "groupCdNm" : "신규그룹001",
-  "rm" : "비고....",
-  "codeList" : null
-} ]
+[ ]
---++++ - - - + + + + @@ -902,26 +771,31 @@ Content-Length: 957 + + + + +
PathTypeDescription파라미터타입설명필수

[].groupCd

String

그룹 코드

false

[].siteCd

String

사이트 코드

false

[].groupCdNm

String

그룹 명

false

[].rm

String

비고

false

[].codeList

Array

그룹에 포함된 코드 리스트

false

@@ -937,11 +811,11 @@ Content-Length: 957
POST /v1/com/code/group HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Accept: application/json
-Content-Length: 118
+Content-Length: 110
 Host: localhost:8080
 
 {
-  "groupCd" : "NEW_GROUP_1706068307",
+  "groupCd" : "NEW_GROUP001",
   "siteCd" : "KAC",
   "groupCdNm" : "신규그룹001",
   "rm" : "비고...."
@@ -950,15 +824,17 @@ Host: localhost:8080
 
 ---++++
-
-
-
+
+
+
+
@@ -966,21 +842,25 @@ Host: localhost:8080
 
+
+
+
+
PathTypeDescription파라미터타입설명필수

groupCd

String

그룹코드

true

siteCd

String

사이트코드

true

groupCdNm

String

그룹이름

true

rm

String

비고

true

@@ -991,31 +871,33 @@ Host: localhost:8080
HTTP/1.1 200 OK
 Content-Type: application/json;charset=UTF-8
-Content-Length: 276
+Content-Length: 267
 
 {
-  "groupCd" : "NEW_GROUP_1706068307",
+  "groupCd" : "NEW_GROUP001",
   "siteCd" : "KAC",
   "groupCdNm" : "신규그룹001",
   "rm" : "비고....",
   "createUserId" : "CREATE_USER",
-  "createDt" : "2024-01-24T12:51:47.097899",
+  "createDt" : "2024-02-05T15:53:38.24206",
   "updateUserId" : "CREATE_USER",
-  "updateDt" : "2024-01-24T12:51:47.097907"
+  "updateDt" : "2024-02-05T15:53:38.242072"
 }
---++++ - - - + + + + @@ -1023,41 +905,49 @@ Content-Length: 276 + + + + + + + +
PathTypeDescription파라미터타입설명필수

groupCd

String

그룹코드

true

siteCd

String

사이트코드

true

groupCdNm

String

그룹이름

true

rm

String

비고

true

createUserId

String

등록한 유저 아이디

true

createDt

String

등록일시

true

updateUserId

String

수정한 유저 아이디

true

updateDt

String

수정일시

true

@@ -1073,12 +963,12 @@ Content-Length: 276
POST /v1/com/code/code HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Accept: application/json
-Content-Length: 133
+Content-Length: 124
 Host: localhost:8080
 
 {
   "groupCd" : "NEW_GROUP001",
-  "cdId" : "NEW_CODE170606830704",
+  "cdId" : "NEW_CODE001",
   "sortOrdr" : 0,
   "addInfoValue" : "추가!!",
   "useYn" : "Y"
@@ -1087,15 +977,17 @@ Host: localhost:8080
 
 ---++++
-
-
-
+
+
+
+
@@ -1103,26 +995,31 @@ Host: localhost:8080
 
+
+
+
+
+
PathTypeDescription파라미터타입설명필수

groupCd

String

그룹코드

true

cdId

String

코드 아이디

true

sortOrdr

Number

정렬순서

true

addInfoValue

String

추가사항

true

useYn

String

사용여부

true

@@ -1133,33 +1030,35 @@ Host: localhost:8080
HTTP/1.1 200 OK
 Content-Type: application/json;charset=UTF-8
-Content-Length: 311
+Content-Length: 302
 
 {
   "groupCd" : "NEW_GROUP001",
-  "cdId" : "NEW_CODE170606830704",
+  "cdId" : "NEW_CODE001",
   "upperCd" : null,
   "sortOrdr" : 0,
   "addInfoValue" : "추가!!",
   "useYn" : "Y",
   "createUserId" : "CREATE_USER",
-  "createDt" : "2024-01-24T12:51:47.054488",
+  "createDt" : "2024-02-05T15:53:38.341129",
   "updateUserId" : "CREATE_USER",
-  "updateDt" : "2024-01-24T12:51:47.054496"
+  "updateDt" : "2024-02-05T15:53:38.341141"
 }
---++++ - - - + + + + @@ -1167,51 +1066,61 @@ Content-Length: 311 + + + + + + + + + +
PathTypeDescription파라미터타입설명필수

groupCd

String

그룹코드

true

cdId

String

코드 아이디

true

upperCd

String

상위 아이디

false

sortOrdr

Number

정렬순서

true

addInfoValue

String

추가사항

true

useYn

String

사용여부

true

createUserId

String

등록한 유저 아이디

true

createDt

String

등록일시

true

updateUserId

String

수정한 유저 아이디

true

updateDt

String

수정일시

true

@@ -1241,15 +1150,17 @@ Host: localhost:8080 ---++++ - - - + + + + @@ -1257,26 +1168,31 @@ Host: localhost:8080 + + + + +
PathTypeDescription파라미터타입설명필수

groupCd

String

그룹코드

true

cdId

String

코드 아이디

true

langDivCd

String

언어코드

true

cdNm

String

코드이름[언어별]

true

rm

String

비고

true

@@ -1296,23 +1212,25 @@ Content-Length: 294 "cdNm" : "신규코드001", "rm" : "비고....", "createUserId" : "CREATE_USER", - "createDt" : "2024-01-24T12:51:46.948454", + "createDt" : "2024-02-05T15:53:38.391687", "updateUserId" : "CREATE_USER", - "updateDt" : "2024-01-24T12:51:46.948463" + "updateDt" : "2024-02-05T15:53:38.391695" }
---++++ - - - + + + + @@ -1320,46 +1238,55 @@ Content-Length: 294 + + + + + + + + +
PathTypeDescription파라미터타입설명필수

groupCd

String

그룹코드

true

cdId

String

코드 아이디

true

langDivCd

String

언어코드

true

cdNm

String

코드이름[언어별]

true

rm

String

비고

true

createUserId

String

등록한 유저 아이디

true

createDt

String

등록일시

true

updateUserId

String

수정한 유저 아이디

true

updateDt

String

수정일시

true

@@ -1388,15 +1315,17 @@ Host: localhost:8080 ---++++ - - - + + + + @@ -1404,21 +1333,25 @@ Host: localhost:8080 + + + +
PathTypeDescription파라미터타입설명필수

groupCd

String

그룹코드

true

siteCd

String

사이트코드

true

groupCdNm

String

그룹이름

true

rm

String

비고

true

@@ -1429,7 +1362,7 @@ Host: localhost:8080
HTTP/1.1 200 OK
 Content-Type: application/json;charset=UTF-8
-Content-Length: 261
+Content-Length: 268
 
 {
   "groupCd" : "NEW_GROUP001",
@@ -1437,23 +1370,25 @@ Content-Length: 261
   "groupCdNm" : "신규그룹001",
   "rm" : "비고....",
   "createUserId" : "CREATE_USER",
-  "createDt" : "2024-01-23T14:14:10",
+  "createDt" : "2024-02-05T15:53:38.434127",
   "updateUserId" : "UPDATE_USER",
-  "updateDt" : "2024-01-24T12:51:46.997949"
+  "updateDt" : "2024-02-05T15:53:38.438009"
 }
---++++ - - - + + + + @@ -1461,41 +1396,49 @@ Content-Length: 261 + + + + + + + +
PathTypeDescription파라미터타입설명필수

groupCd

String

그룹코드

true

siteCd

String

사이트코드

true

groupCdNm

String

그룹이름

true

rm

String

비고

true

createUserId

String

등록한 유저 아이디

true

createDt

String

등록일시

true

updateUserId

String

수정한 유저 아이디

true

updateDt

String

수정일시

true

@@ -1518,22 +1461,24 @@ Host: localhost:8080 "groupCd" : "NEW_GROUP001", "cdId" : "NEW_CODE001", "sortOrdr" : 0, - "addInfoValue" : "추가!!", + "addInfoValue" : "수정!!", "useYn" : "Y" }
---++++ - - - + + + + @@ -1541,26 +1486,31 @@ Host: localhost:8080 + + + + +
PathTypeDescription파라미터타입설명필수

groupCd

String

그룹코드

true

cdId

String

코드 아이디

true

sortOrdr

Number

정렬순서

true

addInfoValue

String

추가사항

true

useYn

String

사용여부

true

@@ -1571,33 +1521,35 @@ Host: localhost:8080
HTTP/1.1 200 OK
 Content-Type: application/json;charset=UTF-8
-Content-Length: 295
+Content-Length: 302
 
 {
   "groupCd" : "NEW_GROUP001",
   "cdId" : "NEW_CODE001",
   "upperCd" : null,
   "sortOrdr" : 0,
-  "addInfoValue" : "추가!!",
+  "addInfoValue" : "수정!!",
   "useYn" : "Y",
   "createUserId" : "CREATE_USER",
-  "createDt" : "2024-01-23T14:14:25",
+  "createDt" : "2024-02-05T15:53:38.481948",
   "updateUserId" : "UPDATE_USER",
-  "updateDt" : "2024-01-24T12:51:46.801854"
+  "updateDt" : "2024-02-05T15:53:38.491689"
 }
---++++ - - - + + + + @@ -1605,51 +1557,61 @@ Content-Length: 295 + + + + + + + + + +
PathTypeDescription파라미터타입설명필수

groupCd

String

그룹코드

true

cdId

String

코드 아이디

true

upperCd

String

상위 아이디

false

sortOrdr

Number

정렬순서

true

addInfoValue

String

추가사항

true

useYn

String

사용여부

true

createUserId

String

등록한 유저 아이디

true

createDt

String

등록일시

true

updateUserId

String

수정한 유저 아이디

true

updateDt

String

수정일시

true

@@ -1665,29 +1627,31 @@ Content-Length: 295
PUT /v1/com/code/lang HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Accept: application/json
-Content-Length: 136
+Content-Length: 135
 Host: localhost:8080
 
 {
   "groupCd" : "NEW_GROUP001",
   "cdId" : "NEW_CODE001",
-  "langDivCd" : "en_CA",
+  "langDivCd" : "ko_KR",
   "cdNm" : "신규코드001",
-  "rm" : "비고...."
+  "rm" : "수정..."
 }
---++++ - - - + + + + @@ -1695,26 +1659,31 @@ Host: localhost:8080 + + + + +
PathTypeDescription파라미터타입설명필수

groupCd

String

그룹코드

true

cdId

String

코드 아이디

true

langDivCd

String

언어코드

true

cdNm

String

코드이름[언어별]

true

rm

String

비고

true

@@ -1725,32 +1694,34 @@ Host: localhost:8080
HTTP/1.1 200 OK
 Content-Type: application/json;charset=UTF-8
-Content-Length: 286
+Content-Length: 291
 
 {
   "groupCd" : "NEW_GROUP001",
   "cdId" : "NEW_CODE001",
-  "langDivCd" : "en_CA",
+  "langDivCd" : "ko_KR",
   "cdNm" : "신규코드001",
-  "rm" : "비고....",
+  "rm" : "수정...",
   "createUserId" : "CREATE_USER",
-  "createDt" : "2024-01-24T10:55:17",
+  "createDt" : "2024-02-05T15:53:38.540614",
   "updateUserId" : "UPDATE_USER",
-  "updateDt" : "2024-01-24T12:51:46.91922"
+  "updateDt" : "2024-02-05T15:53:38.5467"
 }
---++++ - - - + + + + @@ -1758,46 +1729,55 @@ Content-Length: 286 + + + + + + + + +
PathTypeDescription파라미터타입설명필수

groupCd

String

그룹코드

true

cdId

String

코드 아이디

true

langDivCd

String

언어코드

true

cdNm

String

코드이름[언어별]

true

rm

String

비고

true

createUserId

String

등록한 유저 아이디

true

createDt

String

등록일시

true

updateUserId

String

수정한 유저 아이디

true

updateDt

String

수정일시

true

@@ -1810,7 +1790,7 @@ Content-Length: 286

[HTTP REQUEST INFO]

-
DELETE /v1/com/code/group?groupCd=NEW_Group_1706003812 HTTP/1.1
+
DELETE /v1/com/code/group?groupCd=NEW_GROUP001 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Accept: application/json
 Host: localhost:8080
@@ -1818,19 +1798,22 @@ Host: localhost:8080
--+++ - - + + + +
ParameterDescription파라미터설명필수

groupCd

그룹 아이디

true

@@ -1851,7 +1834,7 @@ Host: localhost:8080

[HTTP REQUEST INFO]

-
DELETE /v1/com/code/code?groupCd=NEW_GROUP001&cdId=NEW_CODE170605841699 HTTP/1.1
+
DELETE /v1/com/code/code?groupCd=NEW_GROUP001&cdId=NEW_CODE001 HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Accept: application/json
 Host: localhost:8080
@@ -1859,23 +1842,27 @@ Host: localhost:8080
--+++ - - + + + + +
ParameterDescription파라미터설명필수

groupCd

그룹 아이디

true

cdId

코드 아이디

true

@@ -1896,7 +1883,7 @@ Host: localhost:8080

[HTTP REQUEST INFO]

-
DELETE /v1/com/code/lang?groupCd=NEW_GROUP001&cdId=NEW_CODE170605841699&langDivCd=ko_KR HTTP/1.1
+
DELETE /v1/com/code/lang?groupCd=NEW_GROUP001&cdId=NEW_CODE001&langDivCd=ko_KR HTTP/1.1
 Content-Type: application/json;charset=UTF-8
 Accept: application/json
 Host: localhost:8080
@@ -1904,27 +1891,32 @@ Host: localhost:8080
--+++ - - + + + + + +
ParameterDescription파라미터설명필수

groupCd

그룹 아이디

true

cdId

코드 아이디

true

langDivCd

삭제할 언어코드

true

diff --git a/app/kac-app/src/test/java/kr/co/palnet/kac/com/code/ComnCodeControllerTest.java b/app/kac-app/src/test/java/kr/co/palnet/kac/com/code/ComnCodeControllerTest.java index 6fb138d..4098b32 100644 --- a/app/kac-app/src/test/java/kr/co/palnet/kac/com/code/ComnCodeControllerTest.java +++ b/app/kac-app/src/test/java/kr/co/palnet/kac/com/code/ComnCodeControllerTest.java @@ -10,34 +10,45 @@ import static org.springframework.test.web.servlet.result.MockMvcResultHandlers. import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import kr.co.palnet.kac.BaseTest; +import kr.co.palnet.kac.api.v1.com.code.model.FormCodeGroupRQ; +import kr.co.palnet.kac.api.v1.com.code.model.FormCodeLangRQ; +import kr.co.palnet.kac.api.v1.com.code.model.FormCodeRQ; +import kr.co.palnet.kac.api.v1.com.code.service.ComCodeService; import lombok.RequiredArgsConstructor; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.boot.test.autoconfigure.restdocs.AutoConfigureRestDocs; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.SpringBootTestContextBootstrapper; import org.springframework.http.MediaType; import org.springframework.restdocs.RestDocumentationExtension; import org.springframework.restdocs.payload.JsonFieldType; -import org.springframework.test.context.BootstrapWith; +import org.springframework.transaction.annotation.Transactional; -import kr.co.palnet.kac.api.v1.com.code.controller.ComCodeController; import kr.co.palnet.kac.app.KacAppApplication; @SpringBootTest(classes = KacAppApplication.class) @ExtendWith({RestDocumentationExtension.class}) +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) @RequiredArgsConstructor +@Transactional public class ComnCodeControllerTest extends BaseTest { - + @Autowired + private ComCodeService comCodeService; private final String BASE_URL = "/v1/com/code"; + @DisplayName("[10] 언어코드 삭제") + @Order(10) @Test public void deleteLang() throws Exception{ String groupCd = "NEW_GROUP001"; - String cdId = "NEW_CODE170605841699"; + String cdId = "NEW_CODE001"; String langDivCd = "ko_KR"; this.mockMvc.perform( @@ -60,11 +71,12 @@ public class ComnCodeControllerTest extends BaseTest { .andExpect(status().isOk()); } + @DisplayName("[11] 코드 삭제") + @Order(11) @Test public void deleteCode() throws Exception{ - String groupCd = "NEW_GROUP001"; - String cdId = "NEW_CODE170605841699"; + String cdId = "NEW_CODE001"; this.mockMvc.perform( delete(this.BASE_URL + "/code?groupCd=" + groupCd + "&cdId=" + cdId) @@ -85,9 +97,11 @@ public class ComnCodeControllerTest extends BaseTest { .andExpect(status().isOk()); } + @DisplayName("[12] 그룹 삭제") + @Order(12) @Test public void deleteCodeGroup() throws Exception { - String deleteGroupCd = "NEW_Group_1706003812"; + String deleteGroupCd = "NEW_GROUP001"; this.mockMvc.perform( delete(this.BASE_URL + "/group?groupCd=" + deleteGroupCd) @@ -107,15 +121,27 @@ public class ComnCodeControllerTest extends BaseTest { .andExpect(status().isOk()); } + @DisplayName("[6] 코드의 언어코드 수정") + @Order(6) @Test public void updateCodeLang() throws Exception{ + + FormCodeGroupRQ groupRq = FormCodeGroupRQ.builder().groupCd("NEW_GROUP001").siteCd("KAC").groupCdNm("신규그룹001").rm("비고....").build(); + comCodeService.createCodeGroup(groupRq); + + FormCodeRQ codeRq = FormCodeRQ.builder().groupCd("NEW_GROUP001").cdId("NEW_CODE001").upperCd(null).sortOrdr(0).addInfoValue("추가!!").useYn("Y").build(); + comCodeService.createCode(codeRq); + + FormCodeLangRQ langRq = FormCodeLangRQ.builder().groupCd("NEW_GROUP001").cdId("NEW_CODE001").langDivCd("ko_KR").cdNm("신규코드001").rm("비고....").build(); + comCodeService.createCodeLang(langRq); + String jsonRQ = """ { "groupCd": "NEW_GROUP001", "cdId": "NEW_CODE001", - "langDivCd": "en_CA", + "langDivCd": "ko_KR", "cdNm": "신규코드001", - "rm": "비고...." + "rm": "수정..." } """; @@ -153,14 +179,23 @@ public class ComnCodeControllerTest extends BaseTest { .andExpect(status().isOk()); } + @DisplayName("[5] 코드 수정") + @Order(5) @Test public void updateCode() throws Exception{ + + FormCodeGroupRQ groupRq = FormCodeGroupRQ.builder().groupCd("NEW_GROUP001").siteCd("KAC").groupCdNm("신규그룹001").rm("비고....").build(); + comCodeService.createCodeGroup(groupRq); + + FormCodeRQ codeRq = FormCodeRQ.builder().groupCd("NEW_GROUP001").cdId("NEW_CODE001").upperCd(null).sortOrdr(0).addInfoValue("추가!!").useYn("Y").build(); + comCodeService.createCode(codeRq); + String jsonRQ = """ { "groupCd": "NEW_GROUP001", "cdId": "NEW_CODE001", "sortOrdr": 0, - "addInfoValue": "추가!!", + "addInfoValue": "수정!!", "useYn": "Y" } """; @@ -200,8 +235,14 @@ public class ComnCodeControllerTest extends BaseTest { .andExpect(status().isOk()); } + @DisplayName("[4] 그룹 수정") + @Order(4) @Test public void updateCodeGroup() throws Exception{ + + FormCodeGroupRQ rq = FormCodeGroupRQ.builder().groupCd("NEW_GROUP001").siteCd("KAC").groupCdNm("신규그룹001").rm("비고....").build(); + comCodeService.createCodeGroup(rq); + String jsonRQ = """ { "groupCd": "NEW_GROUP001", @@ -243,6 +284,8 @@ public class ComnCodeControllerTest extends BaseTest { .andExpect(status().isOk()); } + @DisplayName("[3] 코드의 언어코드 추가") + @Order(3) @Test public void createCodeLang() throws Exception{ @@ -293,10 +336,11 @@ public class ComnCodeControllerTest extends BaseTest { } + @DisplayName("[2] 코드 추가") + @Order(2) @Test public void createCode() throws Exception{ - String codeNm = "NEW_CODE" + System.currentTimeMillis(); - codeNm = codeNm.substring(0, 20); + String codeNm = "NEW_CODE001"; String jsonRQ = """ { @@ -343,11 +387,14 @@ public class ComnCodeControllerTest extends BaseTest { .andExpect(status().isOk()); } + @DisplayName("[1] 코드그룹 추가") + @Order(1) @Test public void createCodeGroup() throws Exception{ - String randomNm = "NEW_GROUP_" + System.currentTimeMillis(); - randomNm = randomNm.substring(0, 20); + // String randomNm = "NEW_GROUP_" + System.currentTimeMillis(); + String randomNm = "NEW_GROUP001"; + // randomNm = randomNm.substring(0, 20); String jsonRQ = """ { @@ -390,8 +437,20 @@ public class ComnCodeControllerTest extends BaseTest { .andExpect(status().isOk()); } + @DisplayName("[7] 모든 코드 조회") + @Order(7) @Test public void getAllCodeByGroup() throws Exception{ + + FormCodeGroupRQ groupRq = FormCodeGroupRQ.builder().groupCd("NEW_GROUP001").siteCd("KAC").groupCdNm("신규그룹001").rm("비고....").build(); + comCodeService.createCodeGroup(groupRq); + + FormCodeRQ codeRq = FormCodeRQ.builder().groupCd("NEW_GROUP001").cdId("NEW_CODE001").upperCd(null).sortOrdr(0).addInfoValue("추가!!").useYn("Y").build(); + comCodeService.createCode(codeRq); + + FormCodeLangRQ langRq = FormCodeLangRQ.builder().groupCd("NEW_GROUP001").cdId("NEW_CODE001").langDivCd("ko_KR").cdNm("신규코드001").rm("비고....").build(); + comCodeService.createCodeLang(langRq); + String groupCd = "NEW_GROUP001"; String langDivCd = "ko_KR"; @@ -412,8 +471,8 @@ public class ComnCodeControllerTest extends BaseTest { parameterWithName("langDivCd").description("언어코드") ), responseFields( - fieldWithPath("[].groupCd").type(JsonFieldType.STRING).description("코드의 그룹"), - fieldWithPath("[].cdId").type(JsonFieldType.STRING).description("코드의 ID"), + fieldWithPath("[].groupCd").type(JsonFieldType.STRING).description("코드의 그룹").optional(), + fieldWithPath("[].cdId").type(JsonFieldType.STRING).description("코드의 ID").optional(), fieldWithPath("[].cdNm").type(JsonFieldType.STRING).description("코드의 이름").optional(), fieldWithPath("[].upperCd").type(JsonFieldType.STRING).description("상위 코드의 이름").optional(), fieldWithPath("[].sortOrdr").type(JsonFieldType.NUMBER).description("코드의 정렬순서").optional(), @@ -425,8 +484,20 @@ public class ComnCodeControllerTest extends BaseTest { .andExpect(status().isOk()); } + @DisplayName("[8] 모든 그룹과 코드 조회") + @Order(8) @Test public void getAllGroupCode() throws Exception{ + + FormCodeGroupRQ groupRq = FormCodeGroupRQ.builder().groupCd("NEW_GROUP001").siteCd("KAC").groupCdNm("신규그룹001").rm("비고....").build(); + comCodeService.createCodeGroup(groupRq); + + FormCodeRQ codeRq = FormCodeRQ.builder().groupCd("NEW_GROUP001").cdId("NEW_CODE001").upperCd(null).sortOrdr(0).addInfoValue("추가!!").useYn("Y").build(); + comCodeService.createCode(codeRq); + + FormCodeLangRQ langRq = FormCodeLangRQ.builder().groupCd("NEW_GROUP001").cdId("NEW_CODE001").langDivCd("ko_KR").cdNm("신규코드001").rm("비고....").build(); + comCodeService.createCodeLang(langRq); + this.mockMvc.perform( get(this.BASE_URL + "/group") .contentType(MediaType.APPLICATION_JSON_VALUE) @@ -438,10 +509,10 @@ public class ComnCodeControllerTest extends BaseTest { "com/code/group", // gradle build를 하게 되면 generated-snippets에 만들어질 폴더이름 preprocessResponse(prettyPrint()), responseFields( - fieldWithPath("[].groupCd").type(JsonFieldType.STRING).description("그룹 코드"), - fieldWithPath("[].siteCd").type(JsonFieldType.STRING).description("사이트 코드"), - fieldWithPath("[].groupCdNm").type(JsonFieldType.STRING).description("그룹 명"), - fieldWithPath("[].rm").type(JsonFieldType.STRING).description("비고"), + fieldWithPath("[].groupCd").type(JsonFieldType.STRING).description("그룹 코드").optional(), + fieldWithPath("[].siteCd").type(JsonFieldType.STRING).description("사이트 코드").optional(), + fieldWithPath("[].groupCdNm").type(JsonFieldType.STRING).description("그룹 명").optional(), + fieldWithPath("[].rm").type(JsonFieldType.STRING).description("비고").optional(), fieldWithPath("[].codeList").type(JsonFieldType.ARRAY).description("그룹에 포함된 코드 리스트").optional() ) ) @@ -449,9 +520,20 @@ public class ComnCodeControllerTest extends BaseTest { .andExpect(status().isOk()); } + @DisplayName("[9] 모든 그룹 조회") + @Order(9) @Test public void getAllGroup() throws Exception{ + FormCodeGroupRQ groupRq = FormCodeGroupRQ.builder().groupCd("NEW_GROUP001").siteCd("KAC").groupCdNm("신규그룹001").rm("비고....").build(); + comCodeService.createCodeGroup(groupRq); + + FormCodeRQ codeRq = FormCodeRQ.builder().groupCd("NEW_GROUP001").cdId("NEW_CODE001").upperCd(null).sortOrdr(0).addInfoValue("추가!!").useYn("Y").build(); + comCodeService.createCode(codeRq); + + FormCodeLangRQ langRq = FormCodeLangRQ.builder().groupCd("NEW_GROUP001").cdId("NEW_CODE001").langDivCd("ko_KR").cdNm("신규코드001").rm("비고....").build(); + comCodeService.createCodeLang(langRq); + String siteCd = "KAC"; String langDivCd = "ko_KR"; @@ -472,13 +554,13 @@ public class ComnCodeControllerTest extends BaseTest { parameterWithName("langDivCd").description("언어코드") ), responseFields( - fieldWithPath("[].groupCd").type(JsonFieldType.STRING).description("그룹 코드"), - fieldWithPath("[].siteCd").type(JsonFieldType.STRING).description("사이트 코드"), - fieldWithPath("[].groupCdNm").type(JsonFieldType.STRING).description("그룹 명"), - fieldWithPath("[].rm").type(JsonFieldType.STRING).description("비고"), + fieldWithPath("[].groupCd").type(JsonFieldType.STRING).description("그룹 코드").optional(), + fieldWithPath("[].siteCd").type(JsonFieldType.STRING).description("사이트 코드").optional(), + fieldWithPath("[].groupCdNm").type(JsonFieldType.STRING).description("그룹 명").optional(), + fieldWithPath("[].rm").type(JsonFieldType.STRING).description("비고").optional(), fieldWithPath("[].codeList").type(JsonFieldType.ARRAY).description("그룹에 포함된 코드 리스트").optional(), - fieldWithPath("[].codeList[].groupCd").type(JsonFieldType.STRING).description("코드의 그룹"), - fieldWithPath("[].codeList[].cdId").type(JsonFieldType.STRING).description("코드의 ID"), + fieldWithPath("[].codeList[].groupCd").type(JsonFieldType.STRING).description("코드의 그룹").optional(), + fieldWithPath("[].codeList[].cdId").type(JsonFieldType.STRING).description("코드의 ID").optional(), fieldWithPath("[].codeList[].cdNm").type(JsonFieldType.STRING).description("코드의 이름").optional(), fieldWithPath("[].codeList[].upperCd").type(JsonFieldType.STRING).description("상위 코드의 이름").optional(), fieldWithPath("[].codeList[].sortOrdr").type(JsonFieldType.NUMBER).description("코드의 정렬순서").optional(), diff --git a/app/kac-app/src/test/resources/org/springframework/restdocs/templates/path-parameters.snippet b/app/kac-app/src/test/resources/org/springframework/restdocs/templates/path-parameters.snippet new file mode 100644 index 0000000..44ebf19 --- /dev/null +++ b/app/kac-app/src/test/resources/org/springframework/restdocs/templates/path-parameters.snippet @@ -0,0 +1,11 @@ +.+{{path}}+ +|=== +|파라미터|설명|필수 + +{{#parameters}} +|{{#tableCellContent}}`+{{name}}+`{{/tableCellContent}} +|{{#tableCellContent}}{{description}}{{/tableCellContent}} +|{{#tableCellContent}}{{#optional}}false{{/optional}}{{^optional}}true{{/optional}}{{/tableCellContent}} + +{{/parameters}} +|=== \ No newline at end of file diff --git a/app/kac-app/src/test/resources/org/springframework/restdocs/templates/query-parameters.snippet b/app/kac-app/src/test/resources/org/springframework/restdocs/templates/query-parameters.snippet new file mode 100644 index 0000000..b2747d4 --- /dev/null +++ b/app/kac-app/src/test/resources/org/springframework/restdocs/templates/query-parameters.snippet @@ -0,0 +1,10 @@ +|=== +|파라미터|설명|필수 + +{{#parameters}} +|{{#tableCellContent}}`+{{name}}+`{{/tableCellContent}} +|{{#tableCellContent}}{{description}}{{/tableCellContent}} +|{{#tableCellContent}}{{#optional}}false{{/optional}}{{^optional}}true{{/optional}}{{/tableCellContent}} + +{{/parameters}} +|=== \ No newline at end of file diff --git a/app/kac-app/src/test/resources/org/springframework/restdocs/templates/request-fields.snippet b/app/kac-app/src/test/resources/org/springframework/restdocs/templates/request-fields.snippet new file mode 100644 index 0000000..66063e5 --- /dev/null +++ b/app/kac-app/src/test/resources/org/springframework/restdocs/templates/request-fields.snippet @@ -0,0 +1,12 @@ +|=== +|파라미터|타입|설명|필수 + +{{#fields}} + +|{{#tableCellContent}}`+{{path}}+`{{/tableCellContent}} +|{{#tableCellContent}}`+{{type}}+`{{/tableCellContent}} +|{{#tableCellContent}}{{description}}{{/tableCellContent}} +|{{#tableCellContent}}{{#optional}}false{{/optional}}{{^optional}}true{{/optional}}{{/tableCellContent}} + +{{/fields}} +|=== diff --git a/app/kac-app/src/test/resources/org/springframework/restdocs/templates/request-headers.snippet b/app/kac-app/src/test/resources/org/springframework/restdocs/templates/request-headers.snippet new file mode 100644 index 0000000..3f805fe --- /dev/null +++ b/app/kac-app/src/test/resources/org/springframework/restdocs/templates/request-headers.snippet @@ -0,0 +1,10 @@ +|=== +|파라미터|설명|필수 + +{{#headers}} +|{{#tableCellContent}}`+{{name}}+`{{/tableCellContent}} +|{{#tableCellContent}}{{description}}{{/tableCellContent}} +|{{#tableCellContent}}{{#optional}}false{{/optional}}{{^optional}}true{{/optional}}{{/tableCellContent}} + +{{/headers}} +|=== \ No newline at end of file diff --git a/app/kac-app/src/test/resources/org/springframework/restdocs/templates/response-fields.snippet b/app/kac-app/src/test/resources/org/springframework/restdocs/templates/response-fields.snippet new file mode 100644 index 0000000..66063e5 --- /dev/null +++ b/app/kac-app/src/test/resources/org/springframework/restdocs/templates/response-fields.snippet @@ -0,0 +1,12 @@ +|=== +|파라미터|타입|설명|필수 + +{{#fields}} + +|{{#tableCellContent}}`+{{path}}+`{{/tableCellContent}} +|{{#tableCellContent}}`+{{type}}+`{{/tableCellContent}} +|{{#tableCellContent}}{{description}}{{/tableCellContent}} +|{{#tableCellContent}}{{#optional}}false{{/optional}}{{^optional}}true{{/optional}}{{/tableCellContent}} + +{{/fields}} +|===