From b07874687744f9bfcb8b7a4dbf9f436f0379998d Mon Sep 17 00:00:00 2001 From: sese2204 Date: Wed, 19 Feb 2025 14:40:02 +0900 Subject: [PATCH] =?UTF-8?q?refactor(test):=20CategoryServiceImplTest=20?= =?UTF-8?q?=EB=8B=A8=EC=9C=84=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20->=20?= =?UTF-8?q?=ED=86=B5=ED=95=A9=20=ED=85=8C=EC=8A=A4=ED=8A=B8=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/CategoryServiceImplTest.java | 107 +++++------------- 1 file changed, 28 insertions(+), 79 deletions(-) diff --git a/src/test/java/com/pickyfy/pickyfy/service/CategoryServiceImplTest.java b/src/test/java/com/pickyfy/pickyfy/service/CategoryServiceImplTest.java index ec46d12..884cbbf 100644 --- a/src/test/java/com/pickyfy/pickyfy/service/CategoryServiceImplTest.java +++ b/src/test/java/com/pickyfy/pickyfy/service/CategoryServiceImplTest.java @@ -2,9 +2,6 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.verify; import com.pickyfy.pickyfy.domain.Category; import com.pickyfy.pickyfy.domain.CategoryType; @@ -13,59 +10,27 @@ import com.pickyfy.pickyfy.web.dto.request.CategoryTypeRequest; import com.pickyfy.pickyfy.web.dto.response.CategoryResponse; import jakarta.persistence.EntityNotFoundException; -import java.lang.reflect.Field; -import java.util.List; -import java.util.Optional; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; -@ExtendWith(MockitoExtension.class) +@SpringBootTest +@Transactional class CategoryServiceImplTest { - @Mock + @Autowired private CategoryRepository categoryRepository; - @InjectMocks - private CategoryServiceImpl categoryService; - - private Category category; - - @BeforeEach - void setUp() throws NoSuchFieldException, IllegalAccessException { - category = Category.builder() - .type(CategoryType.CAFE_BAKERY) - .build(); - - // Reflection으로 id 설정 - Field idField = Category.class.getDeclaredField("id"); - idField.setAccessible(true); - idField.set(category, 1L); - } - - @Test - void createCategory_Success() { - // Given - CategoryTypeRequest request = new CategoryTypeRequest(CategoryType.CAFE_BAKERY); - given(categoryRepository.existsByType(request.categoryType())).willReturn(false); - given(categoryRepository.save(any(Category.class))).willReturn(category); - - // When - Long categoryId = categoryService.createCategory(request); - - // Then - assertThat(categoryId).isEqualTo(1L); - verify(categoryRepository).save(any(Category.class)); - } + @Autowired + private CategoryService categoryService; @Test void createCategory_DuplicateType_ThrowsException() { // Given CategoryTypeRequest request = new CategoryTypeRequest(CategoryType.CAFE_BAKERY); - given(categoryRepository.existsByType(request.categoryType())).willReturn(true); // When/Then assertThatThrownBy(() -> categoryService.createCategory(request)) @@ -74,60 +39,42 @@ void createCategory_DuplicateType_ThrowsException() { @Test void getCategory_Success() { - // Given - given(categoryRepository.findById(1L)).willReturn(Optional.of(category)); - // When CategoryResponse response = categoryService.getCategory(1L); // Then - assertThat(response.id()).isEqualTo(1L); - assertThat(response.name()).isEqualTo(CategoryType.CAFE_BAKERY.getDisplayName()); + assertThat(response.name()).isEqualTo(CategoryType.ALL.getDisplayName()); } @Test void getCategory_NotFound_ThrowsException() { - given(categoryRepository.findById(1L)).willReturn(Optional.empty()); + // Given + Long nonExistentId = 999L; - assertThatThrownBy(() -> categoryService.getCategory(1L)) + // When/Then + assertThatThrownBy(() -> categoryService.getCategory(nonExistentId)) .isInstanceOf(EntityNotFoundException.class); } @Test void getAllCategories_Success() { - // Given - List categories = List.of(category); - given(categoryRepository.findAll()).willReturn(categories); - // When List responses = categoryService.getAllCategories(); // Then - assertThat(responses).hasSize(1); + assertThat(responses).hasSize(7); assertThat(responses.getFirst().id()).isEqualTo(1L); - assertThat(responses.getFirst().name()).isEqualTo(CategoryType.CAFE_BAKERY.getDisplayName()); - } - - @Test - void updateCategory_Success() { - // Given - CategoryTypeRequest request = new CategoryTypeRequest(CategoryType.RESTAURANT); - given(categoryRepository.findById(1L)).willReturn(Optional.of(category)); - given(categoryRepository.existsByType(request.categoryType())).willReturn(false); - - // When - categoryService.updateCategory(1L, request); - - // Then - assertThat(category.getType()).isEqualTo(CategoryType.RESTAURANT); } @Test void updateCategory_DuplicateType_ThrowsException() { // Given + Category anotherCategory = Category.builder() + .type(CategoryType.RESTAURANT) + .build(); + categoryRepository.save(anotherCategory); + CategoryTypeRequest request = new CategoryTypeRequest(CategoryType.RESTAURANT); - given(categoryRepository.findById(1L)).willReturn(Optional.of(category)); - given(categoryRepository.existsByType(request.categoryType())).willReturn(true); // When/Then assertThatThrownBy(() -> categoryService.updateCategory(1L, request)) @@ -136,18 +83,20 @@ void updateCategory_DuplicateType_ThrowsException() { @Test void deleteCategory_Success() { - given(categoryRepository.findById(1L)).willReturn(Optional.of(category)); - + // When categoryService.deleteCategory(1L); - verify(categoryRepository).delete(category); + // Then + assertThat(categoryRepository.findById(1L)).isEmpty(); } @Test void deleteCategory_NotFound_ThrowsException() { - given(categoryRepository.findById(1L)).willReturn(Optional.empty()); + // Given + Long nonExistentId = 999L; - assertThatThrownBy(() -> categoryService.deleteCategory(1L)) + // When/Then + assertThatThrownBy(() -> categoryService.deleteCategory(nonExistentId)) .isInstanceOf(EntityNotFoundException.class); } } \ No newline at end of file