88 var steps = new[]
99 {
1010 //StepName, reports, executionOrder, asserts
11- Tuple.Create("Given", "true", "ExecutionOrder.SetupState", "false"),
12- Tuple.Create("When", "true", "ExecutionOrder.Transition", "false"),
13- Tuple.Create("Then", "true", "ExecutionOrder.Assertion", "true"),
14- Tuple.Create("And", "true", "ExecutionOrder.ConsecutiveStep", "false"),
15- Tuple.Create("But", "true", "ExecutionOrder.ConsecutiveStep", "false"),
16- Tuple.Create("TearDownWith", "false", "ExecutionOrder.TearDown", "false")
11+ Tuple.Create("Given", "true", "ExecutionOrder.SetupState", "false", "TScenario", "testObject"),
12+ Tuple.Create("Given", "true", "ExecutionOrder.SetupState", "false", "IFluentTestBuilder<TScenario>", "testObject.TestObject"),
13+ Tuple.Create("When", "true", "ExecutionOrder.Transition", "false", "IFluentTestBuilder<TScenario>", "testObject.TestObject"),
14+ Tuple.Create("Then", "true", "ExecutionOrder.Assertion", "true", "IFluentTestBuilder<TScenario>", "testObject.TestObject"),
15+ Tuple.Create("And", "true", "ExecutionOrder.ConsecutiveStep", "false", "IFluentTestBuilder<TScenario>", "testObject.TestObject"),
16+ Tuple.Create("But", "true", "ExecutionOrder.ConsecutiveStep", "false", "IFluentTestBuilder<TScenario>", "testObject.TestObject"),
17+ Tuple.Create("TearDownWith", "false", "ExecutionOrder.TearDown", "false", "IFluentTestBuilder<TScenario>", "testObject.TestObject")
1718 };
1819#>
1920using System;
2021using System.Linq.Expressions;
2122using System.Threading.Tasks;
22-
23+
2324// ReSharper disable CheckNamespace
2425// This is in BDDfy namespace to make its usage simpler
2526namespace TestStack.BDDfy
@@ -32,75 +33,75 @@ namespace TestStack.BDDfy
3233 var existingContext = TestContext.GetContext(testObject);
3334 if (existingContext.FluentScanner == null)
3435 existingContext.FluentScanner = new FluentScanner<TScenario>(testObject);
35-
36+
3637 return (FluentScanner<TScenario>) existingContext.FluentScanner;
3738 }
38-
39+
3940<#
4041 foreach (var stepType in steps)
4142 {
4243#>
43- public static TScenario <#=stepType.Item1#><TScenario>(this TScenario testObject, Expression<Action<TScenario>> step, string stepTextTemplate)
44+ public static IFluentTestBuilder< TScenario> <#=stepType.Item1#><TScenario>(this <#=stepType.Item5#> testObject, Expression<Action<TScenario>> step, string stepTextTemplate)
4445 where TScenario: class
4546 {
46- testObject .Scan().AddStep(step, stepTextTemplate, true, <#=stepType.Item2#>, <#=stepType.Item3#>, <#=stepType.Item4#>);
47- return testObject ;
47+ <#=stepType.Item6#> .Scan().AddStep(step, stepTextTemplate, true, <#=stepType.Item2#>, <#=stepType.Item3#>, <#=stepType.Item4#>);
48+ return new FluentTestBuilder<TScenario>(<#=stepType.Item6#>) ;
4849 }
49-
50- public static TScenario <#=stepType.Item1#><TScenario>(this TScenario testObject, Expression<Action<TScenario>> step, bool includeInputsInStepTitle)
50+
51+ public static IFluentTestBuilder< TScenario> <#=stepType.Item1#><TScenario>(this <#=stepType.Item5#> testObject, Expression<Action<TScenario>> step, bool includeInputsInStepTitle)
5152 where TScenario: class
5253 {
53- testObject .Scan().AddStep(step, null, includeInputsInStepTitle, <#=stepType.Item2#>, <#=stepType.Item3#>, <#=stepType.Item4#>);
54- return testObject ;
54+ <#=stepType.Item6#> .Scan().AddStep(step, null, includeInputsInStepTitle, <#=stepType.Item2#>, <#=stepType.Item3#>, <#=stepType.Item4#>);
55+ return new FluentTestBuilder<TScenario>(<#=stepType.Item6#>) ;
5556 }
56-
57- public static TScenario <#=stepType.Item1#><TScenario>(this TScenario testObject, Expression<Action<TScenario>> step)
57+
58+ public static IFluentTestBuilder< TScenario> <#=stepType.Item1#><TScenario>(this <#=stepType.Item5#> testObject, Expression<Action<TScenario>> step)
5859 where TScenario: class
5960 {
60- testObject .Scan().AddStep(step, null, true, <#=stepType.Item2#>, <#=stepType.Item3#>, <#=stepType.Item4#>);
61- return testObject ;
61+ <#=stepType.Item6#> .Scan().AddStep(step, null, true, <#=stepType.Item2#>, <#=stepType.Item3#>, <#=stepType.Item4#>);
62+ return new FluentTestBuilder<TScenario>(<#=stepType.Item6#>) ;
6263 }
6364
64- public static TScenario <#=stepType.Item1#><TScenario>(this TScenario testObject, Expression<Func<TScenario, Task>> step, string stepTextTemplate)
65+ public static IFluentTestBuilder< TScenario> <#=stepType.Item1#><TScenario>(this <#=stepType.Item5#> testObject, Expression<Func<TScenario, Task>> step, string stepTextTemplate)
6566 where TScenario: class
6667 {
67- testObject .Scan().AddStep(step, stepTextTemplate, true, <#=stepType.Item2#>, <#=stepType.Item3#>, <#=stepType.Item4#>);
68- return testObject ;
68+ <#=stepType.Item6#> .Scan().AddStep(step, stepTextTemplate, true, <#=stepType.Item2#>, <#=stepType.Item3#>, <#=stepType.Item4#>);
69+ return new FluentTestBuilder<TScenario>(<#=stepType.Item6#>) ;
6970 }
70-
71- public static TScenario <#=stepType.Item1#><TScenario>(this TScenario testObject, Expression<Func<TScenario, Task>> step, bool includeInputsInStepTitle)
71+
72+ public static IFluentTestBuilder< TScenario> <#=stepType.Item1#><TScenario>(this <#=stepType.Item5#> testObject, Expression<Func<TScenario, Task>> step, bool includeInputsInStepTitle)
7273 where TScenario: class
7374 {
74- testObject .Scan().AddStep(step, null, includeInputsInStepTitle, <#=stepType.Item2#>, <#=stepType.Item3#>, <#=stepType.Item4#>);
75- return testObject ;
75+ <#=stepType.Item6#> .Scan().AddStep(step, null, includeInputsInStepTitle, <#=stepType.Item2#>, <#=stepType.Item3#>, <#=stepType.Item4#>);
76+ return new FluentTestBuilder<TScenario>(<#=stepType.Item6#>) ;
7677 }
77-
78- public static TScenario <#=stepType.Item1#><TScenario>(this TScenario testObject, Expression<Func<TScenario, Task>> step)
78+
79+ public static IFluentTestBuilder< TScenario> <#=stepType.Item1#><TScenario>(this <#=stepType.Item5#> testObject, Expression<Func<TScenario, Task>> step)
7980 where TScenario: class
8081 {
81- testObject .Scan().AddStep(step, null, true, <#=stepType.Item2#>, <#=stepType.Item3#>, <#=stepType.Item4#>);
82- return testObject ;
82+ <#=stepType.Item6#> .Scan().AddStep(step, null, true, <#=stepType.Item2#>, <#=stepType.Item3#>, <#=stepType.Item4#>);
83+ return new FluentTestBuilder<TScenario>(<#=stepType.Item6#>) ;
8384 }
84-
85- public static TScenario <#=stepType.Item1#><TScenario>(this TScenario testObject, Action step, string title)
85+
86+ public static IFluentTestBuilder< TScenario> <#=stepType.Item1#><TScenario>(this <#=stepType.Item5#> testObject, Action step, string title)
8687 where TScenario : class
8788 {
88- testObject .Scan().AddStep(step, title, <#=stepType.Item2#>, <#=stepType.Item3#>, <#=stepType.Item4#>);
89- return testObject ;
89+ <#=stepType.Item6#> .Scan().AddStep(step, title, <#=stepType.Item2#>, <#=stepType.Item3#>, <#=stepType.Item4#>);
90+ return new FluentTestBuilder<TScenario>(<#=stepType.Item6#>) ;
9091 }
91-
92- public static TScenario <#=stepType.Item1#><TScenario>(this TScenario testObject, Func<Task> step, string title)
92+
93+ public static IFluentTestBuilder< TScenario> <#=stepType.Item1#><TScenario>(this <#=stepType.Item5#> testObject, Func<Task> step, string title)
9394 where TScenario : class
9495 {
95- testObject .Scan().AddStep(step, title, <#=stepType.Item2#>, <#=stepType.Item3#>, <#=stepType.Item4#>);
96- return testObject ;
96+ <#=stepType.Item6#> .Scan().AddStep(step, title, <#=stepType.Item2#>, <#=stepType.Item3#>, <#=stepType.Item4#>);
97+ return new FluentTestBuilder<TScenario>(<#=stepType.Item6#>) ;
9798 }
98-
99- public static TScenario <#=stepType.Item1#><TScenario>(this TScenario testObject, string title)
99+
100+ public static IFluentTestBuilder< TScenario> <#=stepType.Item1#><TScenario>(this <#=stepType.Item5#> testObject, string title)
100101 where TScenario : class
101102 {
102- testObject .Scan().AddStep(() => { }, title, <#=stepType.Item2#>, <#=stepType.Item3#>, <#=stepType.Item4#>);
103- return testObject ;
103+ <#=stepType.Item6#> .Scan().AddStep(() => { }, title, <#=stepType.Item2#>, <#=stepType.Item3#>, <#=stepType.Item4#>);
104+ return new FluentTestBuilder<TScenario>(<#=stepType.Item6#>) ;
104105 }
105106<#
106107 }
0 commit comments