feat: expose training task default restore APIs

main
chenyuan 1 month ago
parent 885dd604d7
commit 081268b306

@ -118,6 +118,33 @@ public class TrainingTaskController {
} }
} }
@DeleteMapping("/classes/{teachingClassId}/{taskKey}/override")
@ApiOperation("Restore training task default for teaching class")
public ResultEntity restoreClassTaskDefault(@PathVariable String teachingClassId,
@PathVariable String taskKey,
HttpServletRequest request) {
JwtUser user = requireTeacher(request);
try {
trainingTaskService.restoreClassTaskDefault(teachingClassId, taskKey, user.getUserId());
return new ResultEntity(HttpStatus.OK, "Restore success");
} catch (IllegalArgumentException e) {
return new ResultEntity(HttpStatus.BAD_REQUEST, e.getMessage());
}
}
@DeleteMapping("/classes/{teachingClassId}/overrides")
@ApiOperation("Restore all training task defaults for teaching class")
public ResultEntity restoreClassTasksDefaults(@PathVariable String teachingClassId,
HttpServletRequest request) {
JwtUser user = requireTeacher(request);
try {
trainingTaskService.restoreClassTasksDefaults(teachingClassId, user.getUserId());
return new ResultEntity(HttpStatus.OK, "Restore success");
} catch (IllegalArgumentException e) {
return new ResultEntity(HttpStatus.BAD_REQUEST, e.getMessage());
}
}
@PostMapping @PostMapping
@ApiOperation("Create training task") @ApiOperation("Create training task")
public ResultEntity<TrainingTask> create(@RequestBody TrainingTask task, HttpServletRequest request) { public ResultEntity<TrainingTask> create(@RequestBody TrainingTask task, HttpServletRequest request) {

@ -0,0 +1,57 @@
package com.sztzjy.linkCommerce.controller.stu;
import com.sztzjy.linkCommerce.config.security.JwtUser;
import com.sztzjy.linkCommerce.config.security.TokenProvider;
import com.sztzjy.linkCommerce.service.TrainingTaskService;
import com.sztzjy.linkCommerce.util.ResultEntity;
import org.junit.jupiter.api.Test;
import org.springframework.http.HttpStatus;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.test.util.ReflectionTestUtils;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
class TrainingTaskControllerRestoreDefaultTest {
@Test
void teacherCanRestoreOneTaskToDefault() {
TrainingTaskController controller = controllerWithService();
TrainingTaskService service = (TrainingTaskService) ReflectionTestUtils.getField(controller, "trainingTaskService");
ResultEntity result = controller.restoreClassTaskDefault("class-1", "new-product-survey", requestFor("teacher-1"));
assertEquals(HttpStatus.OK, result.getStatusCode());
verify(service).restoreClassTaskDefault("class-1", "new-product-survey", "teacher-1");
}
@Test
void teacherCanRestoreAllClassTasksToDefault() {
TrainingTaskController controller = controllerWithService();
TrainingTaskService service = (TrainingTaskService) ReflectionTestUtils.getField(controller, "trainingTaskService");
ResultEntity result = controller.restoreClassTasksDefaults("class-1", requestFor("teacher-1"));
assertEquals(HttpStatus.OK, result.getStatusCode());
verify(service).restoreClassTasksDefaults("class-1", "teacher-1");
}
private TrainingTaskController controllerWithService() {
TrainingTaskController controller = new TrainingTaskController();
ReflectionTestUtils.setField(controller, "trainingTaskService", mock(TrainingTaskService.class));
return controller;
}
private MockHttpServletRequest requestFor(String userId) {
JwtUser user = new JwtUser();
user.setUserId(userId);
user.setRoleId(3);
user.setUsername(userId);
MockHttpServletRequest request = new MockHttpServletRequest();
request.setUserPrincipal(new UsernamePasswordAuthenticationToken(user, null));
request.addHeader("Authorization", "Bearer " + TokenProvider.createToken(user));
return request;
}
}
Loading…
Cancel
Save