public async Task ExecuteScenario_Executes_Background_Steps_First() { var gherkinFeaure = new GherkinFeatureBuilder() .WithBackground(sb => sb .Given("given background", null) .When("when background", null) .Then("then background", null)) .WithScenario("test scenario", sb => sb .Then("step one", null)) .Build(); var gherkinDocument = new Gherkin.Ast.GherkinDocument(gherkinFeaure, new Gherkin.Ast.Comment[0]); _featureFileRepository.Setup(r => r.GetByFilePath($"{nameof(FeatureWithBackgroundSteps)}.feature")) .Returns(new FeatureFile(gherkinDocument)) .Verifiable(); var featureInstance = new FeatureWithBackgroundSteps(); var output = new Mock <ITestOutputHelper>(); featureInstance.InternalOutput = output.Object; //act. await _sut.ExecuteScenarioAsync(featureInstance, "test scenario"); //assert. _featureFileRepository.Verify(); Assert.Equal("abcd", featureInstance.OrderValidator); output.Verify(o => o.WriteLine($"Given given background: PASSED"), Times.Once); output.Verify(o => o.WriteLine($"When when background: PASSED"), Times.Once); output.Verify(o => o.WriteLine($"Then then background: PASSED"), Times.Once); output.Verify(o => o.WriteLine($"Then step one: PASSED"), Times.Once); }
public async Task ScenarioOutline_Runs_Background_Steps_First() { var feature = new GherkinFeatureBuilder() .WithBackground(sb => sb .Given("background", null)) .WithScenarioOutline("test outline", sb => sb .Given("I chose <a> as first number", null) .And("I chose <b> as second number", null) .When("I press add", null) .Then("the result should be <sum> on the screen", null), eb => eb .WithExampleHeadings("a", "b", "sum") .WithExamples("", db => db.WithData("1", "2", "3"))) .Build(); _featureFileRepository.Setup(r => r.GetByFilePath($"{nameof(FeatureWithScenarioSteps)}.feature")) .Returns(new FeatureFile(new Gherkin.Ast.GherkinDocument(feature, new Gherkin.Ast.Comment[0]))) .Verifiable(); var featureInstance = new FeatureWithScenarioSteps(); var output = new Mock <ITestOutputHelper>(); featureInstance.InternalOutput = output.Object; await _sut.ExecuteScenarioOutlineAsync(featureInstance, "test outline", "", 0); Assert.Equal(5, featureInstance.CallStack.Count); Assert.Equal(nameof(FeatureWithScenarioSteps.BackgroundStep), featureInstance.CallStack[0].Key); }
public async Task ExecuteScenario_Executes_Scenario_With_Star_Notation() { //arrange. var gherkinFeature = new GherkinFeatureBuilder() .WithScenario("S", steps => steps.Star("I have some cukes", null)) .Build(); _featureFileRepository.Setup(r => r.GetByFilePath($"{nameof(FeatureWithStarNotation)}.feature")) .Returns(new FeatureFile(new Gherkin.Ast.GherkinDocument(gherkinFeature, null))) .Verifiable(); var featureInstance = new FeatureWithStarNotation(); var output = new Mock <ITestOutputHelper>(); featureInstance.InternalOutput = output.Object; //act. await _sut.ExecuteScenarioAsync(featureInstance, "S"); //assert. _featureFileRepository.Verify(); Assert.Single(featureInstance.CallStack); Assert.Equal(nameof(FeatureWithStarNotation.I_Have_Some_Cukes), featureInstance.CallStack[0].Key); }
public void Find_Features_That_Are_Not_Implemented() { //arrange. _featureFileRepository.Setup(r => r.GetFeatureFilePaths()) .Returns(new List <string> { "path1", "path2" }) .Verifiable(); _featureClassInfoRepository.Setup(r => r.GetFeatureClassesInfo()) .Returns(new List <FeatureClassInfo> { FeatureClassInfo.FromFeatureClassType(typeof(MyFeature)) }) .Verifiable(); var expectedFeature = new GherkinFeatureBuilder().Build(); _featureFileRepository.Setup(r => r.GetByFilePath("path2")) .Returns(new FeatureFile(new Gherkin.Ast.GherkinDocument(expectedFeature, null))) .Verifiable(); //act. var features = _sut.Discover(); //assert. _featureFileRepository.Verify(); _featureClassInfoRepository.Verify(); _featureFileRepository.Verify(r => r.GetByFilePath("path1"), Times.Never); Assert.NotNull(features); Assert.Single(features); Assert.Same(expectedFeature, features[0]); }
public void Find_Scenarios_In_Feature_File( Type featureClassType, string fileName) { //arrange. var gherkinFeature = new GherkinFeatureBuilder().WithScenario("scenario1", steps => steps.Given("step 1", null)) .Build(); _featureFileRepository.Setup(r => r.GetByFilePath(fileName)) .Returns(new FeatureFile(new Gherkin.Ast.GherkinDocument(gherkinFeature, null))) .Verifiable(); //act. var feature = _sut.Discover(featureClassType); //assert. _featureFileRepository.Verify(); Assert.NotNull(feature); Assert.Same(gherkinFeature, feature); }