|
|
|
|
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.entity.dto.NewProductSurveyStepTwoValidationRequest;
|
|
|
|
|
import com.sztzjy.linkCommerce.entity.dto.NewProductSurveyStepTwoValidationResult;
|
|
|
|
|
import com.sztzjy.linkCommerce.entity.dto.NewProductSurveyStepThreeValidationRequest;
|
|
|
|
|
import com.sztzjy.linkCommerce.entity.dto.NewProductSurveyStepThreeValidationResult;
|
|
|
|
|
import com.sztzjy.linkCommerce.service.NewProductSurveyStepOneService;
|
|
|
|
|
import com.sztzjy.linkCommerce.service.NewProductSurveyStepTwoService;
|
|
|
|
|
import com.sztzjy.linkCommerce.service.NewProductSurveyStepThreeService;
|
|
|
|
|
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));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
void validateStepTwoUsesTheAuthenticatedStudentAndReturnsTheValidationResult() {
|
|
|
|
|
StudentTrainingAnswerController controller = new StudentTrainingAnswerController();
|
|
|
|
|
NewProductSurveyStepTwoService service = mock(NewProductSurveyStepTwoService.class);
|
|
|
|
|
ReflectionTestUtils.setField(controller, "newProductSurveyStepTwoService", service);
|
|
|
|
|
NewProductSurveyStepTwoValidationResult validation = new NewProductSurveyStepTwoValidationResult();
|
|
|
|
|
validation.setValid(true);
|
|
|
|
|
when(service.validate(any(NewProductSurveyStepTwoValidationRequest.class), any(JwtUser.class))).thenReturn(validation);
|
|
|
|
|
|
|
|
|
|
NewProductSurveyStepTwoValidationRequest answer = new NewProductSurveyStepTwoValidationRequest();
|
|
|
|
|
ResultEntity<NewProductSurveyStepTwoValidationResult> result = controller.validateNewProductSurveyStepTwo(answer, authenticatedStudentRequest());
|
|
|
|
|
|
|
|
|
|
assertEquals(HttpStatus.OK, result.getStatusCode());
|
|
|
|
|
assertEquals(validation, result.getBody().getData());
|
|
|
|
|
verify(service).validate(any(NewProductSurveyStepTwoValidationRequest.class), any(JwtUser.class));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
void validateStepThreeUsesTheAuthenticatedStudentAndReturnsTheValidationResult() {
|
|
|
|
|
StudentTrainingAnswerController controller = new StudentTrainingAnswerController();
|
|
|
|
|
NewProductSurveyStepThreeService service = mock(NewProductSurveyStepThreeService.class);
|
|
|
|
|
ReflectionTestUtils.setField(controller, "newProductSurveyStepThreeService", service);
|
|
|
|
|
NewProductSurveyStepThreeValidationResult validation = new NewProductSurveyStepThreeValidationResult();
|
|
|
|
|
validation.setValid(true);
|
|
|
|
|
when(service.validate(any(NewProductSurveyStepThreeValidationRequest.class), any(JwtUser.class))).thenReturn(validation);
|
|
|
|
|
|
|
|
|
|
NewProductSurveyStepThreeValidationRequest answer = new NewProductSurveyStepThreeValidationRequest();
|
|
|
|
|
ResultEntity<NewProductSurveyStepThreeValidationResult> result = controller.validateNewProductSurveyStepThree(answer, authenticatedStudentRequest());
|
|
|
|
|
|
|
|
|
|
assertEquals(HttpStatus.OK, result.getStatusCode());
|
|
|
|
|
assertEquals(validation, result.getBody().getData());
|
|
|
|
|
verify(service).validate(any(NewProductSurveyStepThreeValidationRequest.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;
|
|
|
|
|
}
|
|
|
|
|
}
|