예제 #1
0
        public string FeatureToHtml(SquashFeature feature)
        {
            var template = new Template(Templates.Feature);

            template.Replace("name", feature.Name);
            template.Replace("description", feature.Description);

            var scenarios = "";

            foreach (var scenario in feature.Scenarios)
            {
                var t = new Template(Templates.Scenario);
                t.Replace("name", scenario.Name);
                t.Replace("tags", string.Join(" ", scenario.Tags.Select(tag => "<span class='tag'>" + tag + "</span>")));

                var steps = "";
                foreach (var stepDef in scenario.StepDefinitions)
                {
                    var t1 = new Template(Templates.StepDefinition);
                    t1.Replace("action", stepDef.Action.ToString());
                    t1.Replace("statement", stepDef.Statement);

                    if (stepDef.Table != null && stepDef.Table.Count > 0)
                    {
                        var header = $"<tr><th>{string.Join("</th><th>", stepDef.Table[0].Cells)}</th></tr>";
                        var table  = stepDef.Table.Skip(1).Select(r => $"<tr><td>{string.Join("</td><td>", r.Cells)}</td></tr>");
                        t1.Replace("table", "<table>" + header + string.Join("", table) + "</table>");
                    }
                    else
                    {
                        t1.Replace("table", "");
                    }

                    steps += t1.Get();
                }

                var outline = scenario as SquashScenarioOutline;
                var scens   = "";
                if (outline != null)
                {
                    foreach (var scenar in outline.Scenarios)
                    {
                        scens += $"<div class='so-scenarios'>{scenar.Name}</div>";
                        scens += "<table>";
                        foreach (var scen in scenar.Rows)
                        {
                            scens += "<tr><td>" + string.Join("</td><td>", scen) + "</td></tr>";  //$"<div>{scen}</div>";
                        }
                        scens += "</table>";
                    }
                }

                t.Replace("scenarios", scens);

                t.Replace("stepDefinitions", steps);

                scenarios += t.Get();
            }

            template.Replace("scenarios", scenarios);

            return(template.Get());
        }