use of io.cucumber.plugin.Plugin in project cucumber-jvm by cucumber.
the class RuntimeTest method generates_events_for_glue_and_scenario_scoped_glue.
@Test
void generates_events_for_glue_and_scenario_scoped_glue() {
final Feature feature = TestFeatureParser.parse("test.feature", "" + "Feature: feature name\n" + " Scenario: Run a scenario once\n" + " Given global scoped\n" + " And scenario scoped\n" + " Scenario: Then do it again\n" + " Given global scoped\n" + " And scenario scoped\n" + "");
final List<StepDefinition> stepDefinedEvents = new ArrayList<>();
Plugin eventListener = (EventListener) publisher -> publisher.registerHandlerFor(StepDefinedEvent.class, (StepDefinedEvent event) -> {
stepDefinedEvents.add(event.getStepDefinition());
});
final MockedStepDefinition mockedStepDefinition = new MockedStepDefinition();
final MockedScenarioScopedStepDefinition mockedScenarioScopedStepDefinition = new MockedScenarioScopedStepDefinition();
BackendSupplier backendSupplier = new TestBackendSupplier() {
private Glue glue;
@Override
public void loadGlue(Glue glue, List<URI> gluePaths) {
this.glue = glue;
glue.addStepDefinition(mockedStepDefinition);
}
@Override
public void buildWorld() {
glue.addStepDefinition(mockedScenarioScopedStepDefinition);
}
};
FeatureSupplier featureSupplier = new StubFeatureSupplier(feature);
Runtime.builder().withBackendSupplier(backendSupplier).withAdditionalPlugins(eventListener).withEventBus(new TimeServiceEventBus(new StepDurationTimeService(ZERO), UUID::randomUUID)).withFeatureSupplier(featureSupplier).build().run();
assertThat(stepDefinedEvents.get(0).getPattern(), is(mockedStepDefinition.getPattern()));
assertThat(stepDefinedEvents.get(1).getPattern(), is(mockedScenarioScopedStepDefinition.getPattern()));
// Twice, once for each scenario
assertThat(stepDefinedEvents.get(2).getPattern(), is(mockedStepDefinition.getPattern()));
assertThat(stepDefinedEvents.get(3).getPattern(), is(mockedScenarioScopedStepDefinition.getPattern()));
assertThat(stepDefinedEvents.size(), is(4));
}
use of io.cucumber.plugin.Plugin in project cucumber-jvm by cucumber.
the class Plugins method createPlugins.
private List<Plugin> createPlugins() {
List<Plugin> plugins = new ArrayList<>();
if (!pluginNamesInstantiated) {
for (Options.Plugin pluginOption : pluginOptions.plugins()) {
Plugin plugin = pluginFactory.create(pluginOption);
addPlugin(plugins, plugin);
}
pluginNamesInstantiated = true;
}
return plugins;
}
use of io.cucumber.plugin.Plugin in project cucumber-jvm by cucumber.
the class CucumberOptionsAnnotationParserTest method inherit_plugin_from_baseclass.
@Test
void inherit_plugin_from_baseclass() {
RuntimeOptions runtimeOptions = parser().parse(SubClassWithFormatter.class).build();
Plugins plugins = new Plugins(new PluginFactory(), runtimeOptions);
plugins.setEventBusOnEventListenerPlugins(new TimeServiceEventBus(Clock.systemUTC(), UUID::randomUUID));
List<Plugin> pluginList = plugins.getPlugins();
assertAll(() -> assertPluginExists(pluginList, HtmlFormatter.class.getName()), () -> assertPluginExists(pluginList, PrettyFormatter.class.getName()));
}
use of io.cucumber.plugin.Plugin in project cucumber-jvm by cucumber.
the class CucumberOptionsAnnotationParserTest method assertPluginExists.
private void assertPluginExists(List<Plugin> plugins, String pluginName) {
boolean found = false;
for (Plugin plugin : plugins) {
if (plugin.getClass().getName().equals(pluginName)) {
found = true;
break;
}
}
assertThat(pluginName + " not found among the plugins", found, is(equalTo(true)));
}
Aggregations