Exemple #1
0
        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);
        }
Exemple #2
0
        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");
        }
Exemple #3
0
        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();
        }
Exemple #4
0
        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;
        }
Exemple #5
0
 private StepsBuilder MakeStepsBuilder(Feature feature, Scenario scenario)
 {
     var builder = new CSharpFeatureStepsBuilder();
     builder.RootNamespace = this.RootNamespace;
     builder.Feature = feature;
     builder.Scenario = scenario;
     return builder;
 }