public string CreateReport(FileReportModel model) { var report = new StringBuilder(); foreach (var story in model.Stories) { if (story.Metadata != null) { report.AppendLine(string.Format("## {0}{1}", story.Metadata.TitlePrefix, story.Metadata.Title)); if (!string.IsNullOrEmpty(story.Metadata.Narrative1)) report.AppendLine(string.Format(" **{0}** ", story.Metadata.Narrative1)); if (!string.IsNullOrEmpty(story.Metadata.Narrative2)) report.AppendLine(string.Format(" **{0}** ", story.Metadata.Narrative2)); if (!string.IsNullOrEmpty(story.Metadata.Narrative3)) report.AppendLine(string.Format(" **{0}** ", story.Metadata.Narrative3)); } report.AppendLine(); // separator foreach (var scenario in story.Scenarios) { report.AppendLine(string.Format("### {0}", scenario.Title)); foreach (var step in scenario.Steps) report.AppendLine(" " + step.Title + " "); report.AppendLine(); // separator } } return report.ToString(); }
public string CreateReport(FileReportModel model) { var report = new StringBuilder(); foreach (var story in model.Stories) { report.AppendLine(string.Format("## Story: {0}", story.MetaData.Title)); report.AppendLine(string.Format(" **{0}** ", story.MetaData.AsA)); report.AppendLine(string.Format(" **{0}** ", story.MetaData.IWant)); report.AppendLine(string.Format(" **{0}** ", story.MetaData.SoThat)); report.AppendLine(); // separator foreach (var scenario in story.Scenarios) { report.AppendLine(string.Format("### {0}", scenario.Title)); foreach (var step in scenario.Steps) report.AppendLine(" " + step.StepTitle + " "); report.AppendLine(); // separator } } return report.ToString(); }
public IList <StoryDiagnostic> GetDiagnosticData(FileReportModel viewModel) { var graph = new List <StoryDiagnostic>(); foreach (var story in viewModel.Stories) { var name = story.Namespace; if (story.Metadata != null) { name = story.Metadata.Title; } graph.Add(new StoryDiagnostic { Name = name, Duration = story.Scenarios.Sum(x => x.Duration.Milliseconds), Scenarios = story.Scenarios.Select(scenario => new StoryDiagnostic.Scenario() { Name = scenario.Title, Duration = scenario.Duration.Milliseconds, Steps = scenario.Steps.Select(step => new StoryDiagnostic.Step() { Name = step.Title, Duration = step.Duration.Milliseconds }).ToList() }).ToList() }); } return(graph); }
public string CreateReport(FileReportModel model) { var graph = GetDiagnosticData(model); var rootObject = new { Stories = graph }; return(_serializer.Serialize(rootObject)); }
public IList<StoryDiagnostic> GetDiagnosticData(FileReportModel viewModel) { var graph = new List<StoryDiagnostic>(); foreach (var story in viewModel.Stories) { var name = story.Namespace; if (story.Metadata != null) name = story.Metadata.Title; graph.Add(new StoryDiagnostic { Name = name, Duration = story.Scenarios.Sum(x => x.Duration.Milliseconds), Scenarios = story.Scenarios.Select(scenario => new StoryDiagnostic.Scenario() { Name = scenario.Title, Duration = scenario.Duration.Milliseconds, Steps = scenario.Steps.Select(step => new StoryDiagnostic.Step() { Name = step.Title, Duration = step.Duration.Milliseconds }).ToList() }).ToList() }); } return graph; }
public void ShouldProduceExpectedMarkdown() { var model = new FileReportModel(new ReportTestData().CreateMixContainingEachTypeOfOutcome().ToReportModel()); var sut = new MarkDownReportBuilder(); ReportApprover.Approve(model, sut); }
public void TagsAreReportedInMarkdownReport() { var reportModel = this.CreateReportModel(); var model = new FileReportModel(reportModel); var sut = new MarkDownReportBuilder(); ReportApprover.Approve(model, sut); }
public static void Approve(FileReportModel model, IReportBuilder reportBuilder) { // setting the culture to make sure the date is formatted the same on all machines using (new TemporaryCulture("en-GB")) { var result = reportBuilder.CreateReport(model); Approvals.Verify(result, s => Scrub(StackTraceScrubber.ScrubLineNumbers(StackTraceScrubber.ScrubPaths(s)))); } }
public static void Approve(FileReportModel model, IReportBuilder reportBuilder) { // setting the culture to make sure the date is formatted the same on all machines using (new TemporaryCulture("en-GB")) { var result = reportBuilder.CreateReport(model); result.ShouldMatchApproved(c => c .WithScrubber(Scrub) .UseCallerLocation()); } }
public void ShouldSerializeDiagnosticDataToSpecifiedFormat() { var serializer = Substitute.For <ISerializer>(); var testData = new ReportTestData().CreateTwoStoriesEachWithTwoScenariosWithThreeStepsOfFiveMilliseconds(); var model = new FileReportModel(testData); var sut = new DiagnosticsReportBuilder(serializer); sut.CreateReport(model); serializer.Received().Serialize(Arg.Any <object>()); }
public void ShouldProduceExpectedMarkdownWithExamples() { var model = new FileReportModel(new ReportTestData().CreateTwoStoriesEachWithOneFailingScenarioAndOnePassingScenarioWithThreeStepsOfFiveMillisecondsAndEachHasTwoExamples() .ToReportModel()) { RunDate = new DateTime(2014, 3, 25, 11, 30, 5) }; var sut = new MarkDownReportBuilder(); ReportApprover.Approve(model, sut); }
public async Task <IActionResult> FileReport(string id) { if (this.userManager.FindByIdAsync(id).Result == null) { this.TempData.AddErrorMessage("No such user exists."); return(RedirectToAction("Index", "Home", new { area = "" })); } FileReportModel model = new FileReportModel() { ReportedUserId = id }; return(View(model)); }
public void Process(IEnumerable <Story> stories) { var viewModel = new FileReportModel(stories.ToReportModel()); string report; try { report = _builder.CreateReport(viewModel); } catch (Exception ex) { report = ex.Message + ex.StackTrace; } _writer.OutputReport(report, "BDDfy.md"); }
public async Task <IActionResult> FileReport(FileReportModel model) { if (this.userManager.FindByIdAsync(model.ReportedUserId).Result == null) { this.TempData.AddErrorMessage("No such user exists."); return(RedirectToAction("Index", "Home", new { area = "" })); } User currentUser = await this.userManager.FindByEmailAsync(this.User.Identity.Name); await this.reportService.CreateReport(currentUser.Id, model.ReportedUserId, model.Content); this.TempData.AddSuccessMessage("Report successfully filed. It will be reviewed by an admin soon."); return(RedirectToAction("Index", "Home", new { area = "" })); }
public void Process(IEnumerable<Story> stories) { var viewModel = new FileReportModel(stories); string report; try { report = _builder.CreateReport(viewModel); } catch (Exception ex) { report = ex.Message + ex.StackTrace; } _writer.OutputReport(report, "Diagnostics.json"); }
public void Process(IEnumerable<Core.Story> stories) { const string error = "There was an error compiling the json report: "; var viewModel = new FileReportModel(stories); string report; try { report = _builder.CreateReport(viewModel); } catch (Exception ex) { report = error + ex.Message; } _writer.OutputReport(report, "Diagnostics.json"); }
public string CreateReport(FileReportModel model) { var report = new StringBuilder(); foreach (var story in model.Stories) { if (story.Metadata != null) { report.AppendLine(string.Format("## Story: {0}", story.Metadata.Title)); if (!string.IsNullOrEmpty(story.Metadata.Narrative1)) { report.AppendLine(string.Format(" **{0}** ", story.Metadata.Narrative1)); } if (!string.IsNullOrEmpty(story.Metadata.Narrative2)) { report.AppendLine(string.Format(" **{0}** ", story.Metadata.Narrative2)); } if (!string.IsNullOrEmpty(story.Metadata.Narrative3)) { report.AppendLine(string.Format(" **{0}** ", story.Metadata.Narrative3)); } } report.AppendLine(); // separator foreach (var scenario in story.Scenarios) { report.AppendLine(string.Format("### {0}", scenario.Title)); foreach (var step in scenario.Steps) { report.AppendLine(" " + step.Title + " "); } report.AppendLine(); // separator } } return(report.ToString()); }
public string CreateReport(FileReportModel model) { var report = new StringBuilder(); foreach (var story in model.Stories) { _exceptions.Clear(); if (story.Metadata != null) { report.AppendLine(string.Format("## {0}{1}", story.Metadata.TitlePrefix, story.Metadata.Title)); if (!string.IsNullOrEmpty(story.Metadata.Narrative1)) { report.AppendLine(string.Format(" **{0}** ", story.Metadata.Narrative1)); } if (!string.IsNullOrEmpty(story.Metadata.Narrative2)) { report.AppendLine(string.Format(" **{0}** ", story.Metadata.Narrative2)); } if (!string.IsNullOrEmpty(story.Metadata.Narrative3)) { report.AppendLine(string.Format(" **{0}** ", story.Metadata.Narrative3)); } } report.AppendLine(); // separator foreach (var scenarioGroup in story.Scenarios.GroupBy(s => s.Id)) { if (scenarioGroup.Count() > 1) { // all scenarios in an example based scenario share the same header and narrative var exampleScenario = story.Scenarios.First(); report.AppendLine(string.Format("### {0}", exampleScenario.Title)); if (exampleScenario.Steps.Any()) { foreach (var step in exampleScenario.Steps.Where(s => s.ShouldReport)) { report.AppendLine(" " + HttpUtility.HtmlEncode(step.Title) + " "); } } report.AppendLine(); // separator WriteExamples(report, exampleScenario, scenarioGroup); ReportTags(report, exampleScenario.Tags); } else { foreach (var scenario in scenarioGroup) { report.AppendLine(string.Format("### {0}", scenario.Title)); foreach (var step in scenario.Steps.Where(s => s.ShouldReport)) { report.AppendLine(" " + HttpUtility.HtmlEncode(step.Title) + " "); } report.AppendLine(); // separator } var exampleScenario = story.Scenarios.First(); ReportTags(report, exampleScenario.Tags); } } ReportExceptions(report); } _exceptions.Clear(); return(report.ToString()); }
string IReportBuilder.CreateReport(FileReportModel model) { return CreateReport(model as HtmlReportViewModel); }
string IReportBuilder.CreateReport(FileReportModel model) { return(CreateReport(model as HtmlReportModel)); }
public string CreateReport(FileReportModel model) { var graph = GetDiagnosticData(model); var rootObject = new { Stories = graph }; return _serializer.Serialize(rootObject); }
public string CreateReport(FileReportModel model) { var report = new StringBuilder(); foreach (var story in model.Stories) { _exceptions.Clear(); if (story.Metadata != null) { report.AppendLine(string.Format("## {0}{1}", story.Metadata.TitlePrefix, story.Metadata.Title)); if (!string.IsNullOrEmpty(story.Metadata.Narrative1)) report.AppendLine(string.Format(" **{0}** ", story.Metadata.Narrative1)); if (!string.IsNullOrEmpty(story.Metadata.Narrative2)) report.AppendLine(string.Format(" **{0}** ", story.Metadata.Narrative2)); if (!string.IsNullOrEmpty(story.Metadata.Narrative3)) report.AppendLine(string.Format(" **{0}** ", story.Metadata.Narrative3)); } report.AppendLine(); // separator foreach (var scenarioGroup in story.Scenarios.GroupBy(s => s.Id)) { if (scenarioGroup.Count() > 1) { // all scenarios in an example based scenario share the same header and narrative var exampleScenario = story.Scenarios.First(); report.AppendLine(string.Format("### {0}", exampleScenario.Title)); if (exampleScenario.Steps.Any()) { foreach (var step in exampleScenario.Steps.Where(s => s.ShouldReport)) report.AppendLine(" " + HttpUtility.HtmlEncode(step.Title) + " "); } report.AppendLine(); // separator WriteExamples(report, exampleScenario, scenarioGroup); ReportTags(report, exampleScenario.Tags); } else { foreach (var scenario in scenarioGroup) { report.AppendLine(string.Format("### {0}", scenario.Title)); foreach (var step in scenario.Steps.Where(s => s.ShouldReport)) report.AppendLine(" " + HttpUtility.HtmlEncode(step.Title) + " "); report.AppendLine(); // separator } var exampleScenario = story.Scenarios.First(); ReportTags(report, exampleScenario.Tags); } } ReportExceptions(report); } _exceptions.Clear(); return report.ToString(); }