|
|
|
|
@ -141,13 +141,19 @@ class TrainingTaskServiceImplTest {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
void updateTaskSynchronizesOnlyClassStepsStillMatchingThePreviousGlobalConfiguration() {
|
|
|
|
|
void updateTaskSynchronizesOnlyClassFieldsStillMatchingThePreviousGlobalConfiguration() {
|
|
|
|
|
TrainingTaskServiceImpl service = new TrainingTaskServiceImpl();
|
|
|
|
|
service.trainingTaskMapper = mock(TrainingTaskMapper.class);
|
|
|
|
|
service.trainingTaskClassConfigMapper = mock(TrainingTaskClassConfigMapper.class);
|
|
|
|
|
service.schoolClassMapper = mock(SchoolClassMapper.class);
|
|
|
|
|
|
|
|
|
|
TrainingTask stored = storedTask("task-1", "new-product-survey");
|
|
|
|
|
stored.setKnowledge("Original knowledge");
|
|
|
|
|
stored.setBackground("Original background");
|
|
|
|
|
stored.setObjectives("[\"Original goal\"]");
|
|
|
|
|
stored.setRequirements("Original requirements");
|
|
|
|
|
stored.setMaterialName("original.pdf");
|
|
|
|
|
stored.setMaterialUrl("/file/original.pdf");
|
|
|
|
|
when(service.trainingTaskMapper.selectByPrimaryKey("task-1")).thenReturn(stored);
|
|
|
|
|
|
|
|
|
|
SchoolClass defaultClass = teachingClass("class-default", "teacher-1");
|
|
|
|
|
@ -155,9 +161,23 @@ class TrainingTaskServiceImplTest {
|
|
|
|
|
when(service.schoolClassMapper.selectByExample(any())).thenReturn(List.of(defaultClass, customizedClass));
|
|
|
|
|
|
|
|
|
|
TrainingTaskClassConfig defaultConfig = overrideTask("config-default", "class-default", "new-product-survey");
|
|
|
|
|
defaultConfig.setTaskName("Original Name");
|
|
|
|
|
defaultConfig.setKnowledge("Original knowledge");
|
|
|
|
|
defaultConfig.setBackground("Original background");
|
|
|
|
|
defaultConfig.setObjectives("[\"Original goal\"]");
|
|
|
|
|
defaultConfig.setRequirements("Original requirements");
|
|
|
|
|
defaultConfig.setSteps("[\"Step 1\",\"Step 2\",\"Step 3\",\"Step 4\"]");
|
|
|
|
|
defaultConfig.setMaterialName("original.pdf");
|
|
|
|
|
defaultConfig.setMaterialUrl("/file/original.pdf");
|
|
|
|
|
TrainingTaskClassConfig customizedConfig = overrideTask("config-customized", "class-customized", "new-product-survey");
|
|
|
|
|
customizedConfig.setTaskName("Original Name");
|
|
|
|
|
customizedConfig.setKnowledge("Original knowledge");
|
|
|
|
|
customizedConfig.setBackground("Teacher background");
|
|
|
|
|
customizedConfig.setObjectives("[\"Original goal\"]");
|
|
|
|
|
customizedConfig.setRequirements("Original requirements");
|
|
|
|
|
customizedConfig.setSteps("[\"Teacher Step\"]");
|
|
|
|
|
customizedConfig.setMaterialName("original.pdf");
|
|
|
|
|
customizedConfig.setMaterialUrl("/file/original.pdf");
|
|
|
|
|
when(service.trainingTaskClassConfigMapper.selectByTeachingClassAndTaskKey("class-default", "new-product-survey"))
|
|
|
|
|
.thenReturn(defaultConfig);
|
|
|
|
|
when(service.trainingTaskClassConfigMapper.selectByTeachingClassAndTaskKey("class-customized", "new-product-survey"))
|
|
|
|
|
@ -167,14 +187,36 @@ class TrainingTaskServiceImplTest {
|
|
|
|
|
payload.setProjectName("Foundation");
|
|
|
|
|
payload.setTaskKey("new-product-survey");
|
|
|
|
|
payload.setTaskName("Admin Updated Name");
|
|
|
|
|
payload.setKnowledge("Admin updated knowledge");
|
|
|
|
|
payload.setBackground("Admin updated background");
|
|
|
|
|
payload.setObjectives("[\"Admin updated goal\"]");
|
|
|
|
|
payload.setRequirements("Admin updated requirements");
|
|
|
|
|
payload.setSteps("[\"Admin Step 1\",\"Admin Step 2\"]");
|
|
|
|
|
payload.setMaterialName("admin.pdf");
|
|
|
|
|
payload.setMaterialUrl("/file/admin.pdf");
|
|
|
|
|
|
|
|
|
|
service.update("task-1", payload);
|
|
|
|
|
|
|
|
|
|
ArgumentCaptor<TrainingTaskClassConfig> captor = ArgumentCaptor.forClass(TrainingTaskClassConfig.class);
|
|
|
|
|
verify(service.trainingTaskClassConfigMapper).updateByPrimaryKeySelective(captor.capture());
|
|
|
|
|
assertEquals("config-default", captor.getValue().getId());
|
|
|
|
|
assertTrue(captor.getValue().getSteps().contains("Admin Step 1"));
|
|
|
|
|
verify(service.trainingTaskClassConfigMapper, times(2)).updateByPrimaryKeySelective(captor.capture());
|
|
|
|
|
TrainingTaskClassConfig defaultUpdate = captor.getAllValues().stream()
|
|
|
|
|
.filter(update -> "config-default".equals(update.getId()))
|
|
|
|
|
.findFirst()
|
|
|
|
|
.orElseThrow(AssertionError::new);
|
|
|
|
|
assertEquals("Admin Updated Name", defaultUpdate.getTaskName());
|
|
|
|
|
assertEquals("Admin updated background", defaultUpdate.getBackground());
|
|
|
|
|
assertEquals("Admin updated requirements", defaultUpdate.getRequirements());
|
|
|
|
|
assertTrue(defaultUpdate.getSteps().contains("Admin Step 1"));
|
|
|
|
|
assertEquals("admin.pdf", defaultUpdate.getMaterialName());
|
|
|
|
|
|
|
|
|
|
TrainingTaskClassConfig customizedUpdate = captor.getAllValues().stream()
|
|
|
|
|
.filter(update -> "config-customized".equals(update.getId()))
|
|
|
|
|
.findFirst()
|
|
|
|
|
.orElseThrow(AssertionError::new);
|
|
|
|
|
assertEquals("Admin Updated Name", customizedUpdate.getTaskName());
|
|
|
|
|
assertEquals(null, customizedUpdate.getBackground());
|
|
|
|
|
assertEquals(null, customizedUpdate.getSteps());
|
|
|
|
|
assertEquals("admin.pdf", customizedUpdate.getMaterialName());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
|