package org.jbehave.examples.core.pico;
import java.util.List;
import org.jbehave.core.io.StoryFinder;
import org.jbehave.core.steps.InjectableStepsFactory;
import org.jbehave.core.steps.pico.PicoStepsFactory;
import org.jbehave.examples.core.CoreStories;
import org.jbehave.examples.core.service.TradingService;
import org.jbehave.examples.core.steps.AndSteps;
import org.jbehave.examples.core.steps.BeforeAfterSteps;
import org.jbehave.examples.core.steps.CalendarSteps;
import org.jbehave.examples.core.steps.PendingSteps;
import org.jbehave.examples.core.steps.PriorityMatchingSteps;
import org.jbehave.examples.core.steps.SandpitSteps;
import org.jbehave.examples.core.steps.SearchSteps;
import org.jbehave.examples.core.steps.TraderSteps;
import org.picocontainer.DefaultPicoContainer;
import org.picocontainer.MutablePicoContainer;
import org.picocontainer.PicoContainer;
import org.picocontainer.behaviors.Caching;
import org.picocontainer.injectors.ConstructorInjection;
import static org.jbehave.core.io.CodeLocations.codeLocationFromPath;
/**
* Run core stories using PicoStepsFactory. The textual core stories are
* exactly the same ones found in the core example. Here we are only
* concerned with using the container to compose the steps instances.
*/
public class CoreStoriesUsingPico extends CoreStories {
@Override
public InjectableStepsFactory stepsFactory() {
return new PicoStepsFactory(configuration(), createPicoContainer());
}
private PicoContainer createPicoContainer() {
MutablePicoContainer container = new DefaultPicoContainer(new Caching().wrap(new ConstructorInjection()));
container.addComponent(TradingService.class);
container.addComponent(TraderSteps.class);
container.addComponent(BeforeAfterSteps.class);
container.addComponent(AndSteps.class);
container.addComponent(CalendarSteps.class);
container.addComponent(PendingSteps.class);
container.addComponent(PriorityMatchingSteps.class);
container.addComponent(SandpitSteps.class);
container.addComponent(SearchSteps.class);
return container;
}
@Override
protected List<String> storyPaths() {
return new StoryFinder().findPaths(codeLocationFromPath("../core/src/main/java"), "**/*.story", "");
}
}