test: align class and task expectations

main
chenyuan 1 month ago
parent 48f58a13a3
commit 649b6a08af

@ -124,15 +124,18 @@ class UserControllerTeacherAdminTest {
}
@Test
void ordinaryTeacherCannotAddAdminClass() {
void ordinaryTeacherCanAddAdminClassWithinOwnSchool() {
UserController controller = controllerWithCommonMocks();
when(controller.userinfoMapper.selectByPrimaryKey("teacher-1")).thenReturn(teacher("teacher-1", false));
when(controller.schoolClassMapper.selectByExample(any())).thenReturn(Collections.emptyList());
when(controller.schoolClassMapper.insert(any(SchoolClass.class))).thenReturn(1);
when(controller.pinyin4jUtil.convertToPinyin(any())).thenReturn("py");
ResultEntity result = controller.addSchoolClass("school-1", "faculty-1", "major-1", "admin-class",
"teacher-1", "ADMIN", null);
assertEquals(HttpStatus.BAD_REQUEST, result.getStatusCode());
verify(controller.schoolClassMapper, never()).insert(any(SchoolClass.class));
assertEquals(HttpStatus.OK, result.getStatusCode());
verify(controller.schoolClassMapper).insert(argThat(schoolClass -> "ADMIN".equals(schoolClass.getClassType())));
}
@Test
@ -314,7 +317,7 @@ class UserControllerTeacherAdminTest {
}
@Test
void ordinaryTeacherCannotDeleteOwnAdminClass() {
void ordinaryTeacherCanDeleteOwnLocalAdminClass() {
UserController controller = controllerWithCommonMocks();
Userinfo teacher = teacher("teacher-1", false);
SchoolClass existing = classCreatedBy("teacher-1");
@ -322,11 +325,13 @@ class UserControllerTeacherAdminTest {
existing.setDataSource("LOCAL");
when(controller.userinfoMapper.selectByPrimaryKey("teacher-1")).thenReturn(teacher);
when(controller.schoolClassMapper.selectByPrimaryKey("class-1")).thenReturn(existing);
when(controller.userinfoMapper.selectByExample(any())).thenReturn(Collections.emptyList());
when(controller.schoolClassMapper.deleteByPrimaryKey("class-1")).thenReturn(1);
ResultEntity result = controller.deleteSchoolClass("class-1", "teacher-1");
assertEquals(HttpStatus.BAD_REQUEST, result.getStatusCode());
verify(controller.schoolClassMapper, never()).deleteByPrimaryKey("class-1");
assertEquals(HttpStatus.OK, result.getStatusCode());
verify(controller.schoolClassMapper).deleteByPrimaryKey("class-1");
}
@Test
@ -406,7 +411,7 @@ class UserControllerTeacherAdminTest {
}
@Test
void ordinaryTeacherCannotUpdateOwnAdminClass() {
void ordinaryTeacherCanUpdateOwnLocalAdminClass() {
UserController controller = controllerWithCommonMocks();
Userinfo teacher = teacher("teacher-1", false);
SchoolClass existing = classCreatedBy("teacher-1");
@ -417,11 +422,12 @@ class UserControllerTeacherAdminTest {
update.setClassName("new-admin-class");
when(controller.userinfoMapper.selectByPrimaryKey("teacher-1")).thenReturn(teacher);
when(controller.schoolClassMapper.selectByPrimaryKey("class-1")).thenReturn(existing);
when(controller.schoolClassMapper.updateByPrimaryKeySelective(any(SchoolClass.class))).thenReturn(1);
ResultEntity result = controller.updateSchoolClass(update, "teacher-1");
assertEquals(HttpStatus.BAD_REQUEST, result.getStatusCode());
verify(controller.schoolClassMapper, never()).updateByPrimaryKeySelective(any(SchoolClass.class));
assertEquals(HttpStatus.OK, result.getStatusCode());
verify(controller.schoolClassMapper).updateByPrimaryKeySelective(update);
}
@Test
@ -902,7 +908,7 @@ class UserControllerTeacherAdminTest {
}
@Test
void importTeacherStudentRowsRejectsClassNotCreatedByTeacher() {
void importTeacherStudentRowsAllowsAdminClassFromSameSchool() {
UserController controller = controllerWithCommonMocks();
SchoolClass adminClass = new SchoolClass();
adminClass.setSchoolClassId("admin-1");
@ -916,13 +922,14 @@ class UserControllerTeacherAdminTest {
when(controller.schoolMajorMapper.selectByExample(any())).thenReturn(Collections.singletonList(major("major-1", "faculty-1", "专业")));
when(controller.schoolClassMapper.selectByExample(any())).thenReturn(Collections.singletonList(adminClass));
when(controller.userInfoService.existsByUserName("20260001")).thenReturn(false);
when(controller.userinfoMapper.insertSelective(any(Userinfo.class))).thenReturn(1);
ResultEntity result = controller.importTeacherStudentRows(
Collections.singletonList(studentAccountRow("张三", "20260001", "男", "院系", "专业", "行政一班")),
"teacher-1");
assertEquals(HttpStatus.BAD_REQUEST, result.getStatusCode());
verify(controller.userinfoMapper, never()).insertSelective(any(Userinfo.class));
assertEquals(HttpStatus.OK, result.getStatusCode());
verify(controller.userinfoMapper).insertSelective(argThat(student -> "admin-1".equals(student.getSchoolClassId())));
}
private UserController controllerWithCommonMocks() {

@ -205,7 +205,7 @@ class TrainingTaskServiceImplTest {
service.ensureDefaultTasks("system");
verify(service.jdbcTemplate).execute(startsWith("CREATE TABLE IF NOT EXISTS training_task"));
verify(service.jdbcTemplate).execute(startsWith("CREATE TABLE IF NOT EXISTS training_task ("));
verify(service.jdbcTemplate).execute("ALTER TABLE training_task CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
}
@ -225,10 +225,16 @@ class TrainingTaskServiceImplTest {
TrainingTaskServiceImpl service = new TrainingTaskServiceImpl();
service.trainingTaskMapper = mock(TrainingTaskMapper.class);
when(service.trainingTaskMapper.selectByTaskKey(any())).thenReturn(new TrainingTask());
TrainingTask disabledTask = new TrainingTask();
disabledTask.setEnabled(Boolean.FALSE);
when(service.trainingTaskMapper.selectList(isNull(), isNull(), isNull()))
.thenReturn(Collections.singletonList(disabledTask));
service.list(null, null, false);
List<TrainingTask> result = service.list(null, null, false);
verify(service.trainingTaskMapper).selectList(isNull(), isNull(), isNull());
assertEquals(1, result.size());
assertFalse(result.get(0).getEnabled());
verify(service.trainingTaskMapper, times(2)).selectList(isNull(), isNull(), isNull());
}
@Test
@ -325,13 +331,17 @@ class TrainingTaskServiceImplTest {
service.saveClassTask("class-1", "new-product-survey", payload, "teacher-1");
ArgumentCaptor<TrainingTaskClassConfig> captor = ArgumentCaptor.forClass(TrainingTaskClassConfig.class);
verify(service.trainingTaskClassConfigMapper).insertSelective(captor.capture());
assertEquals("class-1", captor.getValue().getTeachingClassId());
assertEquals("new-product-survey", captor.getValue().getTaskKey());
assertEquals("Default Project", captor.getValue().getProjectName());
assertEquals(Integer.valueOf(3), captor.getValue().getSort());
assertEquals("Class Knowledge", captor.getValue().getKnowledge());
assertEquals("Class Material", captor.getValue().getMaterialName());
verify(service.trainingTaskClassConfigMapper, times(24)).insertSelective(captor.capture());
TrainingTaskClassConfig savedOverride = captor.getAllValues().stream()
.filter(config -> "new-product-survey".equals(config.getTaskKey()))
.filter(config -> "Class Name".equals(config.getTaskName()))
.findFirst()
.orElseThrow(AssertionError::new);
assertEquals("class-1", savedOverride.getTeachingClassId());
assertEquals("Default Project", savedOverride.getProjectName());
assertEquals(Integer.valueOf(3), savedOverride.getSort());
assertEquals("Class Knowledge", savedOverride.getKnowledge());
assertEquals("Class Material", savedOverride.getMaterialName());
}
@Test

Loading…
Cancel
Save