Search in sources :

Example 21 with StubHookDefinition

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

the class JsonFormatterTest method should_add_step_hooks_to_step.

@Test
void should_add_step_hooks_to_step() {
    Feature feature = TestFeatureParser.parse("file:path/test.feature", "" + "Feature: Banana party\n" + "\n" + "  Scenario: Monkey eats bananas\n" + "    Given there are bananas\n" + "    When monkey arrives\n");
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    StepDurationTimeService timeService = new StepDurationTimeService(ofMillis(1));
    Runtime.builder().withFeatureSupplier(new StubFeatureSupplier(feature)).withAdditionalPlugins(timeService, new JsonFormatter(out)).withEventBus(new TimeServiceEventBus(timeService, UUID::randomUUID)).withBackendSupplier(new StubBackendSupplier(emptyList(), singletonList(new StubHookDefinition("Hooks.beforestep_hooks_1()")), asList(new StubStepDefinition("there are bananas", "StepDefs.there_are_bananas()"), new StubStepDefinition("monkey arrives", "StepDefs.monkey_arrives()")), asList(new StubHookDefinition("Hooks.afterstep_hooks_1()"), new StubHookDefinition("Hooks.afterstep_hooks_2()")), emptyList())).build().run();
    String expected = "" + "[\n" + "  {\n" + "    \"line\": 1,\n" + "    \"elements\": [\n" + "      {\n" + "        \"line\": 3,\n" + "        \"name\": \"Monkey eats bananas\",\n" + "        \"description\": \"\",\n" + "        \"id\": \"banana-party;monkey-eats-bananas\",\n" + "        \"type\": \"scenario\",\n" + "        \"keyword\": \"Scenario\",\n" + "        \"start_timestamp\": \"1970-01-01T00:00:00.000Z\",\n" + "        \"steps\": [\n" + "          {\n" + "            \"result\": {\n" + "              \"duration\": 1000000,\n" + "              \"status\": \"passed\"\n" + "            },\n" + "            \"before\": [\n" + "              {\n" + "                \"result\": {\n" + "                  \"duration\": 1000000,\n" + "                  \"status\": \"passed\"\n" + "                },\n" + "                \"match\": {\n" + "                  \"location\": \"Hooks.beforestep_hooks_1()\"\n" + "                }\n" + "              }\n" + "            ],\n" + "            \"line\": 4,\n" + "            \"name\": \"there are bananas\",\n" + "            \"match\": {\n" + "              \"location\": \"StepDefs.there_are_bananas()\"\n" + "            },\n" + "            \"after\": [\n" + "              {\n" + "                \"result\": {\n" + "                  \"duration\": 1000000,\n" + "                  \"status\": \"passed\"\n" + "                },\n" + "                \"match\": {\n" + "                  \"location\": \"Hooks.afterstep_hooks_2()\"\n" + "                }\n" + "              },\n" + "              {\n" + "                \"result\": {\n" + "                  \"duration\": 1000000,\n" + "                  \"status\": \"passed\"\n" + "                },\n" + "                \"match\": {\n" + "                  \"location\": \"Hooks.afterstep_hooks_1()\"\n" + "                }\n" + "              }\n" + "            ],\n" + "            \"keyword\": \"Given \"\n" + "          },\n" + "          {\n" + "            \"result\": {\n" + "              \"duration\": 1000000,\n" + "              \"status\": \"passed\"\n" + "            },\n" + "            \"before\": [\n" + "              {\n" + "                \"result\": {\n" + "                  \"duration\": 1000000,\n" + "                  \"status\": \"passed\"\n" + "                },\n" + "                \"match\": {\n" + "                  \"location\": \"Hooks.beforestep_hooks_1()\"\n" + "                }\n" + "              }\n" + "            ],\n" + "            \"line\": 5,\n" + "            \"name\": \"monkey arrives\",\n" + "            \"match\": {\n" + "              \"location\": \"StepDefs.monkey_arrives()\"\n" + "            },\n" + "            \"after\": [\n" + "              {\n" + "                \"result\": {\n" + "                  \"duration\": 1000000,\n" + "                  \"status\": \"passed\"\n" + "                },\n" + "                \"match\": {\n" + "                  \"location\": \"Hooks.afterstep_hooks_2()\"\n" + "                }\n" + "              },\n" + "              {\n" + "                \"result\": {\n" + "                  \"duration\": 1000000,\n" + "                  \"status\": \"passed\"\n" + "                },\n" + "                \"match\": {\n" + "                  \"location\": \"Hooks.afterstep_hooks_1()\"\n" + "                }\n" + "              }\n" + "            ],\n" + "            \"keyword\": \"When \"\n" + "          }\n" + "        ]\n" + "      }\n" + "    ],\n" + "    \"name\": \"Banana party\",\n" + "    \"description\": \"\",\n" + "    \"id\": \"banana-party\",\n" + "    \"keyword\": \"Feature\",\n" + "    \"uri\": \"file:path/test.feature\",\n" + "    \"tags\": []\n" + "  }\n" + "]";
    assertJsonEquals(expected, out);
}
Also used : TimeServiceEventBus(io.cucumber.core.runtime.TimeServiceEventBus) StubBackendSupplier(io.cucumber.core.runtime.StubBackendSupplier) StubFeatureSupplier(io.cucumber.core.runtime.StubFeatureSupplier) StubHookDefinition(io.cucumber.core.backend.StubHookDefinition) StubStepDefinition(io.cucumber.core.backend.StubStepDefinition) ByteArrayOutputStream(java.io.ByteArrayOutputStream) DocString(io.cucumber.docstring.DocString) UUID(java.util.UUID) Feature(io.cucumber.core.gherkin.Feature) StepDurationTimeService(io.cucumber.core.runner.StepDurationTimeService) Test(org.junit.jupiter.api.Test)

