Search in sources :

Example 1 with Backend

use of io.cucumber.core.backend.Backend in project cucumber-jvm by cucumber.

the class HookTest method hook_throws_exception_with_name_when_tag_expression_is_invalid.

@Test
void hook_throws_exception_with_name_when_tag_expression_is_invalid() {
    Backend backend = mock(Backend.class);
    when(backend.getSnippet()).thenReturn(new TestSnippet());
    ObjectFactory objectFactory = mock(ObjectFactory.class);
    final HookDefinition hook = mock(HookDefinition.class);
    when(hook.getLocation()).thenReturn("hook-location");
    when(hook.getTagExpression()).thenReturn("(");
    doAnswer(invocation -> {
        Glue glue = invocation.getArgument(0);
        glue.addBeforeHook(hook);
        return null;
    }).when(backend).loadGlue(any(Glue.class), ArgumentMatchers.anyList());
    RuntimeException e = assertThrows(RuntimeException.class, () -> new Runner(bus, Collections.singleton(backend), objectFactory, runtimeOptions));
    assertThat(e.getMessage(), is("Invalid tag expression at 'hook-location'"));
}
Also used : Backend(io.cucumber.core.backend.Backend) ObjectFactory(io.cucumber.core.backend.ObjectFactory) Glue(io.cucumber.core.backend.Glue) TestSnippet(io.cucumber.core.snippets.TestSnippet) HookDefinition(io.cucumber.core.backend.HookDefinition) Test(org.junit.jupiter.api.Test)

Example 2 with Backend

use of io.cucumber.core.backend.Backend in project cucumber-jvm by cucumber.

the class RunnerTest method hooks_execute_inside_world_and_around_world.

@Test
void hooks_execute_inside_world_and_around_world() {
    StaticHookDefinition beforeAllHook = createStaticHook();
    StaticHookDefinition afterAllHook = createStaticHook();
    HookDefinition beforeHook = createHook();
    HookDefinition afterHook = createHook();
    Backend backend = mock(Backend.class);
    when(backend.getSnippet()).thenReturn(new TestSnippet());
    ObjectFactory objectFactory = mock(ObjectFactory.class);
    doAnswer(invocation -> {
        Glue glue = invocation.getArgument(0);
        glue.addBeforeAllHook(beforeAllHook);
        glue.addAfterAllHook(afterAllHook);
        glue.addBeforeHook(beforeHook);
        glue.addAfterHook(afterHook);
        return null;
    }).when(backend).loadGlue(any(Glue.class), ArgumentMatchers.anyList());
    Runner runner = new Runner(bus, singletonList(backend), objectFactory, runtimeOptions);
    runner.runBeforeAllHooks();
    runner.runPickle(createPicklesWithSteps());
    runner.runAfterAllHooks();
    InOrder inOrder = inOrder(beforeAllHook, afterAllHook, beforeHook, afterHook, backend);
    inOrder.verify(beforeAllHook).execute();
    inOrder.verify(backend).buildWorld();
    inOrder.verify(beforeHook).execute(any(TestCaseState.class));
    inOrder.verify(afterHook).execute(any(TestCaseState.class));
    inOrder.verify(backend).disposeWorld();
    inOrder.verify(afterAllHook).execute();
}
Also used : Backend(io.cucumber.core.backend.Backend) InOrder(org.mockito.InOrder) ObjectFactory(io.cucumber.core.backend.ObjectFactory) Glue(io.cucumber.core.backend.Glue) StaticHookDefinition(io.cucumber.core.backend.StaticHookDefinition) TestSnippet(io.cucumber.core.snippets.TestSnippet) StaticHookDefinition(io.cucumber.core.backend.StaticHookDefinition) HookDefinition(io.cucumber.core.backend.HookDefinition) Test(org.junit.jupiter.api.Test)

Example 3 with Backend

use of io.cucumber.core.backend.Backend in project cucumber-jvm by cucumber.

