Skip to content

Commit d6227f9

Browse files
committed
Merge pull request #21 from mwhelan/ReportingRefactor
Reporting refactor
2 parents adbe3da + c50b07c commit d6227f9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+988
-425
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ bin/
33
obj/
44
*.user
55
*.suo
6+
*.DotSettings
67
*~
78
*.swp
89
*.orig

.nuget/NuGet.Config

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<configuration>
3-
<solution>
4-
<add key="disableSourceControlIntegration" value="true" />
5-
</solution>
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<configuration>
3+
<solution>
4+
<add key="disableSourceControlIntegration" value="true" />
5+
</solution>
66
</configuration>

TestStack.BDDfy.Samples/Atm/HtmlReportConfig.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using TestStack.BDDfy.Processors.HtmlReporter;
1+
using TestStack.BDDfy.Processors.Reporters.Html;
22

33
namespace TestStack.BDDfy.Samples.Atm
44
{

TestStack.BDDfy.Samples/BDDfyConfiguration.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using NUnit.Framework;
22
using TestStack.BDDfy.Configuration;
3-
using TestStack.BDDfy.Processors.HtmlReporter;
3+
using TestStack.BDDfy.Processors.Reporters.Html;
44
using TestStack.BDDfy.Samples.Atm;
55
using TestStack.BDDfy.Samples.TicTacToe;
66

@@ -14,6 +14,7 @@ public void Config()
1414
{
1515
Configurator.Processors.Add(() => new CustomTextReporter());
1616
Configurator.BatchProcessors.MarkDownReport.Enable();
17+
Configurator.BatchProcessors.DiagnosticsReport.Enable();
1718
Configurator.BatchProcessors.Add(new HtmlReporter(new HtmlReportConfig()));
1819
}
1920
}

TestStack.BDDfy.Samples/TestStack.BDDfy.Samples.csproj

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@
6969
</ProjectReference>
7070
</ItemGroup>
7171
<ItemGroup>
72-
<None Include="packages.config" />
72+
<None Include="packages.config">
73+
<SubType>Designer</SubType>
74+
</None>
7375
</ItemGroup>
7476
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
7577
<PropertyGroup>

TestStack.BDDfy.Tests/Configuration/BatchProcessorsTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
using System.Linq;
33
using TestStack.BDDfy.Configuration;
44
using TestStack.BDDfy.Processors;
5-
using TestStack.BDDfy.Processors.HtmlReporter;
5+
using TestStack.BDDfy.Processors.Reporters.Html;
6+
using TestStack.BDDfy.Processors.Reporters.MarkDown;
67

