Exemplo n.º 1
0
        public void ShouldGenerateTestsCodeThatWouldDescribeEachScenarioStructureInTest()
        {
            // mock
            var rootNs = "qualquer.coisa";
            var feature = new Feature() { Name = "Cliente, Exclusão" };
            var scenarios = new[]
            {
                new Scenario() {
                    Name = "Deve falhar quando cliente está vinculado à [1] produtos.",
                    Scope = ScenarioScope.BottomUp,
                    Statements = {
                        Given = "Dada a tablatura 'INVÁLIDA'",
                        When = "Quando eu realizo a transcrição",
                        Then = "Então eu devo receber uma exceção 'InvalidGuitarTabException'"
                    }
                }
            };

            // prepare
            var builder = new CSharpFeatureTestsBuilder();
            builder.Feature = feature;
            builder.Scenarios = scenarios;
            builder.RootNamespace = rootNs;

            // do
            var code = builder.ToCode();
            Console.Write(code);

            // check
            var hasTextBody = this.HasMethodCallsForGivenWhenThen(code);
            Assert.IsTrue(hasTextBody);
        }
Exemplo n.º 2
0
        public void ShouldGenerateCodeThatWillDefineAParticularScope()
        {
            // mock
            var scope = ScenarioScope.BottomUp;
            var rootNs = "qualquer.coisa";
            var feature = new Feature() { Name = "Cliente, Exclusão" };
            var scenarios = new[] { new Scenario() { Scope = scope, Name = "Deve falhar quando cliente está vinculado à [1] produtos." } };

            // prepare
            var builder = new CSharpFeatureTestsBuilder();
            builder.RootNamespace = rootNs;
            builder.Feature = feature;
            builder.Scenarios = scenarios;

            // do
            var code = builder.ToCode();
            Console.Write(code);

            // check
            var hasScopeTrait = this.HasScopeTrait(code, scope);
            Assert.IsTrue(hasScopeTrait);
        }
Exemplo n.º 3
0
 private TestsBuilder MakeTestsBuilder(Feature feature)
 {
     var builder = new CSharpFeatureTestsBuilder();
     builder.RootNamespace = this.RootNamespace;
     builder.Feature = feature;
     builder.FeaturePath = feature.File;
     builder.Scenarios = feature.Scenarios;
     return builder;
 }
Exemplo n.º 4
0
        public void ShouldGenerateTestsCodeThatWouldRunTestsForEachScenario()
        {
            // mock
            var rootNs = "qualquer.coisa";
            var feature = new Feature() { Name = "Cliente, Exclusão" };
            var scenarios = new[]
            {
                new Scenario() { Name = "Deve falhar quando cliente está vinculado à [1] produtos." },
                new Scenario() { Name = "Deve falhar quando cliente está vinculado à [99] produtos." },
            };

            // prepare
            var builder = new CSharpFeatureTestsBuilder();
            builder.Feature = feature;
            builder.Scenarios = scenarios;
            builder.RootNamespace = rootNs;

            // do
            var code = builder.ToCode();
            Console.Write(code);

            // check
            var hasAllTests = this.HasATestForEachScenario(code, feature, scenarios);
            Assert.IsTrue(hasAllTests);
        }
Exemplo n.º 5
0
        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);
        }