public void Trace_Listener_Not_Supported()
        {
            string config = @"{
                                ""trace"": { ""listener"": ""TraceListener"" }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.CustomDependencies.Count.Should().Be(0);
        }
        public void Check_Trace_StepDefinitionSkeletonStyle_RegexAttribute()
        {
            string config = @"{
                                ""trace"": { ""stepDefinitionSkeletonStyle"": ""RegexAttribute"" }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.StepDefinitionSkeletonStyle.Should().Be(StepDefinitionSkeletonStyle.RegexAttribute);
        }
        public void Check_Trace_traceTimings_as_False()
        {
            string config = @"{
                                ""trace"": { ""traceTimings"": false }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.TraceTimings.Should().BeFalse();
        }
        public void Check_Trace_minTracedDuration()
        {
            string config = @"{
                                ""trace"": { ""minTracedDuration"": ""0:0:0:1.0"" }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.MinTracedDuration.Should().Be(TimeSpan.FromSeconds(1));
        }
        public void Check_Trace_traceSuccessfulSteps_as_True()
        {
            string config = @"{
                                ""trace"": { ""traceSuccessfulSteps"": true }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.TraceSuccessfulSteps.Should().BeTrue();
        }
        public void Check_Runtime_missingOrPendingStepsOutcome_as_Inconclusive()
        {
            string config = @"{
                                ""runtime"": { ""missingOrPendingStepsOutcome"": ""Inconclusive"" }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.MissingOrPendingStepsOutcome.Should().Be(MissingOrPendingStepsOutcome.Inconclusive);
        }
Esempio n. 7
0
        public void Check_CucumberMessages_Enabled_False()
        {
            string config = @"<specflow>
                                <cucumber-messages enabled=""false""/>
                            </specflow>";

            var configSection = ConfigurationSectionHandler.CreateFromXml(config);

            var runtimeConfig = new AppConfigConfigurationLoader().LoadAppConfig(ConfigurationLoader.GetDefault(), configSection);

            runtimeConfig.CucumberMessagesConfiguration.Enabled.Should().BeFalse();
        }
Esempio n. 8
0
        public virtual IObjectContainer CreateGlobalContainer(Assembly testAssembly, IRuntimeConfigurationProvider configurationProvider = null)
        {
            var container = new ObjectContainer();

            container.RegisterInstanceAs <IContainerBuilder>(this);

            RegisterDefaults(container);

            var testAssemblyProvider = container.Resolve <ITestAssemblyProvider>();

            testAssemblyProvider.RegisterTestAssembly(testAssembly);

            if (configurationProvider != null)
            {
                container.RegisterInstanceAs(configurationProvider);
            }

            configurationProvider = configurationProvider ?? container.Resolve <IRuntimeConfigurationProvider>();

            container.RegisterTypeAs <RuntimePluginEvents, RuntimePluginEvents>(); //NOTE: we need this unnecessary registration, due to a bug in BoDi (does not inherit non-registered objects)
            var runtimePluginEvents = container.Resolve <RuntimePluginEvents>();

            SpecFlowConfiguration specFlowConfiguration = ConfigurationLoader.GetDefault();

            specFlowConfiguration = configurationProvider.LoadConfiguration(specFlowConfiguration);

            if (specFlowConfiguration.CustomDependencies != null)
            {
                container.RegisterFromConfiguration(specFlowConfiguration.CustomDependencies);
            }

            var unitTestProviderConfigration = container.Resolve <UnitTestProviderConfiguration>();

            LoadPlugins(configurationProvider, container, runtimePluginEvents, specFlowConfiguration, unitTestProviderConfigration, testAssembly);

            runtimePluginEvents.RaiseConfigurationDefaults(specFlowConfiguration);

            runtimePluginEvents.RaiseRegisterGlobalDependencies(container);

            container.RegisterInstanceAs(specFlowConfiguration);

            if (unitTestProviderConfigration != null)
            {
                container.RegisterInstanceAs(container.Resolve <IUnitTestRuntimeProvider>(unitTestProviderConfigration.UnitTestProvider ?? ConfigDefaults.UnitTestProviderName));
            }

            runtimePluginEvents.RaiseCustomizeGlobalDependencies(container, specFlowConfiguration);

            container.Resolve <IConfigurationLoader>().TraceConfigSource(container.Resolve <ITraceListener>(), specFlowConfiguration);

            return(container);
        }