Example 22 with StubHookDefinition

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

the class JsonFormatterTest method should_handle_embed_with_name_from_a_hook.

@Test
void should_handle_embed_with_name_from_a_hook() {
    Feature feature = TestFeatureParser.parse("path/test.feature", "" + "Feature: Banana party\n" + "\n" + "  Scenario: Monkey eats bananas\n" + "    Given there are bananas\n");
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    StepDurationTimeService timeService = new StepDurationTimeService(ofMillis(1));
    Runtime.builder().withFeatureSupplier(new StubFeatureSupplier(feature)).withAdditionalPlugins(timeService, new JsonFormatter(out)).withEventBus(new TimeServiceEventBus(timeService, UUID::randomUUID)).withBackendSupplier(new StubBackendSupplier(singletonList(new StubHookDefinition("Hooks.before_hook_1()", testCaseState -> testCaseState.attach(new byte[] { 1, 2, 3 }, "mime-type;base64", "someEmbedding"))), singletonList(new StubStepDefinition("there are bananas", "StepDefs.there_are_bananas()")), emptyList())).build().run();
    String expected = "" + "[\n" + "  {\n" + "    \"id\": \"banana-party\",\n" + "    \"uri\": \"file:path/test.feature\",\n" + "    \"keyword\": \"Feature\",\n" + "    \"name\": \"Banana party\",\n" + "    \"line\": 1,\n" + "    \"description\": \"\",\n" + "    \"elements\": [\n" + "      {\n" + "        \"id\": \"banana-party;monkey-eats-bananas\",\n" + "        \"keyword\": \"Scenario\",\n" + "        \"start_timestamp\": \"1970-01-01T00:00:00.000Z\",\n" + "        \"name\": \"Monkey eats bananas\",\n" + "        \"line\": 3,\n" + "        \"description\": \"\",\n" + "        \"type\": \"scenario\",\n" + "        \"before\": [\n" + "          {\n" + "            \"match\": {\n" + "              \"location\": \"Hooks.before_hook_1()\"\n" + "            },\n" + "            \"embeddings\": [\n" + "              {\n" + "                \"mime_type\": \"mime-type;base64\",\n" + "                \"data\": \"AQID\",\n" + "                \"name\": \"someEmbedding\"\n" + "              }\n" + "            ],\n" + "            \"result\": {\n" + "              \"status\": \"passed\",\n" + "              \"duration\": 1000000\n" + "            }\n" + "          }\n" + "        ],\n" + "        \"steps\": [\n" + "          {\n" + "            \"keyword\": \"Given \",\n" + "            \"name\": \"there are bananas\",\n" + "            \"line\": 4,\n" + "            \"match\": {\n" + "              \"location\": \"StepDefs.there_are_bananas()\"\n" + "            },\n" + "            \"result\": {\n" + "              \"status\": \"passed\",\n" + "              \"duration\": 1000000\n" + "            }\n" + "          }\n" + "        ]\n" + "      }\n" + "    ],\n" + "    \"tags\": []\n" + "  }\n" + "]";
    assertJsonEquals(expected, out);
}
Also used : TimeServiceEventBus(io.cucumber.core.runtime.TimeServiceEventBus) StubBackendSupplier(io.cucumber.core.runtime.StubBackendSupplier) Builder(io.cucumber.core.runtime.Runtime.Builder) ZoneId.of(java.time.ZoneId.of) ByteArrayOutputStream(java.io.ByteArrayOutputStream) Runtime(io.cucumber.core.runtime.Runtime) StubStepDefinition(io.cucumber.core.backend.StubStepDefinition) DocString(io.cucumber.docstring.DocString) Scanner(java.util.Scanner) Collections.singletonList(java.util.Collections.singletonList) Arrays.asList(java.util.Arrays.asList) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) DataTable(io.cucumber.datatable.DataTable) StubHookDefinition(io.cucumber.core.backend.StubHookDefinition) Clock.fixed(java.time.Clock.fixed) TestFeatureParser(io.cucumber.core.feature.TestFeatureParser) StubFeatureSupplier(io.cucumber.core.runtime.StubFeatureSupplier) StepDurationTimeService(io.cucumber.core.runner.StepDurationTimeService) UTF_8(java.nio.charset.StandardCharsets.UTF_8) Collections.emptyList(java.util.Collections.emptyList) TimeServiceEventBus(io.cucumber.core.runtime.TimeServiceEventBus) UUID(java.util.UUID) Test(org.junit.jupiter.api.Test) RuntimeOptionsBuilder(io.cucumber.core.options.RuntimeOptionsBuilder) Feature(io.cucumber.core.gherkin.Feature) StubBackendSupplier(io.cucumber.core.runtime.StubBackendSupplier) SameJSONAs.sameJSONAs(uk.co.datumedge.hamcrest.json.SameJSONAs.sameJSONAs) EPOCH(java.time.Instant.EPOCH) Duration.ofMillis(java.time.Duration.ofMillis) InputStream(java.io.InputStream) StubFeatureSupplier(io.cucumber.core.runtime.StubFeatureSupplier) StubHookDefinition(io.cucumber.core.backend.StubHookDefinition) StubStepDefinition(io.cucumber.core.backend.StubStepDefinition) ByteArrayOutputStream(java.io.ByteArrayOutputStream) DocString(io.cucumber.docstring.DocString) UUID(java.util.UUID) Feature(io.cucumber.core.gherkin.Feature) StepDurationTimeService(io.cucumber.core.runner.StepDurationTimeService) Test(org.junit.jupiter.api.Test)

