diff --git a/src/test/java/com/sztzjy/linkCommerce/controller/stu/UserControllerTeacherAdminTest.java b/src/test/java/com/sztzjy/linkCommerce/controller/stu/UserControllerTeacherAdminTest.java index 2a4bc95..b27f5b7 100644 --- a/src/test/java/com/sztzjy/linkCommerce/controller/stu/UserControllerTeacherAdminTest.java +++ b/src/test/java/com/sztzjy/linkCommerce/controller/stu/UserControllerTeacherAdminTest.java @@ -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() { diff --git a/src/test/java/com/sztzjy/linkCommerce/service/impl/TrainingTaskServiceImplTest.java b/src/test/java/com/sztzjy/linkCommerce/service/impl/TrainingTaskServiceImplTest.java index 5b94851..aa1c597 100644 --- a/src/test/java/com/sztzjy/linkCommerce/service/impl/TrainingTaskServiceImplTest.java +++ b/src/test/java/com/sztzjy/linkCommerce/service/impl/TrainingTaskServiceImplTest.java @@ -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 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 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