add comment, reward, total
Change-Id: Ib3d9f5f11b51e4bbf4dc5a553315ff3fd9110efb
diff --git a/src/test/java/com/g9/g9backend/controller/RewardControllerTest.java b/src/test/java/com/g9/g9backend/controller/RewardControllerTest.java
new file mode 100644
index 0000000..7f560f7
--- /dev/null
+++ b/src/test/java/com/g9/g9backend/controller/RewardControllerTest.java
@@ -0,0 +1,135 @@
+package com.g9.g9backend.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.g9.g9backend.pojo.Reward;
+import com.g9.g9backend.service.RewardService;
+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 org.springframework.http.MediaType;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+
+import java.util.Collections;
+import java.util.Date;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+
+public class RewardControllerTest {
+
+ private MockMvc mockMvc;
+
+ @InjectMocks
+ private RewardController rewardController;
+
+ @Mock
+ private RewardService rewardService;
+
+ private final ObjectMapper objectMapper = new ObjectMapper();
+
+ @BeforeEach
+ public void setUp() {
+ MockitoAnnotations.openMocks(this);
+ mockMvc = MockMvcBuilders.standaloneSetup(rewardController).build();
+ }
+
+ @Test
+ public void testPostReward() throws Exception {
+ Reward reward = new Reward();
+ reward.setRewardName("测试悬赏");
+
+ mockMvc.perform(post("/reward")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(reward)))
+ .andExpect(status().isOk());
+ }
+
+ @Test
+ public void testDeleteReward() throws Exception {
+ mockMvc.perform(delete("/reward")
+ .param("rewardId", "1"))
+ .andExpect(status().isNoContent());
+ }
+
+ @Test
+ public void testGetReward_sortByPrice() throws Exception {
+ Reward reward = new Reward();
+ reward.setRewardId(1);
+ reward.setRewardName("测试");
+ reward.setPrice(100);
+ reward.setCreateAt(new Date());
+
+ Page<Reward> page = new Page<>(1, 10);
+ page.setRecords(Collections.singletonList(reward));
+ page.setTotal(1);
+
+ when(rewardService.page(any(), any())).thenReturn(page);
+
+ mockMvc.perform(get("/reward")
+ .param("pageNumber", "1")
+ .param("rows", "10")
+ .param("searchValue", "")
+ .param("option", "赏金最高"))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.records[0].rewardId").value(1));
+ }
+
+ @Test
+ public void testGetRewardInfo() throws Exception {
+ Reward reward = new Reward();
+ reward.setRewardId(1);
+ reward.setRewardName("详情测试");
+
+ when(rewardService.getById(1)).thenReturn(reward);
+
+ mockMvc.perform(get("/reward/info")
+ .param("rewardId", "1"))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.rewardId").value(1));
+ }
+
+ @Test
+ public void testPutReward() throws Exception {
+ Reward oldReward = new Reward();
+ oldReward.setRewardId(1);
+
+ when(rewardService.getById(1)).thenReturn(oldReward);
+
+ Reward updateRequest = new Reward();
+ updateRequest.setRewardId(1);
+ updateRequest.setRewardName("更新名称");
+ updateRequest.setRewardDescription("更新描述");
+ updateRequest.setPrice(500);
+ updateRequest.setRewardPicture("pic.png");
+
+ mockMvc.perform(put("/reward/info")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(updateRequest)))
+ .andExpect(status().isOk());
+ }
+
+ @Test
+ public void testPutRewardCompletion() throws Exception {
+ Reward existing = new Reward();
+ existing.setRewardId(1);
+
+ when(rewardService.getById(1)).thenReturn(existing);
+
+ Reward completed = new Reward();
+ completed.setRewardId(1);
+ completed.setCompletedBy(2);
+ completed.setCompletedAt(new Date());
+ completed.setResourceId(3);
+
+ mockMvc.perform(post("/reward/completion")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(completed)))
+ .andExpect(status().isOk());
+ }
+}