Example 23 with StubHookDefinition

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

the class JsonFormatterTest method should_format_scenario_with_hooks.

@Test
void should_format_scenario_with_hooks() {
    Feature feature = TestFeatureParser.parse("path/test.feature", "" + "Feature: Banana party\n" + "\n" + "  Scenario: Monkey eats bananas\n" + "    Given there are bananas\n");
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    StepDurationTimeService timeService = new StepDurationTimeService(ofMillis(1));
    Runtime.builder().withFeatureSupplier(new StubFeatureSupplier(feature)).withAdditionalPlugins(timeService, new JsonFormatter(out)).withEventBus(new TimeServiceEventBus(timeService, UUID::randomUUID)).withBackendSupplier(new StubBackendSupplier(singletonList(new StubHookDefinition("Hooks.before_hook_1()")), singletonList(new StubStepDefinition("there are bananas", "StepDefs.there_are_bananas()")), singletonList(new StubHookDefinition("Hooks.after_hook_1()")))).build().run();
    String expected = "" + "[\n" + "  {\n" + "    \"id\": \"banana-party\",\n" + "    \"uri\": \"file:path/test.feature\",\n" + "    \"keyword\": \"Feature\",\n" + "    \"name\": \"Banana party\",\n" + "    \"line\": 1,\n" + "    \"description\": \"\",\n" + "    \"elements\": [\n" + "      {\n" + "        \"id\": \"banana-party;monkey-eats-bananas\",\n" + "        \"keyword\": \"Scenario\",\n" + "        \"start_timestamp\": \"1970-01-01T00:00:00.000Z\",\n" + "        \"name\": \"Monkey eats bananas\",\n" + "        \"line\": 3,\n" + "        \"description\": \"\",\n" + "        \"type\": \"scenario\",\n" + "        \"before\": [\n" + "          {\n" + "            \"match\": {\n" + "              \"location\": \"Hooks.before_hook_1()\"\n" + "            },\n" + "            \"result\": {\n" + "              \"status\": \"passed\",\n" + "              \"duration\": 1000000\n" + "            }\n" + "          }\n" + "        ],\n" + "        \"steps\": [\n" + "          {\n" + "            \"keyword\": \"Given \",\n" + "            \"name\": \"there are bananas\",\n" + "            \"line\": 4,\n" + "            \"match\": {\n" + "              \"location\": \"StepDefs.there_are_bananas()\"\n" + "            },\n" + "            \"result\": {\n" + "              \"status\": \"passed\",\n" + "              \"duration\": 1000000\n" + "            }\n" + "          }\n" + "        ],\n" + "        \"after\": [\n" + "          {\n" + "            \"match\": {\n" + "              \"location\": \"Hooks.after_hook_1()\"\n" + "            },\n" + "            \"result\": {\n" + "              \"status\": \"passed\",\n" + "              \"duration\": 1000000\n" + "            }\n" + "          }\n" + "        ]\n" + "      }\n" + "    ],\n" + "    \"tags\": []\n" + "  }\n" + "]";
    assertJsonEquals(expected, out);
}
Also used : TimeServiceEventBus(io.cucumber.core.runtime.TimeServiceEventBus) StubBackendSupplier(io.cucumber.core.runtime.StubBackendSupplier) StubFeatureSupplier(io.cucumber.core.runtime.StubFeatureSupplier) StubHookDefinition(io.cucumber.core.backend.StubHookDefinition) StubStepDefinition(io.cucumber.core.backend.StubStepDefinition) ByteArrayOutputStream(java.io.ByteArrayOutputStream) DocString(io.cucumber.docstring.DocString) UUID(java.util.UUID) Feature(io.cucumber.core.gherkin.Feature) StepDurationTimeService(io.cucumber.core.runner.StepDurationTimeService) Test(org.junit.jupiter.api.Test)

