private void SetupMetadata(TestClassGenerationContext generationContext, out bool isIgnored)
        {
            var metadata = FeatureMetadata.GetFeatureMetadata(generationContext.Document);

            _container.Resolve <FeatureMetadataProvider>()[generationContext.Document] = metadata;
            isIgnored = metadata.IsIgnored();
        }
Ejemplo n.º 2
0
        public static FeatureMetadata GetFeatureMetadata(SpecFlowDocument document)
        {
            var metadata = new FeatureMetadata();
            var lines    = File.ReadAllLines(document.SourceFilePath);

            metadata._isFeatureIgnored = ContainsAttribute(lines, document.Feature.Location, 0, IgnoreFeature);
            int previousElementLine = document.Feature.Location.Line;

            if (document.SpecFlowFeature.Background != null)
            {
                foreach (Step backgroundStep in document.SpecFlowFeature.Background.Steps)
                {
                    bool isIgnoredStep =
                        ContainsAttribute(lines, backgroundStep.Location, previousElementLine, IgnoreStep);
                    if (isIgnoredStep)
                    {
                        metadata._ignoredSteps.Add(backgroundStep);
                    }

                    previousElementLine = backgroundStep.Location.Line;
                }
            }

            foreach (Scenario scenario in document.SpecFlowFeature.Children.OfType <Scenario>())
            {
                bool isIgnoredScenario = ContainsAttribute(lines, scenario.Location, previousElementLine, IgnoreScenario);
                if (isIgnoredScenario)
                {
                    metadata._ignoredScenarios.Add(scenario);
                }

                previousElementLine = scenario.Location.Line;

                foreach (Step step in scenario.Steps)
                {
                    bool isIgnoredStep = ContainsAttribute(lines, step.Location, previousElementLine, IgnoreStep);
                    if (isIgnoredStep)
                    {
                        metadata._ignoredSteps.Add(step);
                    }

                    previousElementLine = step.Location.Line;
                }
            }

            return(metadata);
        }