From 82a06108e87c0d0fe00a3c8b20cbf54d89be2530 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B2=85?= <907037276@qq.com> Date: Wed, 26 Aug 2026 14:18:14 +0800 Subject: [PATCH] test: cover market opportunity weight validation --- ...ketOpportunitySelectionStepTwoServiceImplTest.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/test/java/com/sztzjy/linkCommerce/service/impl/MarketOpportunitySelectionStepTwoServiceImplTest.java b/src/test/java/com/sztzjy/linkCommerce/service/impl/MarketOpportunitySelectionStepTwoServiceImplTest.java index 8696b6f..39ba992 100644 --- a/src/test/java/com/sztzjy/linkCommerce/service/impl/MarketOpportunitySelectionStepTwoServiceImplTest.java +++ b/src/test/java/com/sztzjy/linkCommerce/service/impl/MarketOpportunitySelectionStepTwoServiceImplTest.java @@ -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 primary = new ArrayList<>(); Arrays.asList("市场规模", "市场潜力", "竞争强度", "运营难度").forEach(group -> { MarketOpportunitySelectionStepTwoValidationRequest.PrimaryWeight item = new MarketOpportunitySelectionStepTwoValidationRequest.PrimaryWeight(); item.setGroup(group); item.setWeight(25); primary.add(item); }); ArrayList 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; }