feat: add training progress to score center
parent
f4f354b367
commit
9f41a2d160
@ -0,0 +1,101 @@
|
|||||||
|
package com.sztzjy.linkCommerce.controller.stu;
|
||||||
|
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import com.sztzjy.linkCommerce.entity.StuGrade;
|
||||||
|
import com.sztzjy.linkCommerce.entity.StuRank;
|
||||||
|
import com.sztzjy.linkCommerce.entity.TaskAllocation;
|
||||||
|
import com.sztzjy.linkCommerce.mapper.StuGradeMapper;
|
||||||
|
import com.sztzjy.linkCommerce.mapper.StuRankMapper;
|
||||||
|
import com.sztzjy.linkCommerce.mapper.TaskAllocationMapper;
|
||||||
|
import com.sztzjy.linkCommerce.mapper.SchoolClassMapper;
|
||||||
|
import com.sztzjy.linkCommerce.service.ScoreRankService;
|
||||||
|
import com.sztzjy.linkCommerce.util.ResultEntity;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.test.util.ReflectionTestUtils;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||||
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
class TeaScoreControllerProgressTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void selectStuRankAndScoreCountsOnlyDistinctEnabledAllocatedTasks() {
|
||||||
|
TeaScoreController controller = controllerWithMocks();
|
||||||
|
StuRankMapper rankMapper = field(controller, "stuRankMapper");
|
||||||
|
TaskAllocationMapper taskMapper = field(controller, "taskAllocationMapper");
|
||||||
|
StuGradeMapper gradeMapper = field(controller, "stuGradeMapper");
|
||||||
|
StuRank rank = rank("student-1", "class-1");
|
||||||
|
|
||||||
|
when(rankMapper.selectByExample(any())).thenReturn(Collections.singletonList(rank));
|
||||||
|
when(taskMapper.selectByExample(any())).thenReturn(Arrays.asList(task("任务A", (byte) 0), task("任务B", (byte) 0), task("任务C", (byte) 1)));
|
||||||
|
when(gradeMapper.selectByExample(any())).thenReturn(Arrays.asList(grade("任务A"), grade("任务A"), grade("任务C")));
|
||||||
|
|
||||||
|
ResultEntity<PageInfo<StuRank>> result = controller.selectStuRankAndScore("class-1", null, null, "school-1", 1, 10);
|
||||||
|
StuRank row = result.getBody().getData().getList().get(0);
|
||||||
|
|
||||||
|
assertEquals(1, row.getCompletedTaskCount());
|
||||||
|
assertEquals(2, row.getTotalTaskCount());
|
||||||
|
assertEquals(new BigDecimal("50.00"), row.getTrainingProgress());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void selectStuRankAndScoreLeavesProgressEmptyWhenNoTaskIsAllocated() {
|
||||||
|
TeaScoreController controller = controllerWithMocks();
|
||||||
|
StuRankMapper rankMapper = field(controller, "stuRankMapper");
|
||||||
|
TaskAllocationMapper taskMapper = field(controller, "taskAllocationMapper");
|
||||||
|
StuRank rank = rank("student-1", "class-1");
|
||||||
|
|
||||||
|
when(rankMapper.selectByExample(any())).thenReturn(Collections.singletonList(rank));
|
||||||
|
when(taskMapper.selectByExample(any())).thenReturn(Collections.emptyList());
|
||||||
|
|
||||||
|
ResultEntity<PageInfo<StuRank>> result = controller.selectStuRankAndScore("class-1", null, null, "school-1", 1, 10);
|
||||||
|
StuRank row = result.getBody().getData().getList().get(0);
|
||||||
|
|
||||||
|
assertEquals(0, row.getTotalTaskCount());
|
||||||
|
assertNull(row.getTrainingProgress());
|
||||||
|
}
|
||||||
|
|
||||||
|
private TeaScoreController controllerWithMocks() {
|
||||||
|
TeaScoreController controller = new TeaScoreController();
|
||||||
|
ReflectionTestUtils.setField(controller, "stuRankMapper", mock(StuRankMapper.class));
|
||||||
|
ReflectionTestUtils.setField(controller, "stuGradeMapper", mock(StuGradeMapper.class));
|
||||||
|
ReflectionTestUtils.setField(controller, "taskAllocationMapper", mock(TaskAllocationMapper.class));
|
||||||
|
ReflectionTestUtils.setField(controller, "schoolClassMapper", mock(SchoolClassMapper.class));
|
||||||
|
ScoreRankService scoreRankService = mock(ScoreRankService.class);
|
||||||
|
when(scoreRankService.getNowDate()).thenReturn("2026-07-30");
|
||||||
|
ReflectionTestUtils.setField(controller, "scoreRankService", scoreRankService);
|
||||||
|
return controller;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
private <T> T field(TeaScoreController controller, String name) {
|
||||||
|
return (T) ReflectionTestUtils.getField(controller, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
private StuRank rank(String userId, String classId) {
|
||||||
|
StuRank row = new StuRank();
|
||||||
|
row.setUserId(userId);
|
||||||
|
row.setSchoolClassId(classId);
|
||||||
|
return row;
|
||||||
|
}
|
||||||
|
|
||||||
|
private TaskAllocation task(String module, byte disabledStatus) {
|
||||||
|
TaskAllocation task = new TaskAllocation();
|
||||||
|
task.setModule(module);
|
||||||
|
task.setDisabledStatus(disabledStatus);
|
||||||
|
return task;
|
||||||
|
}
|
||||||
|
|
||||||
|
private StuGrade grade(String module) {
|
||||||
|
StuGrade grade = new StuGrade();
|
||||||
|
grade.setModule(module);
|
||||||
|
return grade;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue