public void ShouldCreateTestDependenciesIntoProjectFile() { // mock const string ns = "qualquer.coisa"; var filePath = FixtureHelper.CreateOrOverwriteFixtureFile(@".\_Fixtures\Parsers\ProjectFile_WithOneFeature.csproj"); Func<Scenario, StepsBuilder> stepBuilderGenerator = (scenario) => { var builder = new CSharpFeatureStepsBuilder(); builder.RootNamespace = ns; builder.Feature = new Feature(); builder.Scenario = scenario; return builder; }; // prepare var parser = new VisualStudioProjectFileParser(filePath); var featureFiles = parser.ReadFeatureFiles(); var specs = this.GenerateSpecificationGroupsFromFeatureFiles(featureFiles); foreach (var spec in specs) { foreach (var scenario in spec.Feature.Scenarios) { spec.StepBuilderGenerator = stepBuilderGenerator; spec.AddStepBuilder(scenario); } } // do parser.AppendFeatureDependencies(specs); // assert var hasDependencyTests = this.HasXmlNodeWithDependentFeatureCsFiles(filePath); Assert.IsTrue(hasDependencyTests); }
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 string GenerateTestMethodBody(Scenario scenario) { const string stepsObjectName = "steps"; var builder = new CSharpFeatureStepsBuilder(); builder.RootNamespace = this.RootNamespace; builder.Feature = this.Feature; builder.Scenario = scenario; var code = new StringBuilder(); code.AppendLine(CodeForBody("// init")); code.AppendLine(CodeForBody("using (var {0} = new {1}())", stepsObjectName, builder.ToClassName())); code.AppendLine(CodeForBody("{{")); code.AppendLine(CodeForBody(1, "// prepare")); code.AppendLine(CodeForBody(true, builder.ToMockVariablesDeclaration(1))); code.AppendLine(CodeForBody(1, "// do")); code.AppendLine(CodeForBody(1, "{0};", builder.ToMethodCall(stepsObjectName, scenario.Statements.Given))); code.AppendLine(CodeForBody(1, "{0};", builder.ToMethodCall(stepsObjectName, scenario.Statements.When))); code.AppendLine(CodeForBody(1, "{0};", builder.ToMethodCall(stepsObjectName, scenario.Statements.Then))); code.AppendLine(); code.AppendLine(CodeForBody(1, "// check")); code.AppendLine(CodeForBody(1, "Assert.Inconclusive();")); code.AppendLine(CodeForBody("}}")); return code.ToString(); }
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 StepsBuilder MakeStepsBuilder(Feature feature, Scenario scenario) { var builder = new CSharpFeatureStepsBuilder(); builder.RootNamespace = this.RootNamespace; builder.Feature = feature; builder.Scenario = scenario; return builder; }