From 60f5da6a544ef90e2bc880b59ec39258131b06c2 Mon Sep 17 00:00:00 2001 From: dasomel Date: Thu, 28 May 2026 01:01:34 +0900 Subject: [PATCH] =?UTF-8?q?test:=20EgovPaginationDialect=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 Thymeleaf 페이지네이션 Dialect의 이름 등록, ExpressionObjectFactory 생성, 표현 객체 이름 포함 여부, 렌더러 인스턴스 반환, 캐시 가능 여부 등 5가지 케이스를 검증한다. --- .../pagination/EgovPaginationDialectTest.java | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/test/java/egovframework/example/pagination/EgovPaginationDialectTest.java diff --git a/src/test/java/egovframework/example/pagination/EgovPaginationDialectTest.java b/src/test/java/egovframework/example/pagination/EgovPaginationDialectTest.java new file mode 100644 index 0000000..6d39299 --- /dev/null +++ b/src/test/java/egovframework/example/pagination/EgovPaginationDialectTest.java @@ -0,0 +1,68 @@ +package egovframework.example.pagination; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.mock; + +import java.util.Set; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.thymeleaf.expression.IExpressionObjectFactory; + +/** + * EgovPaginationDialect 단위 테스트 + * + * @author 이백행 + * @since 2026-05-28 + */ +class EgovPaginationDialectTest { + + private EgovKrdsPaginationRenderer renderer; + private EgovPaginationDialect dialect; + + @BeforeEach + void setUp() { + renderer = mock(EgovKrdsPaginationRenderer.class); + dialect = new EgovPaginationDialect(renderer); + } + + @Test + @DisplayName("Dialect 이름이 EgovPaginationDialect로 등록된다") + void testDialectName() { + assertEquals("EgovPaginationDialect", dialect.getName()); + } + + @Test + @DisplayName("ExpressionObjectFactory가 null이 아니다") + void testGetExpressionObjectFactoryNotNull() { + IExpressionObjectFactory factory = dialect.getExpressionObjectFactory(); + assertNotNull(factory); + } + + @Test + @DisplayName("ExpressionObject 이름 목록에 egovKrdsPaginationRenderer가 포함된다") + void testExpressionObjectNames() { + IExpressionObjectFactory factory = dialect.getExpressionObjectFactory(); + Set names = factory.getAllExpressionObjectNames(); + assertTrue(names.contains("egovKrdsPaginationRenderer")); + } + + @Test + @DisplayName("buildObject는 주입된 renderer 인스턴스를 반환한다") + void testBuildObjectReturnsRenderer() { + IExpressionObjectFactory factory = dialect.getExpressionObjectFactory(); + Object result = factory.buildObject(null, "egovKrdsPaginationRenderer"); + assertEquals(renderer, result); + } + + @Test + @DisplayName("isCacheable은 egovKrdsPaginationRenderer에 대해 true를 반환한다") + void testIsCacheable() { + IExpressionObjectFactory factory = dialect.getExpressionObjectFactory(); + assertTrue(factory.isCacheable("egovKrdsPaginationRenderer")); + } + +}