Esempio n. 9
0
        public void Check_StepAssemblies_IsEmpty()
        {
            string config = @"{
                                  ""stepAssemblies"" : [
                                 ]
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.AdditionalStepAssemblies.Should().BeEmpty();
        }
Esempio n. 10
0
        public void GetMessageSinksFromConfiguration_Cucumber_Messages_Are_Enabled__Default_Sink()
        {
            var specFlowConfiguration = ConfigurationLoader.GetDefault();

            specFlowConfiguration.CucumberMessagesConfiguration.Enabled = true;

            var sinkProvider = new SinkProvider(specFlowConfiguration, new Mock <IBinaryFileAccessor>().Object, new Mock <IProtobufFileNameResolver>().Object);

            sinkProvider.GetMessageSinksFromConfiguration().Should().HaveCount(1);
            var cucumberMessageSink = sinkProvider.GetMessageSinksFromConfiguration().First();

            cucumberMessageSink.Should().BeOfType <ProtobufFileSink>();
        }
Esempio n. 11
0
        public void Should_be_able_to_change_default_configuration_from_a_plugin()
        {
            var pluginWithCustomConfiguration = new PluginWithCustomConfiguration(conf => conf.StopAtFirstError = true);
            var runtimePluginEvents           = new RuntimePluginEvents();

            pluginWithCustomConfiguration.Initialize(runtimePluginEvents, new RuntimePluginParameters(), new UnitTestProviderConfiguration());

            var specFlowConfiguration = ConfigurationLoader.GetDefault();

            runtimePluginEvents.RaiseConfigurationDefaults(specFlowConfiguration);

            specFlowConfiguration.StopAtFirstError.Should().BeTrue();
        }
Esempio n. 12
0
        public void Check_CucumberMessages_Enabled_False()
        {
            string config = @"{
                                ""cucumber-messages"":
                                {
                                    ""enabled"": false
                                }
                            }";

            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.CucumberMessagesConfiguration.Enabled.Should().BeFalse();
        }
Esempio n. 13
0
        public void Check_Trace_StepDefinitionSkeletonStyle_MethodNameUnderscores()
        {
            string config = @"{
                              ""specflow"": {
                                ""trace"": { ""stepDefinitionSkeletonStyle"": ""MethodNameUnderscores"" }
                              }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.StepDefinitionSkeletonStyle.Should().Be(StepDefinitionSkeletonStyle.MethodNameUnderscores);
        }
Esempio n. 14
0
        public void Check_Runtime_missingOrPendingStepsOutcome_as_Error()
        {
            string config = @"{
                                ""specflow"": {
                                ""runtime"": { ""missingOrPendingStepsOutcome"": ""Error"" }
                                }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.MissingOrPendingStepsOutcome.Should().Be(MissingOrPendingStepsOutcome.Error);
        }
Esempio n. 15
0
        public void GetMessageSinksFromConfiguration_Unknown_sinks_are_configured__Error_is_thrown()
        {
            var specFlowConfiguration = ConfigurationLoader.GetDefault();

            specFlowConfiguration.CucumberMessagesConfiguration.Enabled = true;

            specFlowConfiguration.CucumberMessagesConfiguration.Sinks.Add(new CucumberMessagesSink("unknown_type", "path_to_something"));

            var sinkProvider = new SinkProvider(specFlowConfiguration, new Mock <IBinaryFileAccessor>().Object, new Mock <IProtobufFileNameResolver>().Object);

            Action action = () => sinkProvider.GetMessageSinksFromConfiguration();

            action.Should().Throw <NotImplementedException>().WithMessage("The sink type unknown_type");
        }
Esempio n. 16
0
        public void Check_Runtime_stopAtFirstError_as_true()
        {
            string config = @"{
                              ""specflow"": {
                                ""runtime"": { ""stopAtFirstError"": ""true"" }
                              }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.StopAtFirstError.Should().BeTrue();
        }
Esempio n. 17
0
        public void CheckUnitTestProvider()
        {
            string config = @"{
                              ""specflow"": {
                                ""unitTestProvider"": { ""name"": ""XUnit"" }
                              }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.UnitTestProvider.Should().Be("XUnit");
        }
