[ 
https://jira.codehaus.org/browse/JBEHAVE-720?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=292124#comment-292124
 ] 

Mauro Talevi commented on JBEHAVE-720:
--------------------------------------

Ah, that makes more sense :-)  I've applied the patch (with minor renames and 
modifications).

Please merge with latest master and verify it works for you (your version was 
not in sync with latest master)

I've added parametrisation_by_delimited_names.story to trader example to verify 
behaviour.

Thanks


                
> Allow parametrisation of scenarios by delimited names
> -----------------------------------------------------
>
>                 Key: JBEHAVE-720
>                 URL: https://jira.codehaus.org/browse/JBEHAVE-720
>             Project: JBehave
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 3.5.4
>            Reporter: Rui Figueira
>            Assignee: Mauro Talevi
>             Fix For: 3.6
>
>         Attachments: StepCreator.java
>
>
> I'm working on a simplification of the current parameterized scenario 
> solution. With this I want to:
>  * avoid the need of defining two different patterns for steps, one for 
> normal scenarios, and another for parameterized scenarios.
>  * be able to use column names in Examples tables that differ from the 
> parameter names that were specified in the step annotation
>  * avoid having to annotate fields with @Named in parameterized step methods
> Take the following steps and scenario, for example:
>  
> {code:title=ParameterizedStory.java}
> public class ParameterizedStory extends JUnitStory {
>   public static class ParamsSteps {
>     
>     private String user;    
>     private Set<String> products; // null means no cart...
>     @BeforeScenario
>     public void init() {
>       user = null;
>       products = null;
>     }
>     
>     @Given("$user is logged in")
>     public void loggedIn(String user) {
>       this.user = user;
>     }
>     
>     @Given("$customer has a cart")
>     public void aCustomerHasACart(String customer) {
>       assertThat(user, notNullValue());
>       assertThat(customer, equalTo(user));
>       if (products == null) products = new TreeSet<String>();
>     }
>      
>     @When("a $product is added to the cart")
>     public void aProductIsAddedToCart(String product) {
>       assertThat(products, notNullValue());
>       products.add(product);
>     }
>     
>     @Then("cart contains $product")
>     public void cartContains(String product) {
>       assertThat(products, notNullValue());
>       assertTrue(products.contains(product));
>     }
>   }
>   public ParameterizedStory() {
>     // Making sure this doesn't output to the build while it's running
>     useConfiguration(new MostUsefulConfiguration()
>       .useStoryReporterBuilder(new StoryReporterBuilder()
>       .withFormats(Format.CONSOLE)
>       .withFailureTrace(true)
>       .withFailureTraceCompression(false))
>       .usePendingStepStrategy(new FailingUponPendingStep())
>       .useFailureStrategy(new RethrowingFailure()));
>   }
>   
>   @Override
>   public List<CandidateSteps> candidateSteps() {
>     return new InstanceStepsFactory(configuration(), new 
> ParamsSteps()).createCandidateSteps(); 
>   }
> }
> {code}
> {code:title=parameterized_story.story}
> Scenario: Use flexible parameters with examples table
> Given <client> is logged in
> And <client> has a cart
> When a <item> is added to the cart
> Then cart contains <item>
> Examples:
> |client|item|
> |Rui|chocolate|
> |Figueira|car|
> {code}
> The "Given $user is logged in" step pattern will match "Given <client> is 
> logged in", and user parameter will be set to client column values.
> The main idea is that <client>, instead of represent a named parameter, 
> represents a placeholder, and that placeholder should be replaced with 
> whether value exists for it in the examples table. Then, after replacing the 
> placeholder with the corresponding value, it will then match with the given 
> step pattern, and $user will be set to the correct value.
> I have a working version available at 
> https://github.com/ruifigueira/jbehave-core/commit/a4107a3ac899c4b952746781f785cba9a97c659c,
>  that can be used to test the scenario above.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to