Skip to content

Commit e3fbad8

Browse files
committed
JBEHAVE-1612 Skip parameter conversion for ignorable steps
1 parent 6910177 commit e3fbad8

File tree

5 files changed

+71
-5
lines changed

5 files changed

+71
-5
lines changed

jbehave-core/src/main/java/org/jbehave/core/embedder/PerformableTree.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,7 @@ private Ignoring(IgnoringStepsFailure failure) {
455455

456456
@Override
457457
public State run(Step step, List<StepResult> results, Keywords keywords, StoryReporter reporter) {
458-
String stepAsString = step.asString(keywords);
458+
String stepAsString = step.asPlainString(keywords);
459459
reporter.beforeStep(new org.jbehave.core.model.Step(StepExecutionType.IGNORABLE, stepAsString));
460460
StepResult result = AbstractStepResult.ignorable(stepAsString);
461461
results.add(result);

jbehave-core/src/main/java/org/jbehave/core/steps/Step.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,22 @@ public interface Step {
1616

1717
StepResult doNotPerform(StoryReporter storyReporter, UUIDExceptionWrapper storyFailureIfItHappened);
1818

19+
/**
20+
* Returns formatted step representation with parameters resolution.
21+
*
22+
* @param keywords the keywords to use for formatting
23+
* @return the formatted string representation of the step
24+
*/
1925
String asString(Keywords keywords);
2026

27+
/**
28+
* Returns plain step representation as its written in stories or composite steps without
29+
* parameter resolution.
30+
*
31+
* @param keywords the keywords to use for formatting
32+
* @return the plain string representation of the step
33+
*/
34+
String asPlainString(Keywords keywords);
35+
2136
List<Step> getComposedSteps();
2237
}

jbehave-core/src/main/java/org/jbehave/core/steps/StepCreator.java

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -612,6 +612,11 @@ public String asString(Keywords keywords) {
612612
return toString();
613613
}
614614

615+
@Override
616+
public String asPlainString(Keywords keywords) {
617+
return toString();
618+
}
619+
615620
@Override
616621
public String toString() {
617622
return ToStringBuilder.reflectionToString(this, ToStringStyle.SIMPLE_STYLE);
@@ -643,7 +648,12 @@ public final StepResult perform(StoryReporter storyReporter, UUIDExceptionWrappe
643648

644649
@Override
645650
public String asString(Keywords keywords) {
646-
return stepAsString;
651+
return getStepAsString();
652+
}
653+
654+
@Override
655+
public String asPlainString(Keywords keywords) {
656+
return getStepAsString();
647657
}
648658

649659
protected String getStepAsString() {
@@ -673,6 +683,11 @@ public String asString(Keywords keywords) {
673683
return step.asString(keywords);
674684
}
675685

686+
@Override
687+
public String asPlainString(Keywords keywords) {
688+
return step.asPlainString(keywords);
689+
}
690+
676691
@Override
677692
public List<Step> getComposedSteps() {
678693
return step.getComposedSteps();
@@ -740,6 +755,11 @@ public UUIDExceptionWrapper convertValue(String value, Type type) {
740755

741756
@Override
742757
public String asString(Keywords keywords) {
758+
return asPlainString(keywords);
759+
}
760+
761+
@Override
762+
public String asPlainString(Keywords keywords) {
743763
return method.getName() + ";" + meta.asString(keywords);
744764
}
745765
}
@@ -942,6 +962,11 @@ public String asString(Keywords keywords) {
942962
return parametrisedStep;
943963
}
944964

965+
@Override
966+
public String asPlainString(Keywords keywords) {
967+
return getStepAsString();
968+
}
969+
945970
private Object[] parametriseStep() {
946971
Matcher matcher = stepMatcher.matcher(stepWithoutStartingWord);
947972
matcher.find();

jbehave-core/src/test/java/org/jbehave/core/embedder/PerformableTreeBehaviour.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
import org.jbehave.core.steps.StepCollector.Stage;
7373
import org.jbehave.core.steps.StepCreator.StepExecutionType;
7474
import org.jbehave.core.steps.StepMonitor;
75+
import org.jbehave.core.steps.ParameterConverters.FromStringParameterConverter;
7576
import org.jbehave.core.steps.Timing;
7677
import org.jbehave.core.steps.context.StepsContext;
7778
import org.junit.jupiter.api.Test;
@@ -463,6 +464,10 @@ void shouldReportIgnorableStepsFromCompositeStep() {
463464
ordered.verify(storyReporter).beforeStep(argThat(step -> "When I ignore".equals(step.getStepAsString())
464465
&& StepExecutionType.EXECUTABLE == step.getExecutionType()));
465466
ordered.verify(storyReporter).ignorable("When I ignore");
467+
ordered.verify(storyReporter)
468+
.beforeStep(argThat(step -> "When I convert param".equals(step.getStepAsString())
469+
&& StepExecutionType.IGNORABLE == step.getExecutionType()));
470+
ordered.verify(storyReporter).ignorable("When I convert param");
466471
ordered.verify(storyReporter).afterComposedSteps();
467472
ordered.verify(storyReporter).ignorable(step1);
468473
});
@@ -479,6 +484,7 @@ private void testIgnorableSteps(String step1, BiConsumer<InOrder, StoryReporter>
479484
StoryReporterBuilder storyReporterBuilder = mock(StoryReporterBuilder.class);
480485
when(storyReporterBuilder.build(STORY_PATH)).thenReturn(storyReporter);
481486
Configuration configuration = new MostUsefulConfiguration().useStoryReporterBuilder(storyReporterBuilder);
487+
configuration.parameterConverters().addConverters(new DummyParameterConverter());
482488

483489
PerformableTree performableTree = new PerformableTree();
484490
RunContext runContext = createRunContext(configuration, performableTree, mock(BatchFailures.class),
@@ -669,8 +675,12 @@ public void ignore() {
669675
throw new IgnoringStepsFailure("next steps in the scenario should be ignored");
670676
}
671677

678+
@When("I convert $param")
679+
public void convertParam(Dummy dummy) {
680+
}
681+
672682
@When("I ignore from composed step")
673-
@Composite(steps = { "When I ignore" })
683+
@Composite(steps = { "When I ignore", "When I convert param" })
674684
public void ignoreFromComposite() {
675685
}
676686

@@ -693,4 +703,14 @@ public void executeStep3() {
693703
this.step3Invoked = true;
694704
}
695705
}
706+
707+
private static class DummyParameterConverter extends FromStringParameterConverter<Dummy> {
708+
@Override
709+
public Dummy convertValue(String value, Type type) {
710+
throw new RuntimeException("conversion failed");
711+
}
712+
}
713+
714+
static class Dummy {
715+
}
696716
}

jbehave-core/src/test/java/org/jbehave/core/steps/StepCreatorBehaviour.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ void shouldCreatePendingAsStepResults(BiFunction<Step, StoryReporter, StepResult
163163

164164
// Then
165165
assertThat(pendingStep.asString(new Keywords()), equalTo(stepAsString));
166+
assertThat(pendingStep.asPlainString(new Keywords()), equalTo(stepAsString));
166167
assertThat(executor.apply(pendingStep, storyReporter), instanceOf(Pending.class));
167168
verifyBeforeStep(storyReporter, StepExecutionType.PENDING, stepAsString);
168169
verifyNoMoreInteractions(storyReporter);
@@ -180,6 +181,7 @@ void shouldCreateIgnorableAsStepResults(BiFunction<Step, StoryReporter, StepResu
180181

181182
// Then
182183
assertThat(ignorableStep.asString(new Keywords()), equalTo(stepAsString));
184+
assertThat(ignorableStep.asPlainString(new Keywords()), equalTo(stepAsString));
183185
assertThat(executor.apply(ignorableStep, storyReporter), instanceOf(Ignorable.class));
184186
verifyBeforeStep(storyReporter, StepExecutionType.IGNORABLE, stepAsString);
185187
verifyNoMoreInteractions(storyReporter);
@@ -197,6 +199,7 @@ void shouldCreateCommentAsStepResults(BiFunction<Step, StoryReporter, StepResult
197199

198200
// Then
199201
assertThat(comment.asString(new Keywords()), equalTo(stepAsString));
202+
assertThat(comment.asPlainString(new Keywords()), equalTo(stepAsString));
200203
assertThat(executor.apply(comment, storyReporter), instanceOf(Comment.class));
201204
verifyBeforeStep(storyReporter, StepExecutionType.COMMENT, stepAsString);
202205
verifyNoMoreInteractions(storyReporter);
@@ -221,14 +224,17 @@ private void assertThatParametrisedStepHasMarkedParsedParametersValues(String fi
221224

222225
// When
223226
String stepAsString = "When I use parameters " + firstParameterValue + " and " + secondParameterValue;
224-
StepResult stepResult = stepCreator.createParametrisedStep(SomeSteps.methodFor("methodWithANamedParameter"),
225-
stepAsString, stepAsString, parameters, Collections.emptyList()).perform(storyReporter, null);
227+
Step parameterisedStep = stepCreator.createParametrisedStep(SomeSteps.methodFor("methodWithANamedParameter"),
228+
stepAsString, stepAsString, parameters, Collections.emptyList());
229+
StepResult stepResult = parameterisedStep.perform(storyReporter, null);
226230

227231
// Then
228232
assertThat(stepResult, instanceOf(Successful.class));
229233
String expected = "When I use parameters " + PARAMETER_VALUE_START + firstParameterValue + PARAMETER_VALUE_END
230234
+ " and " + PARAMETER_VALUE_START + secondParameterValue + PARAMETER_VALUE_END;
231235
assertThat(stepResult.parametrisedStep(), equalTo(expected));
236+
assertThat(parameterisedStep.asString(null), equalTo(expected));
237+
assertThat(parameterisedStep.asPlainString(null), equalTo(stepAsString));
232238
verifyBeforeStep(storyReporter, StepExecutionType.EXECUTABLE, stepAsString);
233239
}
234240

0 commit comments

Comments
 (0)