Esempio n. 18
0
        public void CheckBindingCulture()
        {
            string config = @"{
                              ""specflow"": {
                                ""bindingCulture"": { ""name"": ""de"" }
                              }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.BindingCulture.TwoLetterISOLanguageName.Should().Be("de");
        }
        public void TypeToTypeConverterShouldConvertTableToTable()
        {
            TypeToTypeConverter stepTransformationInstance = new TypeToTypeConverter();
            var transformMethod           = stepTransformationInstance.GetType().GetMethod("TableToTableConvert");
            var stepTransformationBinding = CreateStepTransformationBinding(@"", transformMethod);

            var      invoker = new BindingInvoker(ConfigurationLoader.GetDefault(), new Mock <IErrorProvider>().Object);
            TimeSpan duration;
            var      result = invoker.InvokeBinding(stepTransformationBinding, contextManagerStub.Object, new object[] { new Table("h1") }, new Mock <ITestTracer>().Object, out duration);

            Assert.NotNull(result);
            Assert.That(result.GetType(), Is.EqualTo(typeof(Table)));
            Assert.That(((Table)result).Header, Is.EqualTo(new string[] { "transformed column", "h1" }));
        }
Esempio n. 20
0
        public void Check_Plugins_TwoSameNameEntry()
        {
            string config = @"<specflow><plugins>
                                <add name=""testEntry""/>
                                <add name=""testEntry""/>
                              </plugins></specflow>";

            var configSection = ConfigurationSectionHandler.CreateFromXml(config);

            var runtimeConfig = new AppConfigConfigurationLoader().LoadAppConfig(ConfigurationLoader.GetDefault(), configSection);

            runtimeConfig.Plugins.Count.Should().Be(1);
            runtimeConfig.Plugins[0].Name.Should().Be("testEntry");
        }
        public void TypeToTypeConverterShouldConvertStringToString()
        {
            TypeToTypeConverter stepTransformationInstance = new TypeToTypeConverter();
            var transformMethod           = stepTransformationInstance.GetType().GetMethod("StringToStringConvert");
            var stepTransformationBinding = CreateStepTransformationBinding(@"", transformMethod);

            var      invoker = new BindingInvoker(ConfigurationLoader.GetDefault(), new Mock <IErrorProvider>().Object);
            TimeSpan duration;
            var      result = invoker.InvokeBinding(stepTransformationBinding, contextManagerStub.Object, new object[] { "xyz" }, new Mock <ITestTracer>().Object, out duration);

            Assert.NotNull(result);
            Assert.That(result.GetType(), Is.EqualTo(typeof(string)));
            Assert.That(((string)result), Is.EqualTo("prefix xyz"));
        }
Esempio n. 22
0
        public void Check_Plugins_NotInConfigFile()
        {
            string config = @"{
                              ""specflow"": {
    
                              }
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.Plugins.Should().BeEmpty();
        }
Esempio n. 23
0
        protected TestGenerator CreateTestGenerator(ProjectSettings projectSettings)
        {
            Configuration.SpecFlowConfiguration generatorSpecFlowConfiguration = ConfigurationLoader.GetDefault();
            CodeDomHelper            codeDomHelper            = new CodeDomHelper(CodeDomProviderLanguage.CSharp);
            UnitTestFeatureGenerator unitTestFeatureGenerator = new UnitTestFeatureGenerator(new NUnitTestGeneratorProvider(codeDomHelper), codeDomHelper, generatorSpecFlowConfiguration, new DecoratorRegistryStub());

            var gherkinParserFactory = new SpecFlowGherkinParserFactory();

            var generatorRegistryStub = new Mock <IFeatureGeneratorRegistry>();

            generatorRegistryStub.Setup(r => r.CreateGenerator(It.IsAny <SpecFlowDocument>())).Returns(unitTestFeatureGenerator);

            return(new TestGenerator(generatorSpecFlowConfiguration, projectSettings, TestHeaderWriterStub.Object, TestUpToDateCheckerStub.Object, generatorRegistryStub.Object, codeDomHelper, gherkinParserFactory));
        }
Esempio n. 24
0
        public void Check_Defaults_Only_Root_Objects()
        {
            string configAsJson = @"{
                ""bindingCulture"": {},
                ""language"": {},
                ""generator"": {},
                ""runtime"": {},
                ""trace"": {}
            }";

            var config = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), configAsJson);

            AssertDefaultJsonSpecFlowConfiguration(config);
        }
