Skip to content

Commit

Permalink
fix: 요구사항에 맞춰 메시지 전송 반환 변수명 변경
Browse files Browse the repository at this point in the history
  • Loading branch information
swonny committed May 1, 2024
1 parent 7e9c0f0 commit 4f7a9d9
Show file tree
Hide file tree
Showing 6 changed files with 96 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@
import com.ddang.ddang.review.application.exception.ReviewNotFoundException;
import com.ddang.ddang.user.application.exception.AlreadyExistsNameException;
import com.ddang.ddang.user.application.exception.UserNotFoundException;
import com.ddang.ddang.websocket.handler.exception.UnsupportedChattingTypeException;
import com.ddang.ddang.websocket.handler.exception.UnsupportedTextMessageTypeException;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.HttpStatusCode;
Expand Down Expand Up @@ -436,6 +438,26 @@ public ResponseEntity<ExceptionResponse> handleWithdrawalNotAllowedException(fin
.body(new ExceptionResponse(ex.getMessage()));
}

@ExceptionHandler(UnsupportedTextMessageTypeException.class)
public ResponseEntity<ExceptionResponse> handleUnsupportedTextMessageTypeException(
final UnsupportedTextMessageTypeException ex
) {
logger.warn(String.format(LOG_MESSAGE_FORMAT, ex.getClass().getSimpleName(), ex.getMessage()));

return ResponseEntity.status(HttpStatus.BAD_REQUEST)
.body(new ExceptionResponse(ex.getMessage()));
}

@ExceptionHandler(UnsupportedChattingTypeException.class)
public ResponseEntity<ExceptionResponse> handleUnsupportedChattingTypeException(
final UnsupportedChattingTypeException ex
) {
logger.warn(String.format(LOG_MESSAGE_FORMAT, ex.getClass().getSimpleName(), ex.getMessage()));

return ResponseEntity.status(HttpStatus.BAD_REQUEST)
.body(new ExceptionResponse(ex.getMessage()));
}

@Override
protected ResponseEntity<Object> handleMethodArgumentNotValid(
final MethodArgumentNotValidException ex,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,18 @@
package com.ddang.ddang.websocket.handler.dto;

import com.ddang.ddang.websocket.handler.exception.UnsupportedChattingTypeException;

import java.util.Arrays;

public enum ChattingType {

MESSAGE("message"),
PING("ping"),
;

private final String value;

ChattingType(final String value) {
this.value = value;
}
MESSAGE,
PING;

public static ChattingType findValue(final String value) {
return Arrays.stream(ChattingType.values())
.filter(chattingType -> chattingType.value.equals(value))
.findFirst()
.orElseThrow(() -> new IllegalArgumentException("잘못된 채팅 타입입니다."));
.filter(chattingType -> chattingType.name().equalsIgnoreCase(value))
.findFirst()
.orElseThrow(() -> new UnsupportedChattingTypeException("잘못된 채팅 타입입니다."));
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,20 @@
package com.ddang.ddang.websocket.handler.dto;

import com.ddang.ddang.websocket.handler.exception.UnsupportedTextMessageTypeException;
import com.fasterxml.jackson.annotation.JsonCreator;

import java.util.Arrays;

public enum TextMessageType {

CHATTINGS,
BIDS
BIDS;

@JsonCreator
public static TextMessageType fromString(final String value) {
return Arrays.stream(TextMessageType.values())
.filter(messageType -> messageType.name().equalsIgnoreCase(value))
.findFirst()
.orElseThrow(() -> new UnsupportedTextMessageTypeException("잘못된 메시지 타입입니다."));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.ddang.ddang.websocket.handler.exception;

public class UnsupportedChattingTypeException extends IllegalStateException {
public UnsupportedChattingTypeException(final String message) {
super(message);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.ddang.ddang.websocket.handler.dto;

import com.ddang.ddang.websocket.handler.exception.UnsupportedChattingTypeException;
import org.junit.jupiter.api.Test;

import java.util.Map;
Expand Down Expand Up @@ -29,6 +30,6 @@ class ChattingTypeTest {
final Map<String, String> data = Map.of("type", "wrong type");

// when & then
assertThatThrownBy(() -> ChattingType.findValue(data.get("type"))).isInstanceOf(IllegalArgumentException.class);
assertThatThrownBy(() -> ChattingType.findValue(data.get("type"))).isInstanceOf(UnsupportedChattingTypeException.class);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.ddang.ddang.websocket.handler.dto;

import com.ddang.ddang.websocket.handler.exception.UnsupportedTextMessageTypeException;
import org.junit.jupiter.api.Test;

import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;

class TextMessageTypeTest {

@Test
void 메시지_타입에_해당하는_문자열을_enum으로_반환한다() {
// given
final String type = "chattings";

// when
final TextMessageType actual = TextMessageType.fromString(type);

// then
assertThat(actual).isEqualTo(TextMessageType.CHATTINGS);
}

@Test
void 메시지_타입_입력값은_대소문자를_구분하지_않는다() {
// given
final String type = "CHATTINGS";

// when
final TextMessageType actual = TextMessageType.fromString(type);

// then
assertThat(actual).isEqualTo(TextMessageType.CHATTINGS);
}

@Test
void 잘못된_타입이_전송되면_예외를_반환한다() {
// given
final String wrongType = "wrong type";

// when & then
assertThatThrownBy(() -> TextMessageType.fromString(wrongType))
.isInstanceOf(UnsupportedTextMessageTypeException.class);
}
}

0 comments on commit 4f7a9d9

Please sign in to comment.