1. 获取所有分区 2. 根据分区获得作品列表
增加了分区以及作品的swagger接口描述,并调整到正确的项目结构中
Change-Id: I36850cd93eeb93992cad7d342f2688dd8e50e6bc
diff --git a/src/test/java/edu/bjtu/groupone/backend/CategoryServiceTest.java b/src/test/java/edu/bjtu/groupone/backend/CategoryServiceTest.java
new file mode 100644
index 0000000..b09ffb2
--- /dev/null
+++ b/src/test/java/edu/bjtu/groupone/backend/CategoryServiceTest.java
@@ -0,0 +1,41 @@
+package edu.bjtu.groupone.backend;
+
+import edu.bjtu.groupone.backend.domain.entity.Category;
+import edu.bjtu.groupone.backend.mapper.CategoryMybatisMapper;
+//import edu.bjtu.groupone.backend.model.Category;
+import edu.bjtu.groupone.backend.service.CategoryService;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.*;
+
+class CategoryServiceTest {
+
+ @Mock
+ private CategoryMybatisMapper mapper;
+
+ @InjectMocks
+ private CategoryService service;
+
+ @BeforeEach
+ void setUp() {
+ MockitoAnnotations.openMocks(this);
+ }
+
+ @Test
+ void testGetAllSubcategoryIds() {
+ Category child = new Category(2L, "Child", new Category(1L, "Parent", null));
+ when(mapper.findByParentId(1L)).thenReturn(List.of(child));
+ when(mapper.findByParentId(2L)).thenReturn(List.of());
+
+ List<Long> ids = service.getAllSubcategoryIds(1L);
+
+ assertEquals(List.of(1L, 2L), ids);
+ }
+}
diff --git a/src/test/java/edu/bjtu/groupone/backend/WorkServiceTest.java b/src/test/java/edu/bjtu/groupone/backend/WorkServiceTest.java
new file mode 100644
index 0000000..85e62c6
--- /dev/null
+++ b/src/test/java/edu/bjtu/groupone/backend/WorkServiceTest.java
@@ -0,0 +1,58 @@
+package edu.bjtu.groupone.backend;
+
+import edu.bjtu.groupone.backend.domain.dto.WorkResponse;
+import edu.bjtu.groupone.backend.domain.entity.Category;
+import edu.bjtu.groupone.backend.domain.entity.Work;
+import edu.bjtu.groupone.backend.mapper.WorkMybatisMapper;
+//import edu.bjtu.groupone.backend.model.Category;
+//import edu.bjtu.groupone.backend.model.Work;
+import edu.bjtu.groupone.backend.service.CategoryService;
+import edu.bjtu.groupone.backend.service.WorkService;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.*;
+import org.springframework.data.domain.*;
+
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.*;
+
+class WorkServiceTest {
+
+ @Mock
+ private WorkMybatisMapper mapper;
+
+ @Mock
+ private CategoryService categoryService;
+
+ @InjectMocks
+ private WorkService service;
+
+ @BeforeEach
+ void init() {
+ MockitoAnnotations.openMocks(this);
+ }
+
+ @Test
+ void testGetWorks() {
+ Long categoryId = 1L;
+ List<Long> categoryIds = List.of(categoryId);
+
+ Work mockWork = Work.builder()
+ .id(10L)
+ .title("Test Title")
+ .author("Author")
+ .views(123)
+ .category(Category.builder().id(categoryId).name("Test").build())
+ .build();
+
+ Page<Work> workPage = new PageImpl<>(List.of(mockWork));
+ when(categoryService.getAllSubcategoryIds(categoryId)).thenReturn(categoryIds);
+ when(mapper.findByCategoryIdIn(eq(categoryIds), any(Pageable.class))).thenReturn(workPage);
+
+ Page<WorkResponse> result = service.getWorks(categoryId, 1, 10);
+ assertEquals(1, result.getTotalElements());
+ assertEquals("Test Title", result.getContent().get(0).getTitle());
+ }
+}
diff --git a/src/test/resources/application-test.properties b/src/test/resources/application-test.properties
new file mode 100644
index 0000000..4fb95c7
--- /dev/null
+++ b/src/test/resources/application-test.properties
@@ -0,0 +1,5 @@
+spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1
+spring.datasource.driver-class-name=org.h2.Driver
+spring.jpa.hibernate.ddl-auto=create-drop
+spring.jpa.show-sql=true
+spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
\ No newline at end of file