This commit is contained in:
2026-08-22 10:20:38 +08:00
parent af8724dd70
commit 1f2c4cd8bb
7 changed files with 179 additions and 13 deletions
@@ -13,6 +13,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import java.util.Arrays;
import java.util.Set;
@@ -66,18 +67,24 @@ class Phase4BrowserApiBoundaryTest {
}
@Test
void smartDispatchIsIndependentlyEnabledWithOnlyCandidateAndPreArrangeEndpoints() {
void smartDispatchOnlyExposesCandidatePreArrangeAndDraftLifecycleEndpoints() {
ConditionalOnProperty condition = SmartDispatchController.class.getAnnotation(ConditionalOnProperty.class);
assertTrue(condition != null);
assertTrue(Arrays.asList(condition.name()).contains("lastleg.smart-dispatch-api.enabled"));
assertFalse(condition.matchIfMissing());
assertTrue(Arrays.stream(SmartDispatchController.class.getDeclaredMethods())
.filter(method -> method.isAnnotationPresent(GetMapping.class)).count() == 1);
.filter(method -> method.isAnnotationPresent(GetMapping.class)).count() == 2);
assertTrue(Arrays.stream(SmartDispatchController.class.getDeclaredMethods())
.filter(method -> method.isAnnotationPresent(PostMapping.class)).count() == 1);
.filter(method -> method.isAnnotationPresent(PostMapping.class)).count() == 6);
assertTrue(Arrays.stream(SmartDispatchController.class.getDeclaredMethods())
.filter(method -> method.isAnnotationPresent(DeleteMapping.class)).count() == 1);
assertTrue(Arrays.stream(SmartDispatchController.class.getDeclaredMethods())
.filter(method -> method.isAnnotationPresent(DeleteMapping.class))
.allMatch(method -> Arrays.asList(method.getAnnotation(DeleteMapping.class).value())
.contains("/drafts/{draftToken}/containers/{containerId}")));
assertFalse(Arrays.stream(SmartDispatchController.class.getDeclaredMethods())
.flatMap(method -> Arrays.stream(method.getAnnotations()))
.anyMatch(annotation -> Set.of("PutMapping", "DeleteMapping", "PatchMapping")
.anyMatch(annotation -> Set.of("PutMapping", "PatchMapping")
.contains(annotation.annotationType().getSimpleName())));
}