Example 24 with StubHookDefinition

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

the class TeamCityPluginTest method should_handle_attach_events.

@Test
void should_handle_attach_events() {
    Feature feature = TestFeatureParser.parse("path/test.feature", "" + "Feature: feature name\n" + "  Scenario: scenario name\n" + "    Given first step\n");
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    Runtime.builder().withFeatureSupplier(new StubFeatureSupplier(feature)).withAdditionalPlugins(new TeamCityPlugin(new PrintStream(out))).withEventBus(new TimeServiceEventBus(fixed(EPOCH, of("UTC")), UUID::randomUUID)).withBackendSupplier(new StubBackendSupplier(singletonList(new StubHookDefinition((TestCaseState state) -> state.attach("A message", "text/plain", "message.txt"))), singletonList(new StubStepDefinition("first step")), emptyList())).build().run();
    assertThat(out, bytesContainsString("" + "##teamcity[message text='Embed event: message.txt |[text/plain 9 bytes|]|n' status='NORMAL']\n"));
}
Also used : TimeServiceEventBus(io.cucumber.core.runtime.TimeServiceEventBus) StubBackendSupplier(io.cucumber.core.runtime.StubBackendSupplier) StubFeatureSupplier(io.cucumber.core.runtime.StubFeatureSupplier) PrintStream(java.io.PrintStream) StubHookDefinition(io.cucumber.core.backend.StubHookDefinition) StubStepDefinition(io.cucumber.core.backend.StubStepDefinition) ByteArrayOutputStream(java.io.ByteArrayOutputStream) UUID(java.util.UUID) Feature(io.cucumber.core.gherkin.Feature) TestCaseState(io.cucumber.core.backend.TestCaseState) Test(org.junit.jupiter.api.Test)

