diff --git a/src/main/java/com/sztzjy/linkCommerce/service/impl/TrainingTaskServiceImpl.java b/src/main/java/com/sztzjy/linkCommerce/service/impl/TrainingTaskServiceImpl.java index df6146b..44f9f80 100644 --- a/src/main/java/com/sztzjy/linkCommerce/service/impl/TrainingTaskServiceImpl.java +++ b/src/main/java/com/sztzjy/linkCommerce/service/impl/TrainingTaskServiceImpl.java @@ -197,16 +197,8 @@ public class TrainingTaskServiceImpl implements TrainingTaskService { @Override public List listForTeachingClass(String teachingClassId, Boolean enabledOnly, JwtUser operator) { - SchoolClass teachingClass = requireReadableTeachingClass(teachingClassId, operator); - boolean ownedByOperator = StringUtils.equals(teachingClass.getCreatedBy(), operator.getUserId()); - if (ownedByOperator) { - ensureDefaultTasks(null); - } + requireReadableTeachingClass(teachingClassId, operator); List defaults = trainingTaskMapper.selectList(null, null, null); - if (ownedByOperator) { - List classTasks = ensureClassTasksInitialized(teachingClassId, defaults, operator.getUserId()); - return filterEnabled(toTasks(classTasks), enabledOnly); - } return filterEnabled(readClassTasks(teachingClassId, defaults), enabledOnly); } 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 360b9fc..e85d17e 100644 --- a/src/test/java/com/sztzjy/linkCommerce/service/impl/TrainingTaskServiceImplTest.java +++ b/src/test/java/com/sztzjy/linkCommerce/service/impl/TrainingTaskServiceImplTest.java @@ -362,6 +362,32 @@ class TrainingTaskServiceImplTest { verify(service.trainingTaskClassConfigMapper, never()).deleteByTeachingClassAndTaskKey(anyString(), anyString()); } + @Test + void ownerClassTaskReadDoesNotWriteConfigurations() { + TrainingTaskServiceImpl service = new TrainingTaskServiceImpl(); + service.trainingTaskMapper = mock(TrainingTaskMapper.class); + service.trainingTaskClassConfigMapper = mock(TrainingTaskClassConfigMapper.class); + service.schoolClassMapper = mock(SchoolClassMapper.class); + SchoolClass schoolClass = teachingClass("class-2", "teacher-a"); + schoolClass.setSchoolId("school-1"); + when(service.schoolClassMapper.selectByPrimaryKey("class-2")).thenReturn(schoolClass); + TrainingTask defaultTask = storedTask("task-1", "new-product-survey"); + when(service.trainingTaskMapper.selectList(null, null, null)).thenReturn(Collections.singletonList(defaultTask)); + when(service.trainingTaskClassConfigMapper.selectListByTeachingClass("class-2", null)).thenReturn(Collections.emptyList()); + + JwtUser owner = new JwtUser(); + owner.setUserId("teacher-a"); + owner.setSchoolId("school-1"); + + List result = service.listForTeachingClass("class-2", false, owner); + + assertEquals(1, result.size()); + verify(service.trainingTaskClassConfigMapper, never()).insertSelective(any()); + verify(service.trainingTaskClassConfigMapper, never()).updateByPrimaryKeySelective(any()); + verify(service.trainingTaskClassConfigMapper, never()).deleteByTeachingClass(anyString()); + verify(service.trainingTaskClassConfigMapper, never()).deleteByTeachingClassAndTaskKey(anyString(), anyString()); + } + @Test void teacherCannotReadTeachingClassWhenSchoolIdIsMissing() { TrainingTaskServiceImpl service = new TrainingTaskServiceImpl(); @@ -376,6 +402,21 @@ class TrainingTaskServiceImplTest { () -> service.requireReadableTeachingClass("class-2", reader)); } + @Test + void teacherCannotReadTeachingClassWhenClassSchoolIdIsMissing() { + TrainingTaskServiceImpl service = new TrainingTaskServiceImpl(); + service.schoolClassMapper = mock(SchoolClassMapper.class); + SchoolClass schoolClass = teachingClass("class-2", "teacher-a"); + when(service.schoolClassMapper.selectByPrimaryKey("class-2")).thenReturn(schoolClass); + + JwtUser reader = new JwtUser(); + reader.setUserId("teacher-b"); + reader.setSchoolId("school-1"); + + assertThrows(IllegalArgumentException.class, + () -> service.requireReadableTeachingClass("class-2", reader)); + } + @Test void restoreClassTaskDefaultDeletesOnlySelectedClassTaskCopy() { TrainingTaskServiceImpl service = new TrainingTaskServiceImpl();