Search in sources :

Example 1 with StepDefinition

use of io.cucumber.plugin.event.StepDefinition 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));
}
Also used : TestBackendSupplier(io.cucumber.core.runner.TestBackendSupplier) ArrayList(java.util.ArrayList) Feature(io.cucumber.core.gherkin.Feature) TestBackendSupplier(io.cucumber.core.runner.TestBackendSupplier) Glue(io.cucumber.core.backend.Glue) StepDefinedEvent(io.cucumber.plugin.event.StepDefinedEvent) StubStepDefinition(io.cucumber.core.backend.StubStepDefinition) StepDefinition(io.cucumber.plugin.event.StepDefinition) Collections.singletonList(java.util.Collections.singletonList) Arrays.asList(java.util.Arrays.asList) Collections.emptyList(java.util.Collections.emptyList) List(java.util.List) ArrayList(java.util.ArrayList) ConcurrentEventListener(io.cucumber.plugin.ConcurrentEventListener) EventListener(io.cucumber.plugin.EventListener) UUID(java.util.UUID) StepDurationTimeService(io.cucumber.core.runner.StepDurationTimeService) Plugin(io.cucumber.plugin.Plugin) Test(org.junit.jupiter.api.Test)

Aggregations

Glue (io.cucumber.core.backend.Glue)1 StubStepDefinition (io.cucumber.core.backend.StubStepDefinition)1 Feature (io.cucumber.core.gherkin.Feature)1 StepDurationTimeService (io.cucumber.core.runner.StepDurationTimeService)1 TestBackendSupplier (io.cucumber.core.runner.TestBackendSupplier)1 ConcurrentEventListener (io.cucumber.plugin.ConcurrentEventListener)1 EventListener (io.cucumber.plugin.EventListener)1 Plugin (io.cucumber.plugin.Plugin)1 StepDefinedEvent (io.cucumber.plugin.event.StepDefinedEvent)1 StepDefinition (io.cucumber.plugin.event.StepDefinition)1 ArrayList (java.util.ArrayList)1 Arrays.asList (java.util.Arrays.asList)1 Collections.emptyList (java.util.Collections.emptyList)1 Collections.singletonList (java.util.Collections.singletonList)1 List (java.util.List)1 UUID (java.util.UUID)1 Test (org.junit.jupiter.api.Test)1