use of io.cucumber.core.backend.StubStepDefinition in project cucumber-jvm by cucumber.
the class StepExpressionFactoryTest method unknown_target_type_does_no_transform_data_table.
@Test
void unknown_target_type_does_no_transform_data_table() {
StepDefinition stepDefinition = new StubStepDefinition("Given some stuff:", UNKNOWN_TYPE);
StepExpression expression = stepExpressionFactory.createExpression(stepDefinition);
List<Argument> match = expression.match("Given some stuff:", table);
assertThat(match.get(0).getValue(), is(equalTo(DataTable.create(table))));
}
use of io.cucumber.core.backend.StubStepDefinition in project cucumber-jvm by cucumber.
the class StepExpressionFactoryTest method throws_for_unknown_parameter_types.
@Test
void throws_for_unknown_parameter_types() {
StepDefinition stepDefinition = new StubStepDefinition("Given a {unknownParameterType}");
List<Envelope> events = new ArrayList<>();
bus.registerHandlerFor(Envelope.class, events::add);
CucumberException exception = assertThrows(CucumberException.class, () -> stepExpressionFactory.createExpression(stepDefinition));
assertThat(exception.getMessage(), is("" + "Could not create a cucumber expression for 'Given a {unknownParameterType}'.\n" + "It appears you did not register a parameter type."));
assertThat(events, iterableWithSize(1));
assertNotNull(events.get(0).getUndefinedParameterType());
}
use of io.cucumber.core.backend.StubStepDefinition in project cucumber-jvm by cucumber.
the class StepExpressionFactoryTest method table_expression_with_type_creates_single_ingredients_from_table.
@Test
void table_expression_with_type_creates_single_ingredients_from_table() {
registry.defineDataTableType(new DataTableType(Ingredient.class, beanMapper(registry)));
StepDefinition stepDefinition = new StubStepDefinition("Given some stuff:", Ingredient.class);
StepExpression expression = stepExpressionFactory.createExpression(stepDefinition);
List<Argument> match = expression.match("Given some stuff:", tableTransposed);
Ingredient ingredient = (Ingredient) match.get(0).getValue();
assertThat(ingredient.name, is(equalTo("chocolate")));
}
use of io.cucumber.core.backend.StubStepDefinition in project cucumber-jvm by cucumber.
the class JsonFormatterTest method should_format_scenario_with_a_rule.
@Test
void should_format_scenario_with_a_rule() {
Feature feature = TestFeatureParser.parse("path/test.feature", "" + "Feature: Banana party\n" + "\n" + " Rule: This is all monkey business\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(new StubStepDefinition("there are bananas", "StepDefs.there_are_bananas()"))).build().run();
String expected = "" + "[\n" + " {\n" + " \"line\": 1,\n" + " \"elements\": [\n" + " {\n" + " \"start_timestamp\": \"1970-01-01T00:00:00.000Z\",\n" + " \"line\": 4,\n" + " \"name\": \"Monkey eats bananas\",\n" + " \"description\": \"\",\n" + " \"id\": \";monkey-eats-bananas\",\n" + " \"type\": \"scenario\",\n" + " \"keyword\": \"Scenario\",\n" + " \"steps\": [\n" + " {\n" + " \"result\": {\n" + " \"duration\": 1000000,\n" + " \"status\": \"passed\"\n" + " },\n" + " \"line\": 5,\n" + " \"name\": \"there are bananas\",\n" + " \"match\": {\n" + " \"location\": \"StepDefs.there_are_bananas()\"\n" + " },\n" + " \"keyword\": \"Given \"\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);
}
use of io.cucumber.core.backend.StubStepDefinition in project cucumber-jvm by cucumber.
the class JsonFormatterTest method should_handle_write_from_a_hook.
@Test
void should_handle_write_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.log("printed from hook"))), 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" + " \"output\": [\n" + " \"printed from hook\"\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);
}
Aggregations