Actor newActor(String actorName) { Actor actor = new Actor(actorName, this); saveModelElement(actor, nameToActorMap); return actor; }
private List<Actor> userAndSystem(Actor userActor) { return Arrays.asList(userActor, userActor.getModel().getSystemActor()); }
/** * Returns the steps this actor is connected with, for the specified * use case. * * @param useCase * the use case to query for steps the actor is connected with * @return the steps the actor is connected with */ public List<Step> getStepsOf(UseCase useCase) { Objects.requireNonNull(useCase); List<Step> steps = getModifiableStepsOf(useCase); return Collections.unmodifiableList(steps); }
@Test public void createsTwoActorsWithSingleUseCaseStep() { Actor anotherActor = modelBuilder.actor("Another Actor"); UseCasePart useCasePart = modelBuilder.useCase(USE_CASE); Model model = useCasePart.basicFlow() .step(CUSTOMER_ENTERS_TEXT).as(customer, anotherActor).user(EntersText.class).system(displaysEnteredText()) .build(); Actor customerActor = model.findActor(customer.getName()); List<Step> steps = customerActor.getStepsOf(useCasePart.getUseCase()); Step step = steps.get(0); assertEquals(CUSTOMER_ENTERS_TEXT, step.getName()); assertEquals(CUSTOMER_ENTERS_TEXT, step.toString()); assertEquals(USE_CASE, step.getUseCase().getName()); assertEquals(customer, step.getActors()[0]); steps = anotherActor.getStepsOf(useCasePart.getUseCase()); step = steps.get(0); assertEquals(CUSTOMER_ENTERS_TEXT, step.getName()); assertEquals(anotherActor, step.getActors()[1]); }
@SuppressWarnings("rawtypes") @Override public Object exec(List arguments) throws TemplateModelException { if (arguments.size() != 1) { throw new TemplateModelException("Wrong number of arguments. Must be 1."); } String userPartOfStep = ""; Step step = getStepFromFreemarker(arguments.get(0)); if (hasUser(step)) { String userActorName = getUserActor(step).getName(); String wordsOfUserEventClassName = getLowerCaseWordsOfClassName(step.getEventClass()); userPartOfStep = userActorName + " " + wordsOfUserEventClassName + USER_POSTFIX; } return new SimpleScalar(userPartOfStep); }
private void connectActorsToThisStep(Step useCaseStep, Actor[] actors) { for (Actor actor : actors) { actor.newStep(useCaseStep); } }
@Test public void createsSingleActorWithSingleUseCase() { UseCasePart useCasePart = modelBuilder.useCase(USE_CASE); Model model = useCasePart.basicFlow() .step(CUSTOMER_ENTERS_TEXT).as(customer).user(EntersText.class).system(displaysEnteredText()) .build(); Actor customerActor = model.findActor(CUSTOMER); Set<UseCase> useCases = customerActor.getUseCases(); assertEquals(1, useCases.size()); UseCase actualUseCase = useCases.iterator().next(); assertEquals(USE_CASE, actualUseCase.getName()); }
@Test public void createsSingleActorWithSingleUseCaseStep() { UseCasePart useCasePart = modelBuilder.useCase(USE_CASE); Model model = useCasePart.basicFlow() .step(CUSTOMER_ENTERS_TEXT).as(customer).user(EntersText.class).system(displaysEnteredText()) .build(); Actor customerActor = model.findActor(customer.getName()); List<Step> steps = customerActor.getStepsOf(useCasePart.getUseCase()); Step step = steps.get(0); assertEquals(CUSTOMER_ENTERS_TEXT, step.getName()); assertEquals(CUSTOMER_ENTERS_TEXT, step.toString()); assertEquals(USE_CASE, step.getUseCase().getName()); assertEquals(customer, step.getActors()[0]); }
private String getSystemPartOfStep(Step step) { String systemPartOfStep = ""; if (hasSystemReaction(step)) { String on = getOn(step); String systemActorName = getSystemActor(step).getName(); String wordsOfSystemReactionClassName = getWordsOfSystemReactionClassName(step); String stepNameOrIncludedUseCase = getStepNameOrIncludedUseCase(step); systemPartOfStep = on + systemActorName + " " + wordsOfSystemReactionClassName + stepNameOrIncludedUseCase + SYSTEM_POSTFIX; } return systemPartOfStep; }
@Test public void createsSingleStepThatPerformsSystemReactionAutomaticallyForSpecificActor() { UseCasePart useCasePart = modelBuilder.useCase(USE_CASE); Model model = useCasePart.basicFlow() .step(SYSTEM_DISPLAYS_TEXT).as(customer).system(displaysConstantText()) .build(); Collection<Step> steps = useCasePart.getUseCase().getSteps(); assertEquals(1, steps.size()); Step step = steps.iterator().next(); assertEquals(SYSTEM_DISPLAYS_TEXT, step.getName()); assertEquals(USE_CASE, step.getUseCase().getName()); assertTrue(model.hasActor(customer.getName())); assertEquals(customer, step.getActors()[0]); }
void newStep(Step step) { Objects.requireNonNull(step.getUseCase()); Objects.requireNonNull(step); List<Step> steps = getModifiableStepsOf(step.getUseCase()); steps.add(step); }