From 2f39788af95267e5eac9eb7f1e88a21ae5530ac8 Mon Sep 17 00:00:00 2001 From: suheon Date: Sat, 25 Apr 2026 14:58:03 +0900 Subject: [PATCH] =?UTF-8?q?DP-233:=20StringListConverter=20=EB=8B=A8?= =?UTF-8?q?=EC=9C=84=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/StringListConverterTest.java | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 src/test/java/com/devpick/global/config/StringListConverterTest.java diff --git a/src/test/java/com/devpick/global/config/StringListConverterTest.java b/src/test/java/com/devpick/global/config/StringListConverterTest.java new file mode 100644 index 0000000..a17152c --- /dev/null +++ b/src/test/java/com/devpick/global/config/StringListConverterTest.java @@ -0,0 +1,76 @@ +package com.devpick.global.config; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +class StringListConverterTest { + + private StringListConverter converter; + + @BeforeEach + void setUp() { + converter = new StringListConverter(); + } + + @Test + @DisplayName("리스트를 JSON 문자열로 직렬화한다") + void convertToDatabaseColumn_validList_returnsJson() { + String result = converter.convertToDatabaseColumn(List.of("Spring", "Java")); + + assertThat(result).isEqualTo("[\"Spring\",\"Java\"]"); + } + + @Test + @DisplayName("null 입력 시 null을 반환한다") + void convertToDatabaseColumn_null_returnsNull() { + assertThat(converter.convertToDatabaseColumn(null)).isNull(); + } + + @Test + @DisplayName("빈 리스트 입력 시 null을 반환한다") + void convertToDatabaseColumn_emptyList_returnsNull() { + assertThat(converter.convertToDatabaseColumn(List.of())).isNull(); + } + + @Test + @DisplayName("JSON 문자열을 리스트로 역직렬화한다") + void convertToEntityAttribute_validJson_returnsList() { + List result = converter.convertToEntityAttribute("[\"Spring\",\"Java\"]"); + + assertThat(result).containsExactly("Spring", "Java"); + } + + @Test + @DisplayName("null DB 값은 빈 리스트를 반환한다") + void convertToEntityAttribute_null_returnsEmptyList() { + assertThat(converter.convertToEntityAttribute(null)).isEmpty(); + } + + @Test + @DisplayName("빈 문자열 DB 값은 빈 리스트를 반환한다") + void convertToEntityAttribute_blankString_returnsEmptyList() { + assertThat(converter.convertToEntityAttribute(" ")).isEmpty(); + } + + @Test + @DisplayName("잘못된 JSON은 빈 리스트를 반환한다") + void convertToEntityAttribute_invalidJson_returnsEmptyList() { + assertThat(converter.convertToEntityAttribute("not-json")).isEmpty(); + } + + @Test + @DisplayName("직렬화 후 역직렬화하면 원본과 동일하다") + void roundTrip_preservesData() { + List original = List.of("IoC", "DI", "Spring Boot"); + + String json = converter.convertToDatabaseColumn(original); + List result = converter.convertToEntityAttribute(json); + + assertThat(result).isEqualTo(original); + } +}