You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
3.9 KiB
Java

package com.sztzjy.linkCommerce.controller.stu;
import com.sztzjy.linkCommerce.entity.SchoolClass;
import com.sztzjy.linkCommerce.entity.TaskAllocation;
import com.sztzjy.linkCommerce.mapper.SchoolClassMapper;
import com.sztzjy.linkCommerce.mapper.TaskAllocationMapper;
import com.sztzjy.linkCommerce.util.ResultEntity;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import org.springframework.http.HttpStatus;
import java.util.Collections;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
class TaskAllocationControllerTest {
@Test
void teacherCannotUpdateTaskAllocationForClassCreatedByAnotherTeacher() {
TaskAllocationController controller = new TaskAllocationController();
controller.taskAllocationMapper = mock(TaskAllocationMapper.class);
controller.schoolClassMapper = mock(SchoolClassMapper.class);
SchoolClass schoolClass = new SchoolClass();
schoolClass.setSchoolClassId("class-1");
schoolClass.setCreatedBy("teacher-2");
when(controller.schoolClassMapper.selectByPrimaryKey("class-1")).thenReturn(schoolClass);
ResultEntity result = controller.updateTaskAllocationByClassId(Collections.emptyList(), "class-1", "school-1", "teacher-1");
assertEquals(HttpStatus.BAD_REQUEST, result.getStatusCode());
verify(controller.taskAllocationMapper, never()).deleteByExample(org.mockito.ArgumentMatchers.any());
}
@Test
void teacherCannotUpdateTaskAllocationForAdminClassEvenWhenCreatedBySelf() {
TaskAllocationController controller = controllerWithMocks();
SchoolClass schoolClass = new SchoolClass();
schoolClass.setSchoolClassId("admin-1");
schoolClass.setCreatedBy("teacher-1");
schoolClass.setClassType("ADMIN");
when(controller.schoolClassMapper.selectByPrimaryKey("admin-1")).thenReturn(schoolClass);
ResultEntity result = controller.updateTaskAllocationByClassId(Collections.emptyList(), "admin-1", "school-1", "teacher-1");
assertEquals(HttpStatus.BAD_REQUEST, result.getStatusCode());
verify(controller.taskAllocationMapper, never()).deleteByExample(any());
}
@Test
void teacherCanUpdateTaskAllocationForOwnedTeachingClass() {
TaskAllocationController controller = controllerWithMocks();
SchoolClass schoolClass = new SchoolClass();
schoolClass.setSchoolClassId("teaching-1");
schoolClass.setCreatedBy("teacher-1");
schoolClass.setClassType("TEACHING");
when(controller.schoolClassMapper.selectByPrimaryKey("teaching-1")).thenReturn(schoolClass);
TaskAllocation allocation = new TaskAllocation();
allocation.setModule("任务A");
allocation.setSort(1);
ResultEntity result = controller.updateTaskAllocationByClassId(Collections.singletonList(allocation), "teaching-1", "school-1", "teacher-1");
ArgumentCaptor<TaskAllocation> captor = ArgumentCaptor.forClass(TaskAllocation.class);
assertEquals(HttpStatus.OK, result.getStatusCode());
verify(controller.taskAllocationMapper).deleteByExample(any());
verify(controller.taskAllocationMapper).insert(captor.capture());
assertNotNull(captor.getValue().getId());
assertEquals("teaching-1", captor.getValue().getClassId());
assertEquals("school-1", captor.getValue().getSchoolId());
}
private TaskAllocationController controllerWithMocks() {
TaskAllocationController controller = new TaskAllocationController();
controller.taskAllocationMapper = mock(TaskAllocationMapper.class);
controller.schoolClassMapper = mock(SchoolClassMapper.class);
return controller;
}
}