public StepsBuilder AddStepBuilder( Scenario scenario) { if (this.StepBuilderGenerator == null) { throw new InvalidOperationException("Não há um 'StepBuilderGenerator' disponível."); } var hash = scenario.Hash; if (this.hashesAndSteps.ContainsKey(hash)) { return this.hashesAndSteps[hash]; } var builder = this.StepBuilderGenerator(scenario); this.hashesAndSteps.Add(scenario.Hash, builder); return builder; }
public void ShouldGenerateCodeThatWillHaveAClassWithTheNameOfTheFeatureAndTheNameOfTheScenario() { // mock var feature = new Feature() { Name = "Cliente, Exclusão" }; var scenario = new Scenario() { Name = "Deve falhar quando cliente está vinculado à [1] produtos." }; // prepare var builder = this.NewDefaultBuilder(); builder.Feature = feature; builder.Scenario = scenario; // do var code = builder.ToCode(); Console.Write(code); // check var hasCorrectClassName = this.HasStepsClassName(code, feature, scenario); Assert.IsTrue(hasCorrectClassName); }
private IEnumerable<SpecificationGroup> GenerateSpecificationGroupsFromFeatureFiles( IEnumerable<string> featureFiles) { var list = new List<SpecificationGroup>(); foreach (var featureFile in featureFiles) { var scenario = new Scenario() { Name = "CENARIO_TESTE" }; scenario.Statements.Given = "Dado que TESTE"; scenario.Statements.When = "Quando TESTE"; scenario.Statements.Then = "Então TESTE"; var feature = new Feature() { File = featureFile }; feature.Scenarios.Add(scenario); list.Add(new SpecificationGroup(feature)); } return list; }
public void EnsureTestScenario() { this.EnsureTestFeature(); var scenarioAttrib = this.TestMethod.GetCustomAttribute<TestScenarioAttribute>(); if (scenarioAttrib == null) { throw new InvalidTestMethodException( this.TestClass, this.TestMethod); } this.testScenario = this.testFeature.Scenarios .Where(d => d.Name == scenarioAttrib.Name) .FirstOrDefault(); if (this.testScenario == null) { throw new UnmatchingScenarioDeclarationException( this.testFeature.Name, scenarioAttrib.Name); } }
public void ShouldGenerateStepsForOneSingleStatement() { // mock var rootNs = "qualquer.coisa"; var feature = new Feature() { Name = "Cliente, Exclusão" }; var scenario = new Scenario() { @Name = "Deve falhar quando cliente está vinculado à [1] produtos.", @Statements = { Given = "Dado o arquivo de feature ''", When = "Quando tento criar o parser", Then = "Então eu recebo uma exceção do tipo 'NBDD.Framework.Parsers.FeatureFileContentInvalidException'" } }; var treatedScenario = scenario.MakeTreatedStatements(); // prepare var builder = new CSharpFeatureStepsBuilder(); builder.Feature = feature; builder.Scenario = scenario; builder.RootNamespace = rootNs; // do var code = builder.ToCode(); Console.Write(code); // check Assert.IsNotNull(code); Assert.IsTrue(HasAttribute(code, "Given"), "Atributo 'Given' não encontrado"); Assert.IsTrue(HasStatementMethod(code, scenario.Statements.Given), "Não temos o método para o statement de given"); Assert.IsTrue(HasAttribute(code, "When"), "Atributo 'When' não encontrado"); Assert.IsTrue(HasStatementMethod(code, scenario.Statements.When), "Não temos o método para o statement de when"); Assert.IsTrue(HasAttribute(code, "Then"), "Atributo 'Then' não encontrado"); Assert.IsTrue(HasStatementMethod(code, scenario.Statements.Then), "Não temos o método para o statement de then"); }
private CSharpFeatureStepsBuilder NewDefaultBuilder() { // mock var feature = new Feature() { Name = "Cliente, Exclusão" }; var scenario = new Scenario() { @Name = "Deve falhar quando cliente está vinculado à [1] produtos.", @Statements = { Given = "Dado o arquivo de feature ''", When = "Quando tento criar o parser", Then = "Então eu recebo uma exceção do tipo 'NBDD.Framework.Parsers.FeatureFileContentInvalidException'" } }; // prepare var builder = new CSharpFeatureStepsBuilder(); builder.RootNamespace = RootNamespace; builder.Feature = feature; builder.Scenario = scenario; return builder; }
private bool HasStepsClassName( string code, Feature feature, Scenario scenario) { var classSignature = string.Concat( "public class ", feature.Name.ToClassName(), "_", scenario.Name.ToClassName()); return code.Contains(classSignature); }
private StepsBuilder MakeStepsBuilder(Feature feature, Scenario scenario) { var builder = new CSharpFeatureStepsBuilder(); builder.RootNamespace = this.RootNamespace; builder.Feature = feature; builder.Scenario = scenario; return builder; }
private bool HasTestForScenario( string code, Feature feature, Scenario scenario) { var className = feature.Name.ToClassName(); var methodName = scenario.Name.ToMethodName(); var methodCall = string.Concat("void ", className, "_", methodName, "()"); return code.Contains(methodCall); }
public void ShouldGenerateTheScopeTraitWhenProvided() { // mock var rootNamespace = "empresa.grupo.modulo"; var feature = new Feature() { Name = "Cliente, Exclusão" }; var scenarios = new Scenario[0]; // prepare var builder = new CSharpFeatureTestsBuilder(); builder.RootNamespace = rootNamespace; builder.Feature = feature; builder.Scenarios = scenarios; // do var code = builder.ToCode(); Console.Write(code); // check var hasNamespace = this.HasNamespace(code, rootNamespace); Assert.IsTrue(hasNamespace); }