You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

229 lines
17 KiB
Java

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.MarketOpportunitySelectionStepOneCheckRequest;
import com.sztzjy.linkCommerce.entity.dto.MarketOpportunitySelectionStepOneCheckResult;
import com.sztzjy.linkCommerce.entity.dto.MarketOpportunitySelectionStepTwoValidationRequest;
import com.sztzjy.linkCommerce.entity.dto.MarketOpportunitySelectionStepTwoValidationResult;
import com.sztzjy.linkCommerce.entity.dto.MarketOpportunitySelectionStepThreeValidationRequest;
import com.sztzjy.linkCommerce.entity.dto.MarketOpportunitySelectionStepThreeValidationResult;
import com.sztzjy.linkCommerce.entity.dto.MarketOpportunitySelectionStepFourValidationRequest;
import com.sztzjy.linkCommerce.entity.dto.MarketOpportunitySelectionStepFourValidationResult;
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.entity.dto.NewProductSurveyStepFourValidationRequest;
import com.sztzjy.linkCommerce.entity.dto.NewProductSurveyStepFourValidationResult;
import com.sztzjy.linkCommerce.entity.dto.ProductDevelopmentFactorsStepOneValidationRequest;
import com.sztzjy.linkCommerce.entity.dto.ProductDevelopmentFactorsStepOneValidationResult;
import com.sztzjy.linkCommerce.entity.dto.ProductDevelopmentFactorsStepTwoValidationRequest;
import com.sztzjy.linkCommerce.entity.dto.ProductDevelopmentFactorsStepTwoValidationResult;
import com.sztzjy.linkCommerce.entity.dto.ProductDevelopmentFactorsStepThreeValidationRequest;
import com.sztzjy.linkCommerce.entity.dto.ProductDevelopmentFactorsStepThreeValidationResult;
import com.sztzjy.linkCommerce.service.NewProductSurveyStepOneService;
import com.sztzjy.linkCommerce.service.MarketOpportunitySelectionStepOneService;
import com.sztzjy.linkCommerce.service.MarketOpportunitySelectionStepTwoService;
import com.sztzjy.linkCommerce.service.MarketOpportunitySelectionStepThreeService;
import com.sztzjy.linkCommerce.service.MarketOpportunitySelectionStepFourService;
import com.sztzjy.linkCommerce.service.NewProductSurveyStepTwoService;
import com.sztzjy.linkCommerce.service.NewProductSurveyStepThreeService;
import com.sztzjy.linkCommerce.service.NewProductSurveyStepFourService;
import com.sztzjy.linkCommerce.service.ProductDevelopmentFactorsStepOneService;
import com.sztzjy.linkCommerce.service.ProductDevelopmentFactorsStepTwoService;
import com.sztzjy.linkCommerce.service.ProductDevelopmentFactorsStepThreeService;
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 checkMarketOpportunitySelectionStepOneUsesTheAuthenticatedStudentAndReturnsTheGrade() {
StudentTrainingAnswerController controller = new StudentTrainingAnswerController();
MarketOpportunitySelectionStepOneService service = mock(MarketOpportunitySelectionStepOneService.class);
ReflectionTestUtils.setField(controller, "marketOpportunitySelectionStepOneService", service);
MarketOpportunitySelectionStepOneCheckResult grade = new MarketOpportunitySelectionStepOneCheckResult(); grade.setAllCorrect(true);
when(service.check(any(MarketOpportunitySelectionStepOneCheckRequest.class), any(JwtUser.class))).thenReturn(grade);
ResultEntity<MarketOpportunitySelectionStepOneCheckResult> result = controller.checkMarketOpportunitySelectionStepOne(new MarketOpportunitySelectionStepOneCheckRequest(), authenticatedStudentRequest());
assertEquals(HttpStatus.OK, result.getStatusCode()); assertEquals(grade, result.getBody().getData());
verify(service).check(any(MarketOpportunitySelectionStepOneCheckRequest.class), any(JwtUser.class));
}
@Test
void validateMarketOpportunitySelectionStepTwoUsesTheAuthenticatedStudentAndReturnsTheValidationResult() {
StudentTrainingAnswerController controller = new StudentTrainingAnswerController();
MarketOpportunitySelectionStepTwoService service = mock(MarketOpportunitySelectionStepTwoService.class);
ReflectionTestUtils.setField(controller, "marketOpportunitySelectionStepTwoService", service);
MarketOpportunitySelectionStepTwoValidationResult validation = new MarketOpportunitySelectionStepTwoValidationResult(); validation.setValid(true);
when(service.validate(any(MarketOpportunitySelectionStepTwoValidationRequest.class), any(JwtUser.class))).thenReturn(validation);
ResultEntity<MarketOpportunitySelectionStepTwoValidationResult> result = controller.validateMarketOpportunitySelectionStepTwo(new MarketOpportunitySelectionStepTwoValidationRequest(), authenticatedStudentRequest());
assertEquals(HttpStatus.OK, result.getStatusCode()); assertEquals(validation, result.getBody().getData());
verify(service).validate(any(MarketOpportunitySelectionStepTwoValidationRequest.class), any(JwtUser.class));
}
@Test
void validateMarketOpportunitySelectionStepThreeUsesTheAuthenticatedStudentAndReturnsTheValidationResult() {
StudentTrainingAnswerController controller = new StudentTrainingAnswerController();
MarketOpportunitySelectionStepThreeService service = mock(MarketOpportunitySelectionStepThreeService.class);
ReflectionTestUtils.setField(controller, "marketOpportunitySelectionStepThreeService", service);
MarketOpportunitySelectionStepThreeValidationResult validation = new MarketOpportunitySelectionStepThreeValidationResult(); validation.setValid(true);
when(service.validate(any(MarketOpportunitySelectionStepThreeValidationRequest.class), any(JwtUser.class))).thenReturn(validation);
ResultEntity<MarketOpportunitySelectionStepThreeValidationResult> result = controller.validateMarketOpportunitySelectionStepThree(new MarketOpportunitySelectionStepThreeValidationRequest(), authenticatedStudentRequest());
assertEquals(HttpStatus.OK, result.getStatusCode()); assertEquals(validation, result.getBody().getData());
verify(service).validate(any(MarketOpportunitySelectionStepThreeValidationRequest.class), any(JwtUser.class));
}
@Test
void validateMarketOpportunitySelectionStepFourUsesTheAuthenticatedStudentAndReturnsTheValidationResult() {
StudentTrainingAnswerController controller = new StudentTrainingAnswerController();
MarketOpportunitySelectionStepFourService service = mock(MarketOpportunitySelectionStepFourService.class);
ReflectionTestUtils.setField(controller, "marketOpportunitySelectionStepFourService", service);
MarketOpportunitySelectionStepFourValidationResult validation = new MarketOpportunitySelectionStepFourValidationResult(); validation.setValid(true);
when(service.validate(any(MarketOpportunitySelectionStepFourValidationRequest.class), any(JwtUser.class))).thenReturn(validation);
ResultEntity<MarketOpportunitySelectionStepFourValidationResult> result = controller.validateMarketOpportunitySelectionStepFour(new MarketOpportunitySelectionStepFourValidationRequest(), authenticatedStudentRequest());
assertEquals(HttpStatus.OK, result.getStatusCode()); assertEquals(validation, result.getBody().getData());
verify(service).validate(any(MarketOpportunitySelectionStepFourValidationRequest.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));
}
@Test
void validateStepFourUsesTheAuthenticatedStudentAndReturnsTheValidationResult() {
StudentTrainingAnswerController controller = new StudentTrainingAnswerController();
NewProductSurveyStepFourService service = mock(NewProductSurveyStepFourService.class);
ReflectionTestUtils.setField(controller, "newProductSurveyStepFourService", service);
NewProductSurveyStepFourValidationResult validation = new NewProductSurveyStepFourValidationResult();
validation.setValid(true);
when(service.validate(any(NewProductSurveyStepFourValidationRequest.class), any(JwtUser.class))).thenReturn(validation);
NewProductSurveyStepFourValidationRequest answer = new NewProductSurveyStepFourValidationRequest();
ResultEntity<NewProductSurveyStepFourValidationResult> result = controller.validateNewProductSurveyStepFour(answer, authenticatedStudentRequest());
assertEquals(HttpStatus.OK, result.getStatusCode());
assertEquals(validation, result.getBody().getData());
verify(service).validate(any(NewProductSurveyStepFourValidationRequest.class), any(JwtUser.class));
}
@Test
void validateProductDevelopmentFactorsStepOneUsesTheAuthenticatedStudentAndReturnsTheValidationResult() {
StudentTrainingAnswerController controller = new StudentTrainingAnswerController();
ProductDevelopmentFactorsStepOneService service = mock(ProductDevelopmentFactorsStepOneService.class);
ReflectionTestUtils.setField(controller, "productDevelopmentFactorsStepOneService", service);
ProductDevelopmentFactorsStepOneValidationResult validation = new ProductDevelopmentFactorsStepOneValidationResult();
validation.setValid(true);
when(service.validate(any(ProductDevelopmentFactorsStepOneValidationRequest.class), any(JwtUser.class))).thenReturn(validation);
ProductDevelopmentFactorsStepOneValidationRequest answer = new ProductDevelopmentFactorsStepOneValidationRequest();
ResultEntity<ProductDevelopmentFactorsStepOneValidationResult> result = controller
.validateProductDevelopmentFactorsStepOne(answer, authenticatedStudentRequest());
assertEquals(HttpStatus.OK, result.getStatusCode());
assertEquals(validation, result.getBody().getData());
verify(service).validate(any(ProductDevelopmentFactorsStepOneValidationRequest.class), any(JwtUser.class));
}
@Test
void validateProductDevelopmentFactorsStepTwoUsesTheAuthenticatedStudentAndReturnsTheValidationResult() {
StudentTrainingAnswerController controller = new StudentTrainingAnswerController();
ProductDevelopmentFactorsStepTwoService service = mock(ProductDevelopmentFactorsStepTwoService.class);
ReflectionTestUtils.setField(controller, "productDevelopmentFactorsStepTwoService", service);
ProductDevelopmentFactorsStepTwoValidationResult validation = new ProductDevelopmentFactorsStepTwoValidationResult(); validation.setValid(true);
when(service.validate(any(ProductDevelopmentFactorsStepTwoValidationRequest.class), any(JwtUser.class))).thenReturn(validation);
ResultEntity<ProductDevelopmentFactorsStepTwoValidationResult> result = controller.validateProductDevelopmentFactorsStepTwo(new ProductDevelopmentFactorsStepTwoValidationRequest(), authenticatedStudentRequest());
assertEquals(HttpStatus.OK, result.getStatusCode()); assertEquals(validation, result.getBody().getData());
verify(service).validate(any(ProductDevelopmentFactorsStepTwoValidationRequest.class), any(JwtUser.class));
}
@Test
void validateProductDevelopmentFactorsStepThreeUsesTheAuthenticatedStudentAndReturnsTheValidationResult() {
StudentTrainingAnswerController controller = new StudentTrainingAnswerController();
ProductDevelopmentFactorsStepThreeService service = mock(ProductDevelopmentFactorsStepThreeService.class);
ReflectionTestUtils.setField(controller, "productDevelopmentFactorsStepThreeService", service);
ProductDevelopmentFactorsStepThreeValidationResult validation = new ProductDevelopmentFactorsStepThreeValidationResult();
validation.setValid(true);
when(service.validate(any(ProductDevelopmentFactorsStepThreeValidationRequest.class), any(JwtUser.class))).thenReturn(validation);
ResultEntity<ProductDevelopmentFactorsStepThreeValidationResult> result = controller
.validateProductDevelopmentFactorsStepThree(new ProductDevelopmentFactorsStepThreeValidationRequest(), authenticatedStudentRequest());
assertEquals(HttpStatus.OK, result.getStatusCode());
assertEquals(validation, result.getBody().getData());
verify(service).validate(any(ProductDevelopmentFactorsStepThreeValidationRequest.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;
}
}