Esempio n. 25
0
        public async Task TypeToTypeConverterShouldConvertStringToString()
        {
            TypeToTypeConverter stepTransformationInstance = new TypeToTypeConverter();
            var transformMethod           = stepTransformationInstance.GetType().GetMethod("StringToStringConvert");
            var stepTransformationBinding = CreateStepTransformationBinding(@"", transformMethod);

            var invoker = new BindingInvoker(ConfigurationLoader.GetDefault(), new Mock <IErrorProvider>().Object, new BindingDelegateInvoker());

            var(result, _) = await invoker.InvokeBindingAsync(stepTransformationBinding, contextManagerStub.Object, new object[] { "xyz" }, new Mock <ITestTracer>().Object);

            Assert.NotNull(result);
            result.GetType().Should().Be <string>();
            result.Should().Be("prefix xyz");
        }
Esempio n. 26
0
        public void Check_StepAssemblies_OneEntry()
        {
            string config = @"{
                                ""stepAssemblies"": 
                                   [ {""assembly"": ""testEntry""} ]
                            }";



            var runtimeConfig = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), config);

            runtimeConfig.AdditionalStepAssemblies.Count.Should().Be(1);
            runtimeConfig.AdditionalStepAssemblies.First().Should().Be("testEntry");
        }
Esempio n. 27
0
        public async Task TypeToTypeConverterShouldConvertTableToTable()
        {
            TypeToTypeConverter stepTransformationInstance = new TypeToTypeConverter();
            var transformMethod           = stepTransformationInstance.GetType().GetMethod("TableToTableConvert");
            var stepTransformationBinding = CreateStepTransformationBinding(@"", transformMethod);

            var invoker = new BindingInvoker(ConfigurationLoader.GetDefault(), new Mock <IErrorProvider>().Object, new BindingDelegateInvoker());

            var(result, _) = await invoker.InvokeBindingAsync(stepTransformationBinding, contextManagerStub.Object, new object[] { new Table("h1") }, new Mock <ITestTracer>().Object);

            Assert.NotNull(result);

            result.GetType().Should().Be <Table>();
            ((Table)result).Header.Should().BeEquivalentTo(new string[] { "transformed column", "h1" });
        }
Esempio n. 28
0
        public void Check_Generator_NonParallelizableMarkers_EmptyList()
        {
            string configAsJson = @"{
                                        ""generator"":
                                        {
                                            ""addNonParallelizableMarkerForTags"":
                                            [
                                            ]
                                        }
                                    }";

            var config = new JsonConfigurationLoader().LoadJson(ConfigurationLoader.GetDefault(), configAsJson);

            config.AddNonParallelizableMarkerForTags.Should().BeEmpty();
        }
Esempio n. 29
0
        public void Check_Trace_Listener()
        {
            string config = @"<specflow><trace listener=""TraceListener"" /></specflow>";

            var configSection = ConfigurationSectionHandler.CreateFromXml(config);

            var runtimeConfig = new AppConfigConfigurationLoader().LoadAppConfig(ConfigurationLoader.GetDefault(), configSection);

            runtimeConfig.CustomDependencies.Count.Should().Be(1);

            foreach (ContainerRegistrationConfigElement containerRegistrationConfigElement in runtimeConfig.CustomDependencies)
            {
                containerRegistrationConfigElement.Implementation.Should().Be("TraceListener");
            }
        }
Esempio n. 30
0
        public void Check_StepAssemblies_TwoEntry()
        {
            string config = @"<specflow><stepAssemblies>
                                <stepAssembly assembly=""testEntry1""/>
                                <stepAssembly assembly=""testEntry2""/>
                              </stepAssemblies></specflow>";

            var configSection = ConfigurationSectionHandler.CreateFromXml(config);

            var runtimeConfig = new AppConfigConfigurationLoader().LoadAppConfig(ConfigurationLoader.GetDefault(), configSection);

            runtimeConfig.AdditionalStepAssemblies.Count.Should().Be(2);
            runtimeConfig.AdditionalStepAssemblies[0].Should().Be("testEntry1");
            runtimeConfig.AdditionalStepAssemblies[1].Should().Be("testEntry2");
        }