diff --git a/src/main/java/com/nooblol/global/config/LetterTypeCheckAspect.java b/src/main/java/com/nooblol/global/config/LetterTypeCheckAspect.java
index 594c76ac..a288fa2e 100644
--- a/src/main/java/com/nooblol/global/config/LetterTypeCheckAspect.java
+++ b/src/main/java/com/nooblol/global/config/LetterTypeCheckAspect.java
@@ -2,8 +2,7 @@
import com.nooblol.global.exception.ExceptionMessage;
import com.nooblol.global.utils.SessionUtils;
-import com.nooblol.user.utils.LetterConstants;
-import java.util.Arrays;
+import com.nooblol.user.utils.LetterType;
import javax.servlet.http.HttpSession;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
@@ -36,8 +35,7 @@ public void letterTypeValidation(JoinPoint jp, String type) throws Throwable {
}
private boolean typeValid(String type) {
- return Arrays.stream(LetterConstants.LETTER_DELETE_TYPE_ARR)
- .anyMatch(constantType -> constantType.equals(type));
+ return LetterType.isExistsType(type);
}
private String getSessionInUserId(JoinPoint jp) {
diff --git a/src/main/java/com/nooblol/global/config/WebConfig.java b/src/main/java/com/nooblol/global/config/WebConfig.java
new file mode 100644
index 00000000..d053a737
--- /dev/null
+++ b/src/main/java/com/nooblol/global/config/WebConfig.java
@@ -0,0 +1,15 @@
+package com.nooblol.global.config;
+
+import com.nooblol.global.utils.enumhandle.EnumConvertFactoryUtils;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.format.FormatterRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
+
+@Configuration
+public class WebConfig extends WebMvcConfigurationSupport {
+
+ @Override
+ protected void addFormatters(FormatterRegistry registry) {
+ registry.addConverterFactory(new EnumConvertFactoryUtils());
+ }
+}
diff --git a/src/main/java/com/nooblol/global/utils/enumhandle/EnumConvertFactoryUtils.java b/src/main/java/com/nooblol/global/utils/enumhandle/EnumConvertFactoryUtils.java
new file mode 100644
index 00000000..524ad0bf
--- /dev/null
+++ b/src/main/java/com/nooblol/global/utils/enumhandle/EnumConvertFactoryUtils.java
@@ -0,0 +1,51 @@
+package com.nooblol.global.utils.enumhandle;
+
+
+import java.util.Arrays;
+import org.springframework.core.convert.converter.Converter;
+import org.springframework.core.convert.converter.ConverterFactory;
+
+/**
+ * 소문자로 EnumType이 들어오는 경우 대문자로 치환해서 타입을 전달해 주기 위한 셋팅
+ *
+ * Reference : https://kapentaz.github.io/java/spring/Enum-and-@RequestParam-in-Spring/#
+ */
+public class EnumConvertFactoryUtils implements
+ ConverterFactory> {
+
+ @Override
+ public > Converter getConverter(
+ Class targetType) {
+ return new StringToEnumConvertUtils<>(targetType);
+ }
+
+ private static final class StringToEnumConvertUtils> implements
+ Converter {
+
+ private final Class enumType;
+ private final boolean constantEnum;
+
+ public StringToEnumConvertUtils(Class enumType) {
+ this.enumType = enumType;
+ this.constantEnum = Arrays.stream(enumType.getInterfaces())
+ .anyMatch(i -> i == EnumConvertUtils.class);
+ }
+
+ @Override
+ public T convert(String source) {
+ if (source.isEmpty()) {
+ return null;
+ }
+
+ source = source.toUpperCase();
+
+ T[] constants = enumType.getEnumConstants();
+ for (T c : constants) {
+ if (constantEnum && c.name().equals(source.trim())) {
+ return c;
+ }
+ }
+ return null;
+ }
+ }
+}
diff --git a/src/main/java/com/nooblol/global/utils/enumhandle/EnumConvertUtils.java b/src/main/java/com/nooblol/global/utils/enumhandle/EnumConvertUtils.java
new file mode 100644
index 00000000..198c7df9
--- /dev/null
+++ b/src/main/java/com/nooblol/global/utils/enumhandle/EnumConvertUtils.java
@@ -0,0 +1,5 @@
+package com.nooblol.global.utils.enumhandle;
+
+public interface EnumConvertUtils {
+
+}
diff --git a/src/main/java/com/nooblol/user/controller/LetterController.java b/src/main/java/com/nooblol/user/controller/LetterController.java
index 76eb34b1..852bf3d8 100644
--- a/src/main/java/com/nooblol/user/controller/LetterController.java
+++ b/src/main/java/com/nooblol/user/controller/LetterController.java
@@ -11,6 +11,8 @@
import com.nooblol.user.dto.LetterSearchDto;
import com.nooblol.user.service.LetterService;
import com.nooblol.user.utils.LetterConstants;
+import com.nooblol.user.utils.LetterStatus;
+import com.nooblol.user.utils.LetterType;
import javax.servlet.http.HttpSession;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
@@ -73,13 +75,13 @@ public ResponseDto getLetter(
@LetterTypeValidation
@GetMapping("/list/{type}")
public ResponseDto getLetterToList(
- @PathVariable String type,
+ @PathVariable LetterType type,
@RequestParam(value = "page", required = false, defaultValue = "0") int pageNum,
@RequestParam(value = "limit", required = false, defaultValue = "30") int limitNum,
HttpSession session
) {
LetterSearchDto searchParameterDto = makeLetterListSearchDto(
- SessionUtils.getSessionUserId(session), pageNum, limitNum, type.toUpperCase()
+ SessionUtils.getSessionUserId(session), pageNum, limitNum, type
);
//Data 가 Null인경우 CommonUtils에선 NotFound로 보내버려서 직접 설정함.
@@ -115,7 +117,7 @@ public ResponseDto insertLetter(
@LetterTypeValidation
@DeleteMapping("/{type}/{letterId}")
public ResponseDto deleteLetter(
- @PathVariable @NotBlank(message = LetterConstants.LETTER_TYPE_NULL) String type,
+ @PathVariable @NotBlank(message = LetterConstants.LETTER_TYPE_NULL) LetterType type,
@PathVariable @NotNull(message = LetterConstants.LETTER_ID_NULL) int letterId,
HttpSession session
) {
@@ -139,11 +141,19 @@ public ResponseDto deleteLetter(
* @return
*/
private LetterSearchDto makeLetterListSearchDto(
- String userId, int pageNum, int limitNum, String type
+ String userId, int pageNum, int limitNum, LetterType type
) {
+ String searchListStr = "";
+ for (int i = 0; i < LetterStatus.SEARCH_STATUS_ARR.length; i++) {
+ searchListStr += "\'" + LetterStatus.SEARCH_STATUS_ARR[i] + "\'";
+ if (i != LetterStatus.SEARCH_STATUS_ARR.length - 1) {
+ searchListStr += ",";
+ }
+ }
+
return LetterSearchDto.builder()
.userId(userId)
- .statusArr(LetterConstants.LETTER_LIST_SEARCH_STATUS_ARR)
+ .statusArr(searchListStr)
.pageNum(pageNum * limitNum)
.limitNum(limitNum)
.letterType(type)
diff --git a/src/main/java/com/nooblol/user/dto/LetterDto.java b/src/main/java/com/nooblol/user/dto/LetterDto.java
index 009475e6..5dfbe186 100644
--- a/src/main/java/com/nooblol/user/dto/LetterDto.java
+++ b/src/main/java/com/nooblol/user/dto/LetterDto.java
@@ -1,6 +1,8 @@
package com.nooblol.user.dto;
import com.fasterxml.jackson.annotation.JsonInclude;
+import com.nooblol.user.utils.LetterStatus;
+import com.nooblol.user.utils.LetterType;
import java.time.LocalDateTime;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -24,13 +26,13 @@ public class LetterDto {
private String toUserId;
- private int toStatus;
+ private LetterStatus toStatus;
private String fromUserId;
- private int fromStatus;
+ private LetterStatus fromStatus;
private LocalDateTime createdAt;
- private String type;
+ private LetterType type;
}
diff --git a/src/main/java/com/nooblol/user/dto/LetterSearchDto.java b/src/main/java/com/nooblol/user/dto/LetterSearchDto.java
index ae5d2f0d..7f3ed770 100644
--- a/src/main/java/com/nooblol/user/dto/LetterSearchDto.java
+++ b/src/main/java/com/nooblol/user/dto/LetterSearchDto.java
@@ -1,5 +1,6 @@
package com.nooblol.user.dto;
+import com.nooblol.user.utils.LetterType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
@@ -15,11 +16,11 @@ public class LetterSearchDto {
private String userId;
- private int[] statusArr;
+ private String statusArr;
private int pageNum;
private int limitNum;
- private String letterType;
+ private LetterType letterType;
}
diff --git a/src/main/java/com/nooblol/user/service/impl/LetterServiceImpl.java b/src/main/java/com/nooblol/user/service/impl/LetterServiceImpl.java
index 76d35a16..f42eb792 100644
--- a/src/main/java/com/nooblol/user/service/impl/LetterServiceImpl.java
+++ b/src/main/java/com/nooblol/user/service/impl/LetterServiceImpl.java
@@ -8,12 +8,10 @@
import com.nooblol.user.mapper.LetterMapper;
import com.nooblol.user.service.LetterService;
import com.nooblol.user.service.UserInfoService;
-import com.nooblol.user.utils.LetterConstants;
+import com.nooblol.user.utils.LetterStatus;
+import com.nooblol.user.utils.LetterType;
import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
-import java.util.Optional;
import javax.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -38,26 +36,18 @@ public LetterDto getLetter(int letterId, HttpSession session) {
throw new IllegalArgumentException(ExceptionMessage.NO_DATA);
}
- if (!ObjectUtils.isEmpty(letterDto) &&
- !(letterReqUserId.equals(letterDto.getToUserId()) ||
- letterReqUserId.equals(letterDto.getFromUserId()))
- ) {
+ if (!isHaveGetLetterAuth(letterDto, letterReqUserId)) {
throw new IllegalArgumentException(ExceptionMessage.FORBIDDEN);
}
//발송자인 경우에는 먼저 return
- if (letterReqUserId.equals(letterDto.getFromUserId())) {
+ if (isReqUserLetterTypeFrom(letterDto, letterReqUserId)) {
return letterDto;
}
//수신자의 경우 읽지 않았으면 Update
- if (letterDto.getToStatus() == LetterConstants.LETTER_STATUS_UNREAD) {
- letterDto.setToStatus(LetterConstants.LETTER_STATUS_READ);
- updateLetterStatus(
- letterDto.getLetterId(),
- LetterConstants.LETTER_STATUS_READ,
- LetterConstants.LETTER_TYPE_TO,
- session
- );
+ if (LetterStatus.UNREAD.equals(letterDto.getToStatus())) {
+ letterDto.setToStatus(LetterStatus.READ);
+ updateLetterStatus(letterDto.getLetterId(), LetterStatus.READ, LetterType.TO, session);
}
return letterDto;
@@ -65,16 +55,12 @@ public LetterDto getLetter(int letterId, HttpSession session) {
@Override
public List getLetterListByUserId(LetterSearchDto letterSearchDto) {
- if (LetterConstants.LETTER_TYPE_TO.equals(letterSearchDto.getLetterType())) {
- return Optional.ofNullable(
- letterMapper.selectLetterListByUserIdAndTypeTo(letterSearchDto)
- ).orElse(new ArrayList());
+ if (LetterType.TO.equals(letterSearchDto.getLetterType())) {
+ return letterMapper.selectLetterListByUserIdAndTypeTo(letterSearchDto);
}
- if (LetterConstants.LETTER_TYPE_FROM.equals(letterSearchDto.getLetterType())) {
- return Optional.ofNullable(
- letterMapper.selectLetterListByUserIdAndTypeFrom(letterSearchDto)
- ).orElse(new ArrayList());
+ if (LetterType.FROM.equals(letterSearchDto.getLetterType())) {
+ return letterMapper.selectLetterListByUserIdAndTypeFrom(letterSearchDto);
}
throw new IllegalArgumentException(ExceptionMessage.BAD_REQUEST);
@@ -88,9 +74,7 @@ public boolean insertLetter(LetterInsertRequestDto requestDto, HttpSession sessi
}
//실제 수신자가 존재하지 않는지 여부 확인
- if (Optional
- .ofNullable(userInfoService.selectUserInfoByUserId(requestDto.getToUserId()))
- .isEmpty()) {
+ if (ObjectUtils.isEmpty(userInfoService.selectUserInfoByUserId(requestDto.getToUserId()))) {
throw new IllegalArgumentException(ExceptionMessage.NOT_FOUND);
}
@@ -98,9 +82,9 @@ public boolean insertLetter(LetterInsertRequestDto requestDto, HttpSession sessi
.letterTitle(requestDto.getLetterTitle())
.letterContent(requestDto.getLetterContent())
.toUserId(requestDto.getToUserId())
- .toStatus(LetterConstants.LETTER_STATUS_UNREAD)
+ .toStatus(LetterStatus.UNREAD)
.fromUserId(fromUserId)
- .fromStatus(LetterConstants.LETTER_STATUS_READ)
+ .fromStatus(LetterStatus.READ)
.createdAt(LocalDateTime.now())
.build();
@@ -111,7 +95,7 @@ public boolean insertLetter(LetterInsertRequestDto requestDto, HttpSession sessi
public boolean deleteLetter(LetterDto letterDto, HttpSession session) {
return updateLetterStatus(
letterDto.getLetterId(),
- LetterConstants.LETTER_STATUS_DELETE,
+ LetterStatus.DELETE,
letterDto.getType(),
session
);
@@ -127,11 +111,9 @@ public boolean deleteLetter(LetterDto letterDto, HttpSession session) {
* @return
*/
private boolean updateLetterStatus(
- int letterId, int status, String letterType, HttpSession session
+ int letterId, LetterStatus status, LetterType letterType, HttpSession session
) {
- letterType = letterType.toUpperCase();
-
- if (LetterConstants.LETTER_TYPE_TO.equals(letterType)) {
+ if (LetterType.TO.equals(letterType)) {
return letterMapper.updateLetterToStatusByLetterIdAndToUserId(
LetterDto.builder()
.letterId(letterId)
@@ -141,7 +123,7 @@ private boolean updateLetterStatus(
) > 0;
}
- if (LetterConstants.LETTER_TYPE_FROM.equals(letterType)) {
+ if (LetterType.FROM.equals(letterType)) {
return letterMapper.updateLetterFromStatusByLetterIdAndFromUserId(
LetterDto.builder()
.letterId(letterId)
@@ -154,4 +136,39 @@ private boolean updateLetterStatus(
//LetterConstants에 없는 Type(수신 또는 발신이 아닌경우) Exception
throw new IllegalArgumentException(ExceptionMessage.BAD_REQUEST);
}
+
+
+ /**
+ * 해당 쪽지가 발송자 또는 수신자인지 여부 확인
+ *
+ * @param letterDto
+ * @param reqUserId
+ * @return
+ */
+ private boolean isHaveGetLetterAuth(LetterDto letterDto, String reqUserId) {
+ return isReqUserLetterTypeTo(letterDto, reqUserId) ||
+ isReqUserLetterTypeFrom(letterDto, reqUserId);
+ }
+
+ /**
+ * 요청자가 쪽지의 수신자가 맞는지 확인
+ *
+ * @param letterDto
+ * @param reqUserId
+ * @return
+ */
+ private boolean isReqUserLetterTypeTo(LetterDto letterDto, String reqUserId) {
+ return reqUserId.equals(letterDto.getToUserId());
+ }
+
+ /**
+ * 요청자가 쪽지의 발송자가 맞는지 확인
+ *
+ * @param letterDto
+ * @param reqUserId
+ * @return
+ */
+ private boolean isReqUserLetterTypeFrom(LetterDto letterDto, String reqUserId) {
+ return reqUserId.equals(letterDto.getFromUserId());
+ }
}
diff --git a/src/main/java/com/nooblol/user/utils/LetterConstants.java b/src/main/java/com/nooblol/user/utils/LetterConstants.java
index e9b8df15..9fcf4831 100644
--- a/src/main/java/com/nooblol/user/utils/LetterConstants.java
+++ b/src/main/java/com/nooblol/user/utils/LetterConstants.java
@@ -6,32 +6,14 @@ private LetterConstants() {
}
public static final String LETTER_ID_NULL = "쪽지의 ID값이 입력되지 않았습니다.";
+
public static final String LETTER_TITLE_NULL = "제목이 입력되지 않았습니다.";
+
public static final String LETTER_CONTENT_NULL = "내용이 입력되지 않았습니다.";
+
public static final String LETTER_TO_USER_ID_NULL = "받는 사용자의 ID가 입력되지 않았습니다.";
+
public static final String LETTER_TYPE_NULL = "쪽지의 타입이 발송자인지, 수신자인지가 입력되지 않았습니다.";
public static final String LETTER_USER_ID_NULL = "사용자 ID가 입력되지 않았습니다.";
-
- //Delete Type
- public static final String LETTER_TYPE_FROM = "FROM"; //발송자
- public static final String LETTER_TYPE_TO = "TO"; //수신자
- public static final String[] LETTER_DELETE_TYPE_ARR = {
- LETTER_TYPE_FROM, LETTER_TYPE_TO
- };
-
-
- //ToStatus, FromStatus Value
- public static final int LETTER_STATUS_READ = 1;
- public static final int LETTER_STATUS_UNREAD = 2;
- public static final int LETTER_STATUS_DELETE = 9;
-
- public static final int[] LETTER_LIST_SEARCH_STATUS_ARR = {
- LETTER_STATUS_READ, LETTER_STATUS_UNREAD
- };
-
- public static final int[] LETTER_LIST_STATUS_ALL_ARR = {
- LETTER_STATUS_READ, LETTER_STATUS_UNREAD, LETTER_STATUS_DELETE
- };
-
}
diff --git a/src/main/java/com/nooblol/user/utils/LetterStatus.java b/src/main/java/com/nooblol/user/utils/LetterStatus.java
new file mode 100644
index 00000000..b51d9ca3
--- /dev/null
+++ b/src/main/java/com/nooblol/user/utils/LetterStatus.java
@@ -0,0 +1,34 @@
+package com.nooblol.user.utils;
+
+import com.nooblol.global.utils.enumhandle.EnumConvertUtils;
+import lombok.Getter;
+import org.springframework.util.ObjectUtils;
+
+@Getter
+public enum LetterStatus implements EnumConvertUtils {
+ READ, UNREAD, DELETE;
+
+ public static final LetterStatus[] SEARCH_STATUS_ARR = {
+ READ, UNREAD
+ };
+
+ public static final LetterStatus[] STATUS_ALL_ARR = {
+ READ, UNREAD, DELETE
+ };
+
+
+ public static boolean isExistStatus(String statusType) {
+ try {
+ LetterStatus.valueOf(statusType.toUpperCase());
+ } catch (IllegalArgumentException e) {
+ return false;
+ }
+ return true;
+ }
+
+ public static LetterType getLetterStatusByString(String statusType) {
+ return LetterType.valueOf(statusType.toUpperCase());
+ }
+
+
+}
diff --git a/src/main/java/com/nooblol/user/utils/LetterType.java b/src/main/java/com/nooblol/user/utils/LetterType.java
new file mode 100644
index 00000000..73fa1f62
--- /dev/null
+++ b/src/main/java/com/nooblol/user/utils/LetterType.java
@@ -0,0 +1,23 @@
+package com.nooblol.user.utils;
+
+import com.nooblol.global.utils.enumhandle.EnumConvertUtils;
+import org.springframework.util.ObjectUtils;
+
+public enum LetterType implements EnumConvertUtils {
+ FROM, TO;
+
+ public static boolean isExistsType(String type) {
+ try {
+ LetterType.valueOf(type.toUpperCase());
+ } catch (IllegalArgumentException e) {
+ return false;
+ }
+ return true;
+ }
+
+ public static LetterType getLetterTypeByString(String type) {
+ return LetterType.valueOf(type.toUpperCase());
+ }
+
+
+}
diff --git a/src/main/resources/mybatis/mapper/board/ArticleReplyMapper.xml b/src/main/resources/mybatis/mapper/board/ArticleReplyMapper.xml
index 6730fe52..34d28667 100644
--- a/src/main/resources/mybatis/mapper/board/ArticleReplyMapper.xml
+++ b/src/main/resources/mybatis/mapper/board/ArticleReplyMapper.xml
@@ -5,11 +5,7 @@
INSERT INTO bbs_articles_reply(article_id, reply_content, status, created_user_id,
created_at, sort_no)
- VALUES (#{articleId}, #{replyContent}, #{status}, #{createdUserId}, #{createdAt},
- IFNULL((SELECT sort_no + 1
- FROM bbs_articles_reply
- WHERE article_id = #{articleId}
- ORDER BY sort_no DESC limit 1), 1))
+ VALUES (#{articleId}, #{replyContent}, #{status}, #{createdUserId}, #{createdAt}, 1)
@@ -55,12 +51,11 @@
article_id,
reply_content,
status,
- sort_no,
created_at,
created_user_id,
created_at
FROM bbs_articles_reply
WHERE article_id = #{articleId}
- ORDER BY sort_no ASC
+ ORDER BY created_at ASC
\ No newline at end of file
diff --git a/src/main/resources/mybatis/mapper/user/LetterMapper.xml b/src/main/resources/mybatis/mapper/user/LetterMapper.xml
index eef9d69c..e8f24d0d 100644
--- a/src/main/resources/mybatis/mapper/user/LetterMapper.xml
+++ b/src/main/resources/mybatis/mapper/user/LetterMapper.xml
@@ -13,41 +13,35 @@
+
+
\ No newline at end of file
diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql
index d2ab2d83..47975892 100644
--- a/src/main/resources/schema.sql
+++ b/src/main/resources/schema.sql
@@ -118,8 +118,8 @@ CREATE TABLE `users_letter`
`letter_content` text,
`to_user_id` varchar(255) NOT NULL,
`from_user_id` varchar(255) NOT NULL,
- `to_status` int NOT NULL,
- `from_status` int NOT NULL,
+ `to_status` varchar(255) NOT NULL,
+ `from_status` varchar(255) NOT NULL,
`created_at` datetime DEFAULT (now())
);
diff --git a/src/test/java/com/nooblol/user/service/impl/LetterServiceImplTest.java b/src/test/java/com/nooblol/user/service/impl/LetterServiceImplTest.java
index abc1ead8..c82cad12 100644
--- a/src/test/java/com/nooblol/user/service/impl/LetterServiceImplTest.java
+++ b/src/test/java/com/nooblol/user/service/impl/LetterServiceImplTest.java
@@ -12,7 +12,8 @@
import com.nooblol.user.dto.UserDto;
import com.nooblol.user.mapper.LetterMapper;
import com.nooblol.user.service.UserInfoService;
-import com.nooblol.user.utils.LetterConstants;
+import com.nooblol.user.utils.LetterStatus;
+import com.nooblol.user.utils.LetterType;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpSession;
@@ -189,7 +190,7 @@ class LetterListSelectTest {
void getLetterListByUserId_WhenIsNotExistsType_ThenBadRequestExcpeiton() {
//gvien
LetterSearchDto requestDto = new LetterSearchDto().builder()
- .letterType("없는 타입")
+ .letterType(null)
.build();
//when
@@ -206,11 +207,12 @@ void getLetterListByUserId_WhenIsNotExistsType_ThenBadRequestExcpeiton() {
void getLetterListByUserId_WhenIsNotExistsLetterByDbTypeTo_ThenReturnEmptyLetterList() {
//given
LetterSearchDto requestDto = new LetterSearchDto().builder()
- .letterType(LetterConstants.LETTER_TYPE_TO)
+ .letterType(LetterType.TO)
.build();
//mock
- when(letterMapper.selectLetterListByUserIdAndTypeTo(requestDto)).thenReturn(null);
+ when(letterMapper.selectLetterListByUserIdAndTypeTo(requestDto))
+ .thenReturn(new ArrayList());
//when
List result = letterService.getLetterListByUserId(requestDto);
@@ -225,26 +227,16 @@ void getLetterListByUserId_WhenIsExistsLetterAndTypeTo_ThenReturnLetterList() {
//given
LetterSearchDto requestDto = new LetterSearchDto().builder()
.userId(SessionUtils.getSessionUserId(authUserSession))
- .letterType(LetterConstants.LETTER_TYPE_TO)
- .statusArr(LetterConstants.LETTER_LIST_SEARCH_STATUS_ARR)
+ .letterType(LetterType.TO)
+ .statusArr(getLetterSearchTypeStr())
.limitNum(30)
.pageNum(0)
.build();
- LetterDto letterListObj1 = new LetterDto().builder()
- .letterId(1)
- .build();
- LetterDto letterListObj2 = new LetterDto().builder()
- .letterId(2)
- .build();
- LetterDto letterListObj3 = new LetterDto().builder()
- .letterId(3)
- .build();
-
List mockReturnLetterList = new ArrayList<>();
- mockReturnLetterList.add(letterListObj1);
- mockReturnLetterList.add(letterListObj2);
- mockReturnLetterList.add(letterListObj3);
+ mockReturnLetterList.add(LetterDto.builder().letterId(1).build());
+ mockReturnLetterList.add(LetterDto.builder().letterId(2).build());
+ mockReturnLetterList.add(LetterDto.builder().letterId(3).build());
//mock
when(letterMapper.selectLetterListByUserIdAndTypeTo(requestDto)).thenReturn(
@@ -262,11 +254,12 @@ void getLetterListByUserId_WhenIsExistsLetterAndTypeTo_ThenReturnLetterList() {
void getLetterListByUserId_WhenIsNotExistsLetterByDbTypeFrom_ThenReturnEmptyLetterList() {
//given
LetterSearchDto requestDto = new LetterSearchDto().builder()
- .letterType(LetterConstants.LETTER_TYPE_FROM)
+ .letterType(LetterType.FROM)
.build();
//mock
- when(letterMapper.selectLetterListByUserIdAndTypeFrom(requestDto)).thenReturn(null);
+ when(letterMapper.selectLetterListByUserIdAndTypeFrom(requestDto))
+ .thenReturn(new ArrayList());
//when
List result = letterService.getLetterListByUserId(requestDto);
@@ -279,28 +272,18 @@ void getLetterListByUserId_WhenIsNotExistsLetterByDbTypeFrom_ThenReturnEmptyLett
@DisplayName("발송 리스트 조회시 데이터가 있는 경우, 발송한 쪽지 리스트를 획득한다.")
void getLetterListByUserId_WhenIsExistsLetterAndTypeFrom_ThenReturnLetterList() {
//given
- LetterSearchDto requestDto = new LetterSearchDto().builder()
+ LetterSearchDto requestDto = LetterSearchDto.builder()
.userId(SessionUtils.getSessionUserId(authUserSession))
- .letterType(LetterConstants.LETTER_TYPE_FROM)
- .statusArr(LetterConstants.LETTER_LIST_SEARCH_STATUS_ARR)
+ .letterType(LetterType.FROM)
+ .statusArr(getLetterSearchTypeStr())
.limitNum(30)
.pageNum(0)
.build();
- LetterDto letterListObj1 = new LetterDto().builder()
- .letterId(1)
- .build();
- LetterDto letterListObj2 = new LetterDto().builder()
- .letterId(2)
- .build();
- LetterDto letterListObj3 = new LetterDto().builder()
- .letterId(3)
- .build();
-
List mockReturnLetterList = new ArrayList<>();
- mockReturnLetterList.add(letterListObj1);
- mockReturnLetterList.add(letterListObj2);
- mockReturnLetterList.add(letterListObj3);
+ mockReturnLetterList.add(LetterDto.builder().letterId(1).build());
+ mockReturnLetterList.add(LetterDto.builder().letterId(2).build());
+ mockReturnLetterList.add(LetterDto.builder().letterId(3).build());
//mock
when(letterMapper.selectLetterListByUserIdAndTypeFrom(requestDto)).thenReturn(
@@ -312,6 +295,20 @@ void getLetterListByUserId_WhenIsExistsLetterAndTypeFrom_ThenReturnLetterList()
//then
assertEquals(result, mockReturnLetterList);
}
+
+ String getLetterSearchTypeStr() {
+
+ String searchListStr = "(";
+
+ for (int i = 0; i < LetterStatus.SEARCH_STATUS_ARR.length; i++) {
+ searchListStr += "\'" + LetterStatus.SEARCH_STATUS_ARR[i] + "\',";
+ if (i != LetterStatus.SEARCH_STATUS_ARR.length - 1) {
+ searchListStr += ",";
+ }
+ }
+ searchListStr += ")";
+ return searchListStr;
+ }
}
@@ -325,7 +322,7 @@ class LetterDeleteTest {
void deleteLetter_WhenLetterTypeNotExistsConstants_ThenBadRequestException() {
//given
LetterDto requestDto = new LetterDto();
- requestDto.setType("Not Exists Constants Type");
+ requestDto.setType(null);
//when
Exception e = assertThrows(IllegalArgumentException.class, () -> {
@@ -343,7 +340,7 @@ void deleteLetter_WhenIsNotExistsLetter_ThenReturnFalse() {
int nullLetterId = 99999;
LetterDto requestDto = new LetterDto();
requestDto.setLetterId(nullLetterId);
- requestDto.setType(LetterConstants.LETTER_TYPE_TO);
+ requestDto.setType(LetterType.TO);
//mock
when(letterMapper.updateLetterToStatusByLetterIdAndToUserId(any())).thenReturn(0);
@@ -362,7 +359,7 @@ void deleteLetter_WhenIsExistsLetter_ThenReturnTrue() {
int nullLetterId = 99999;
LetterDto requestDto = new LetterDto();
requestDto.setLetterId(nullLetterId);
- requestDto.setType(LetterConstants.LETTER_TYPE_TO);
+ requestDto.setType(LetterType.TO);
//mock
when(letterMapper.updateLetterToStatusByLetterIdAndToUserId(any())).thenReturn(1);
@@ -373,6 +370,6 @@ void deleteLetter_WhenIsExistsLetter_ThenReturnTrue() {
//then
assertTrue(result);
}
-
}
+
}
\ No newline at end of file