feat: expose new product survey grading api

main
chenyuan 3 weeks ago
parent 90018ba287
commit 956c07b8df

@ -4,6 +4,9 @@ import com.sztzjy.linkCommerce.config.exception.handler.ServiceException;
import com.sztzjy.linkCommerce.config.security.JwtUser;
import com.sztzjy.linkCommerce.config.security.TokenProvider;
import com.sztzjy.linkCommerce.entity.StudentTrainingAnswer;
import com.sztzjy.linkCommerce.entity.dto.NewProductSurveyStepOneCheckRequest;
import com.sztzjy.linkCommerce.entity.dto.NewProductSurveyStepOneCheckResult;
import com.sztzjy.linkCommerce.service.NewProductSurveyStepOneService;
import com.sztzjy.linkCommerce.service.StudentTrainingAnswerService;
import com.sztzjy.linkCommerce.util.ResultEntity;
import io.swagger.annotations.Api;
@ -21,6 +24,9 @@ public class StudentTrainingAnswerController {
@Autowired
private StudentTrainingAnswerService studentTrainingAnswerService;
@Autowired
private NewProductSurveyStepOneService newProductSurveyStepOneService;
@GetMapping("/{taskKey}")
@ApiOperation("查询当前学生指定实训任务答案")
public ResultEntity<StudentTrainingAnswer> detail(@PathVariable String taskKey,
@ -47,6 +53,18 @@ public class StudentTrainingAnswerController {
}
}
@PostMapping("/new-product-survey/step-1/check")
@ApiOperation("新产品调查与分析第一步判题")
public ResultEntity<NewProductSurveyStepOneCheckResult> checkNewProductSurveyStepOne(
@RequestBody NewProductSurveyStepOneCheckRequest answer, HttpServletRequest request) {
try {
JwtUser user = TokenProvider.getJWTUser(request);
return new ResultEntity<>(HttpStatus.OK, "判题完成", newProductSurveyStepOneService.check(answer, user));
} catch (ServiceException e) {
return new ResultEntity<>(e.getCode(), e.getMessage());
}
}
@DeleteMapping("/{taskKey}")
@ApiOperation("删除当前学生指定实训任务答案")
public ResultEntity delete(@PathVariable String taskKey,

@ -0,0 +1,52 @@
package com.sztzjy.linkCommerce.controller.stu;
import com.sztzjy.linkCommerce.config.Constant;
import com.sztzjy.linkCommerce.config.security.JwtUser;
import com.sztzjy.linkCommerce.config.security.TokenProvider;
import com.sztzjy.linkCommerce.entity.dto.NewProductSurveyStepOneCheckRequest;
import com.sztzjy.linkCommerce.entity.dto.NewProductSurveyStepOneCheckResult;
import com.sztzjy.linkCommerce.service.NewProductSurveyStepOneService;
import com.sztzjy.linkCommerce.util.ResultEntity;
import org.junit.jupiter.api.Test;
import org.springframework.http.HttpStatus;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.test.util.ReflectionTestUtils;
import javax.servlet.http.HttpServletRequest;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
class StudentTrainingAnswerControllerTest {
@Test
void checkStepOneUsesTheAuthenticatedStudentAndReturnsTheGrade() {
StudentTrainingAnswerController controller = new StudentTrainingAnswerController();
NewProductSurveyStepOneService service = mock(NewProductSurveyStepOneService.class);
ReflectionTestUtils.setField(controller, "newProductSurveyStepOneService", service);
NewProductSurveyStepOneCheckResult grade = new NewProductSurveyStepOneCheckResult();
grade.setAllCorrect(true);
when(service.check(any(NewProductSurveyStepOneCheckRequest.class), any(JwtUser.class))).thenReturn(grade);
NewProductSurveyStepOneCheckRequest answer = new NewProductSurveyStepOneCheckRequest();
ResultEntity<NewProductSurveyStepOneCheckResult> result = controller.checkNewProductSurveyStepOne(answer, authenticatedStudentRequest());
assertEquals(HttpStatus.OK, result.getStatusCode());
assertEquals(grade, result.getBody().getData());
verify(service).check(any(NewProductSurveyStepOneCheckRequest.class), any(JwtUser.class));
}
private HttpServletRequest authenticatedStudentRequest() {
JwtUser user = new JwtUser();
user.setUserId("stu-1");
user.setRoleId(4);
String token = TokenProvider.createToken(user);
HttpServletRequest request = mock(HttpServletRequest.class);
when(request.getUserPrincipal()).thenReturn(new UsernamePasswordAuthenticationToken("student", null));
when(request.getHeader(Constant.AUTHORIZATION)).thenReturn("Bearer " + token);
return request;
}
}
Loading…
Cancel
Save