the class RunnerTest method backends_are_asked_for_snippets_for_undefined_steps.

@Test
void backends_are_asked_for_snippets_for_undefined_steps() {
    Backend backend = mock(Backend.class);
    when(backend.getSnippet()).thenReturn(new TestSnippet());
    ObjectFactory objectFactory = mock(ObjectFactory.class);
    Runner runner = new Runner(bus, singletonList(backend), objectFactory, runtimeOptions);
    runner.runPickle(createPicklesWithSteps());
    verify(backend).getSnippet();
}
Also used : Backend(io.cucumber.core.backend.Backend) ObjectFactory(io.cucumber.core.backend.ObjectFactory) TestSnippet(io.cucumber.core.snippets.TestSnippet) Test(org.junit.jupiter.api.Test)

Example 4 with Backend

use of io.cucumber.core.backend.Backend in project cucumber-jvm by cucumber.

the class BackendServiceLoader method loadBackends.

private Collection<? extends Backend> loadBackends(Iterable<BackendProviderService> serviceLoader) {
    List<Backend> backends = new ArrayList<>();
    for (BackendProviderService backendProviderService : serviceLoader) {
        ObjectFactory objectFactory = objectFactorySupplier.get();
        backends.add(backendProviderService.create(objectFactory, objectFactory, classLoaderSupplier));
    }
    return backends;
}
Also used : Backend(io.cucumber.core.backend.Backend) ObjectFactory(io.cucumber.core.backend.ObjectFactory) ArrayList(java.util.ArrayList) BackendProviderService(io.cucumber.core.backend.BackendProviderService)

Example 5 with Backend

use of io.cucumber.core.backend.Backend in project cucumber-jvm by cucumber.

the class HookTest method after_hooks_execute_before_objects_are_disposed.

/**
 * Test for
 * <a href="https://github.com/cucumber/cucumber-jvm/issues/23">#23</a>.
 */
@Test
void after_hooks_execute_before_objects_are_disposed() {
    Backend backend = mock(Backend.class);
    when(backend.getSnippet()).thenReturn(new TestSnippet());
    ObjectFactory objectFactory = mock(ObjectFactory.class);
    final HookDefinition hook = mock(HookDefinition.class);
    when(hook.getLocation()).thenReturn("hook-location");
    when(hook.getTagExpression()).thenReturn("");
    doAnswer(invocation -> {
        Glue glue = invocation.getArgument(0);
        glue.addBeforeHook(hook);
        return null;
    }).when(backend).loadGlue(any(Glue.class), ArgumentMatchers.anyList());
    Runner runner = new Runner(bus, Collections.singleton(backend), objectFactory, runtimeOptions);
    runner.runPickle(pickle);
    InOrder inOrder = inOrder(hook, backend);
    inOrder.verify(backend).buildWorld();
    inOrder.verify(hook).execute(ArgumentMatchers.any());
    inOrder.verify(backend).disposeWorld();
}
Also used : Backend(io.cucumber.core.backend.Backend) InOrder(org.mockito.InOrder) ObjectFactory(io.cucumber.core.backend.ObjectFactory) Glue(io.cucumber.core.backend.Glue) TestSnippet(io.cucumber.core.snippets.TestSnippet) HookDefinition(io.cucumber.core.backend.HookDefinition) Test(org.junit.jupiter.api.Test)

Aggregations

Backend (io.cucumber.core.backend.Backend)5 ObjectFactory (io.cucumber.core.backend.ObjectFactory)5 TestSnippet (io.cucumber.core.snippets.TestSnippet)4 Test (org.junit.jupiter.api.Test)4 Glue (io.cucumber.core.backend.Glue)3 HookDefinition (io.cucumber.core.backend.HookDefinition)3 InOrder (org.mockito.InOrder)2 BackendProviderService (io.cucumber.core.backend.BackendProviderService)1 StaticHookDefinition (io.cucumber.core.backend.StaticHookDefinition)1 ArrayList (java.util.ArrayList)1