Example 25 with StubHookDefinition

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

the class TeamCityPluginTest method should_handle_nameless_attach_events.

@Test
void should_handle_nameless_attach_events() {
    Feature feature = TestFeatureParser.parse("path/test.feature", "" + "Feature: feature name\n" + "  Scenario: scenario name\n" + "    Given first step\n");
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    Runtime.builder().withFeatureSupplier(new StubFeatureSupplier(feature)).withAdditionalPlugins(new TeamCityPlugin(new PrintStream(out))).withEventBus(new TimeServiceEventBus(fixed(EPOCH, of("UTC")), UUID::randomUUID)).withBackendSupplier(new StubBackendSupplier(singletonList(new StubHookDefinition((TestCaseState state) -> state.attach("A message", "text/plain", null))), singletonList(new StubStepDefinition("first step")), emptyList())).build().run();
    assertThat(out, bytesContainsString("" + "##teamcity[message text='Embed event: |[text/plain 9 bytes|]|n' status='NORMAL']\n"));
}
Also used : TimeServiceEventBus(io.cucumber.core.runtime.TimeServiceEventBus) StubBackendSupplier(io.cucumber.core.runtime.StubBackendSupplier) StubFeatureSupplier(io.cucumber.core.runtime.StubFeatureSupplier) PrintStream(java.io.PrintStream) StubHookDefinition(io.cucumber.core.backend.StubHookDefinition) StubStepDefinition(io.cucumber.core.backend.StubStepDefinition) ByteArrayOutputStream(java.io.ByteArrayOutputStream) UUID(java.util.UUID) Feature(io.cucumber.core.gherkin.Feature) TestCaseState(io.cucumber.core.backend.TestCaseState) Test(org.junit.jupiter.api.Test)

Aggregations

StubHookDefinition (io.cucumber.core.backend.StubHookDefinition)26 StubStepDefinition (io.cucumber.core.backend.StubStepDefinition)26 Feature (io.cucumber.core.gherkin.Feature)26 StubBackendSupplier (io.cucumber.core.runtime.StubBackendSupplier)26 ByteArrayOutputStream (java.io.ByteArrayOutputStream)26 Test (org.junit.jupiter.api.Test)26 StubFeatureSupplier (io.cucumber.core.runtime.StubFeatureSupplier)25 TimeServiceEventBus (io.cucumber.core.runtime.TimeServiceEventBus)22 UUID (java.util.UUID)22 RuntimeOptionsBuilder (io.cucumber.core.options.RuntimeOptionsBuilder)8 StepDurationTimeService (io.cucumber.core.runner.StepDurationTimeService)7 TestFeatureParser (io.cucumber.core.feature.TestFeatureParser)6 Runtime (io.cucumber.core.runtime.Runtime)6 DataTable (io.cucumber.datatable.DataTable)6 PrintStream (java.io.PrintStream)6 Arrays.asList (java.util.Arrays.asList)6 Collections.emptyList (java.util.Collections.emptyList)6 Collections.singletonList (java.util.Collections.singletonList)6 MatcherAssert.assertThat (org.hamcrest.MatcherAssert.assertThat)6 DocString (io.cucumber.docstring.DocString)5