public static Actor getUserActor(Step step) { return step.getModel().getUserActor(); }
/** * Configures the runner to use the specified model. After you called * this method, the runner will accept events via {@link #reactTo(Object)}. * * <p> * As a side effect, this method immediately triggers "autonomous system * reactions". * * @param model * the model that defines the runner's behavior * @return the same model runner, for chaing with @see {@link #reactTo(Object...)} */ public ModelRunner run(Model model) { this.model = model; this.steps = model.getModifiableSteps(); this.includedUseCases = new LinkedList<>(); this.includeSteps = new LinkedList<>(); this.includedUseCase = null; this.includeStep = null; this.isRunning = true; Actor actor = user != null ? user : model.getUserActor(); as(actor).triggerAutonomousSystemReaction(); return this; }
StepPart(Step step, UseCasePart useCasePart, FlowPart useCaseFlowPart) { this.step = step; this.flowPart = useCaseFlowPart; this.modelBuilder = useCasePart.getModelBuilder(); this.userActor = modelBuilder.build().getUserActor(); this.systemActor = modelBuilder.build().getSystemActor(); }
@Test public void createsSingleStepThatHandlesUserCommandWithFlow() { UseCasePart useCasePart = modelBuilder.useCase(USE_CASE); Model model = useCasePart.basicFlow() .step(CUSTOMER_ENTERS_TEXT).user(EntersText.class).system(displaysEnteredText()) .build(); UseCase useCase = useCasePart.getUseCase(); assertFalse(useCase.getBasicFlow().getCondition().isPresent()); Collection<Step> steps = useCase.getSteps(); assertEquals(1, steps.size()); Step step = steps.iterator().next(); assertEquals(CUSTOMER_ENTERS_TEXT, step.getName()); assertEquals(USE_CASE, step.getUseCase().getName()); assertEquals(model.getUserActor(), step.getActors()[0]); }