78
namespace TestStack.BDDfy.Tests.Configuration
89
{

TestStack.BDDfy.Tests/Configuration/ProcessorPipelineTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using NUnit.Framework;
33
using TestStack.BDDfy.Configuration;
44
using TestStack.BDDfy.Processors;
5+
using TestStack.BDDfy.Processors.Reporters;
56

67
namespace TestStack.BDDfy.Tests.Configuration
78
{
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using NSubstitute;
2+
using NUnit.Framework;
3+
using TestStack.BDDfy.Processors.Reporters;
4+
using TestStack.BDDfy.Processors.Reporters.Diagnostics;
5+
using TestStack.BDDfy.Processors.Reporters.Serializers;
6+
using TestStack.BDDfy.Tests.Processors.Reports;
7+
8+
namespace TestStack.BDDfy.Tests.Processors.Diagnostics
9+
{
10+
[TestFixture]
11+
public class DiagnosticsReportBuilderSpecs
12+
{
13+
[Test]
14+
public void ShouldSerializeDiagnosticDataToSpecifiedFormat()
15+
{
16+
var serializer = Substitute.For<ISerializer>();
17+
var testData = new ReportTestData().CreateTwoStoriesEachWithTwoScenariosWithThreeStepsOfFiveMilliseconds();
18+
var model = new FileReportModel(testData);
19+
var sut = new DiagnosticsReportBuilder(serializer);
20+
21+
sut.CreateReport(model);
22+
23+
serializer.Received().Serialize(Arg.Any<object>());
24+
}
25+
}
26+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using NSubstitute;
4+
using NUnit.Framework;
5+
using TestStack.BDDfy.Processors;
6+
using TestStack.BDDfy.Processors.Reporters;
7+
using TestStack.BDDfy.Processors.Reporters.Diagnostics;
8+
using TestStack.BDDfy.Processors.Reporters.Writers;
9+
10+
namespace TestStack.BDDfy.Tests.Processors.Diagnostics
11+
{
12+
[TestFixture]
13+
public class DiagnosticsReporterSpecs
14+
{
15+
private IReportBuilder _builder;
16+
private IReportWriter _writer;
17+
18+
[Test]
19+
public void ShouldCreateReportIfProcessingSucceeds()
20+
{
21+
var sut = CreateSut();
22+
_builder.CreateReport(Arg.Any<FileReportModel>()).Returns("Report Data");
23+
24+
sut.Process(new List<Core.Story>());
25+
26+
_writer.Received().OutputReport("Report Data", Arg.Any<string>(), Arg.Any<string>());
27+
}
28+
29+
[Test]
30+
public void ShouldPrintErrorInReportIfProcessingFails()
31+
{
32+
var sut = CreateSut();
33+
_builder.CreateReport(Arg.Any<FileReportModel>()).Returns(x => { throw new Exception("Error occurred."); });
34+
35+
sut.Process(new List<Core.Story>());
36+
37+
_writer.Received().OutputReport("There was an error compiling the json report: Error occurred.",
38+
Arg.Any<string>(), Arg.Any<string>());
39+
}
40+
41+
private DiagnosticsReporter CreateSut()
42+
{
43+
_builder = Substitute.For<IReportBuilder>();
44+
_writer = Substitute.For<IReportWriter>();
45+
return new DiagnosticsReporter(_builder, _writer);
46+
}
47+
}
48+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
using System.Collections.Generic;
2+
using System.Linq;
3+
using NUnit.Framework;
4+
using TestStack.BDDfy.Processors.Reporters;
5+
using TestStack.BDDfy.Processors.Reporters.Diagnostics;
6+
using TestStack.BDDfy.Tests.Processors.Reports;
7+
8+
namespace TestStack.BDDfy.Tests.Processors.Diagnostics
9+
{
10+
[TestFixture]
11+
public class WhenBuildingReportDiagnostics
12+
{
13+
private DiagnosticsReportBuilder _sut;
14+
private IEnumerable<Core.Story> _stories;
15+
private IList<StoryDiagnostic> _result;
16+
17+
public void GivenADiagnosticsReportBuilder()
18+
{
19+
_sut = new DiagnosticsReportBuilder();
20+
}
21+
22+
public void AndGivenTwoStoriesEachWithTwoScenariosWithThreeStepsOfFiveMilliseconds()
23+
{
24+
_stories = new ReportTestData().CreateTwoStoriesEachWithTwoScenariosWithThreeStepsOfFiveMilliseconds();
25+
}
26+
27+
public void WhenTheDiagnosticDataIsCalculated()
28+
{
29+
_result = _sut.GetDiagnosticData(new FileReportModel(_stories));
30+
}
31+
32+
public void ThenTwoStoriesShouldBeReturned()
33+
{
34+
Assert.AreEqual(2, _result.Count);
35+
}
36+
37+
public void AndThenEachStoryShouldHaveDurationOf30Milliseconds()
38+
{
39+
_result.ToList().ForEach(story => Assert.AreEqual(30, story.Duration));
40+
}
41+
42+
public void AndThenEachScenarioShouldHaveDurationOf10Milliseconds()
43+
{
44+
_result[0].Scenarios.ForEach(scenario => Assert.AreEqual(15, scenario.Duration));
45+
_result[1].Scenarios.ForEach(scenario => Assert.AreEqual(15, scenario.Duration));
46+
}
47+
48+
public void AndThenEachStepShouldHaveDurationOf5Milliseconds()
49+
{
50+
_result[0].Scenarios.ForEach(scenario => scenario.Steps.ForEach(step => Assert.AreEqual(5, step.Duration)));
51+
_result[1].Scenarios.ForEach(scenario => scenario.Steps.ForEach(step => Assert.AreEqual(5, step.Duration)));
52+
}
53+
54+
[Test]
55+
public void RunSpecs()
56+
{
57+
this.BDDfy();
58+
}
59+
}
60+
}

0 commit comments

Comments
 (0)