|
|
|
|
@ -34,6 +34,17 @@ class MarketOpportunitySelectionStepTwoServiceImplTest {
|
|
|
|
|
assertThrows(ServiceException.class, () -> service.validate(completedRequest(), student()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
void validateRejectsDimensionWeightsWhenAnEstablishedIdIsMissingOrReplacedByUnknownId() {
|
|
|
|
|
MarketOpportunitySelectionStepTwoValidationRequest missing = completedRequest();
|
|
|
|
|
missing.getDimensionWeights().get(missing.getDimensionWeights().size() - 1).setId("online-merchants");
|
|
|
|
|
assertThrows(ServiceException.class, () -> serviceWithStepOne().validate(missing, student()));
|
|
|
|
|
|
|
|
|
|
MarketOpportunitySelectionStepTwoValidationRequest unknown = completedRequest();
|
|
|
|
|
unknown.getDimensionWeights().get(unknown.getDimensionWeights().size() - 1).setId("unknown-indicator");
|
|
|
|
|
assertThrows(ServiceException.class, () -> serviceWithStepOne().validate(unknown, student()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private MarketOpportunitySelectionStepTwoServiceImpl serviceWithStepOne() { MarketOpportunitySelectionStepTwoServiceImpl service = new MarketOpportunitySelectionStepTwoServiceImpl(); StudentTrainingAnswerService answers = mock(StudentTrainingAnswerService.class); StudentTrainingAnswer answer = new StudentTrainingAnswer(); answer.setStep1Answer("{\"answers\":{\"search-count\":\"市场规模\",\"transaction-amount\":\"市场规模\",\"transaction-growth\":\"市场潜力\",\"category-transaction-growth\":\"市场潜力\",\"demand-supply-ratio\":\"竞争强度\",\"online-products\":\"竞争强度\",\"online-merchants\":\"竞争强度\",\"organic-traffic-ratio\":\"运营难度\",\"return-rate\":\"运营难度\"}}"); when(answers.get(anyString(), any(), any(JwtUser.class))).thenReturn(answer); ReflectionTestUtils.setField(service, "studentTrainingAnswerService", answers); return service; }
|
|
|
|
|
private MarketOpportunitySelectionStepTwoValidationRequest completedRequest() { MarketOpportunitySelectionStepTwoValidationRequest request = new MarketOpportunitySelectionStepTwoValidationRequest(); ArrayList<MarketOpportunitySelectionStepTwoValidationRequest.PrimaryWeight> primary = new ArrayList<>(); Arrays.asList("市场规模", "市场潜力", "竞争强度", "运营难度").forEach(group -> { MarketOpportunitySelectionStepTwoValidationRequest.PrimaryWeight item = new MarketOpportunitySelectionStepTwoValidationRequest.PrimaryWeight(); item.setGroup(group); item.setWeight(25); primary.add(item); }); ArrayList<MarketOpportunitySelectionStepTwoValidationRequest.Weight> dimensions = new ArrayList<>(); String[] ids = {"search-count", "transaction-amount", "transaction-growth", "category-transaction-growth", "demand-supply-ratio", "online-products", "online-merchants", "organic-traffic-ratio", "return-rate"}; int[] values = {50, 50, 50, 50, 34, 33, 33, 50, 50}; for (int i = 0; i < ids.length; i++) { MarketOpportunitySelectionStepTwoValidationRequest.Weight item = new MarketOpportunitySelectionStepTwoValidationRequest.Weight(); item.setId(ids[i]); item.setWeight(values[i]); dimensions.add(item); } request.setPrimaryWeights(primary); request.setDimensionWeights(dimensions); return request; }
|
|
|
|
|
private JwtUser student() { JwtUser user = new JwtUser(); user.setUserId("stu-1"); user.setRoleId(4); return user; }
|
|
|
|
|
|