Skip to content

Commit da1eeb1

Browse files
committed
Merge pull request #17 from JakeGinnivan/AnotherIteration
Another iteration
2 parents 51977bf + 7b63a34 commit da1eeb1

28 files changed

+223
-110
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Header
2+
3+
Approved Exception
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
namespace TestStack.ConventionTests.Tests
2+
{
3+
using ApprovalTests.Reporters;
4+
using NUnit.Framework;
5+
using TestStack.ConventionTests.Internal;
6+
7+
[TestFixture]
8+
[UseReporter(typeof(DiffReporter))] //NOTE: Can we take care of this in IsWithApprovedExceptions?
9+
public class ConventionAssertionClassTests
10+
{
11+
[Test]
12+
public void approval_mismatch()
13+
{
14+
//NOTE Do not approve any changes to this test
15+
var ex = Assert.Throws<ConventionFailedException>(() => Convention.IsWithApprovedExeptions(new FailingConvention(), new FakeData()));
16+
17+
StringAssert.Contains("Approved exceptions for convention differs", ex.Message);
18+
StringAssert.Contains("Failed Approval: Received file ", ex.Message);
19+
StringAssert.Contains("does not match approved file", ex.Message);
20+
}
21+
22+
public class FakeData : IConventionData
23+
{
24+
public void ThrowIfHasInvalidSource()
25+
{
26+
}
27+
}
28+
29+
public class FailingConvention : IConvention<FakeData>
30+
{
31+
public ConventionResult Execute(FakeData data)
32+
{
33+
return ConventionResult.For(new[] { "" }, "Header", (s, builder) => builder.AppendLine("Different"));
34+
}
35+
}
36+
}
37+
}

TestStack.ConventionTests.Tests/ProjectBasedConventions.BrokenReferences.received.txt

Lines changed: 0 additions & 2 deletions
This file was deleted.

TestStack.ConventionTests.Tests/ProjectBasedConventions.ReferencingBinObj.approved.txt

Lines changed: 0 additions & 3 deletions
This file was deleted.

TestStack.ConventionTests.Tests/ProjectBasedConventions.ScriptsNotEmbeddedResources.approved.txt

Lines changed: 0 additions & 3 deletions
This file was deleted.

TestStack.ConventionTests.Tests/ProjectBasedConventions.ScriptsNotEmbeddedResources.approved.txt.orig

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Some invalid assembly references found in TestStack.ConventionTests.Tests
2+
3+
bin\Debug\ApprovalTests.dll
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Some invalid assembly references found in TestStack.ConventionTests.Tests
2+
3+
bin\Debug\ApprovalTests.dll
Lines changed: 41 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
namespace TestStack.ConventionTests.Tests
22
{
33
using System.Xml.Linq;
4+
using ApprovalTests;
45
using ApprovalTests.Reporters;
56
using NSubstitute;
67
using NUnit.Framework;
@@ -9,42 +10,64 @@
910
using TestStack.ConventionTests.Tests.Properties;
1011

1112
[TestFixture]
12-
[UseReporter(typeof (DiffReporter))]
13+
[UseReporter(typeof(DiffReporter))]
1314
public class ProjectBasedConventions
1415
{
15-
public ProjectBasedConventions()
16+
Project project;
17+
IProjectProvider projectProvider;
18+
19+
[SetUp]
20+
public void Setup()
1621
{
17-
Convention.Settings.AssertInclunclusive = Assert.Inconclusive;
18-
Convention.Settings.AssertZero = (v, m) => Assert.AreEqual(0, v, m);
22+
projectProvider = Substitute.For<IProjectProvider>();
23+
var projectLocator = Substitute.For<IProjectLocator>();
24+
project = new Project(typeof(ProjectBasedConventions).Assembly, projectProvider, projectLocator);
1925
}
2026

2127
[Test]
22-
public void ReferencingBinObj()
28+
public void assemblies_referencing_bin_obj()
2329
{
24-
var projectProvider = Substitute.For<IProjectProvider>();
25-
var projectLocator = Substitute.For<IProjectLocator>();
2630
projectProvider
2731
.LoadProjectDocument(Arg.Any<string>())
2832
.Returns(XDocument.Parse(Resources.ProjectFileWithBinReference));
2933

30-
Convention.Is(new ProjectDoesNotReferenceDllsFromBinOrObjDirectories(),
31-
new Project(typeof (ProjectBasedConventions).Assembly, projectProvider, projectLocator));
34+
var ex = Assert.Throws<ConventionFailedException>(() => Convention.Is(new ProjectDoesNotReferenceDllsFromBinOrObjDirectories(), project));
35+
36+
Approvals.Verify(ex.Message);
3237
}
33-
38+
3439
[Test]
35-
public void ScriptsNotEmbeddedResources()
40+
public void assemblies_referencing_bin_obj_with_approved_exceptions()
3641
{
37-
var projectProvider = Substitute.For<IProjectProvider>();
38-
var projectLocator = Substitute.For<IProjectLocator>();
42+
projectProvider
43+
.LoadProjectDocument(Arg.Any<string>())
44+
.Returns(XDocument.Parse(Resources.ProjectFileWithBinReference));
45+
46+
Convention.IsWithApprovedExeptions(new ProjectDoesNotReferenceDllsFromBinOrObjDirectories(), project);
47+
}
48+
49+
[Test]
50+
public void scripts_not_embedded_resources()
51+
{
52+
project.Includes = i => i.EndsWith(".sql");
53+
projectProvider
54+
.LoadProjectDocument(Arg.Any<string>())
55+
.Returns(XDocument.Parse(Resources.ProjectFileWithInvalidSqlScriptFile));
56+
57+
var ex = Assert.Throws<ConventionFailedException>(() => Convention.Is(new FilesAreEmbeddedResources(), project));
58+
59+
Approvals.Verify(ex.Message);
60+
}
61+
62+
[Test]
63+
public void scripts_not_embedded_resources_with_approved_exceptions()
64+
{
65+
project.Includes = i => i.EndsWith(".sql");
3966
projectProvider
4067
.LoadProjectDocument(Arg.Any<string>())
4168
.Returns(XDocument.Parse(Resources.ProjectFileWithInvalidSqlScriptFile));
4269

43-
Convention.Is(new FilesAreEmbeddedResources(),
44-
new Project(typeof (ProjectBasedConventions).Assembly, projectProvider, projectLocator)
45-
{
46-
Includes = i => i.EndsWith(".sql")
47-
});
70+
Convention.IsWithApprovedExeptions(new FilesAreEmbeddedResources(), project);
4871
}
4972
}
5073
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
The following files which should be embedded resources:
2+
3+
Scripts\Script2.sql

0 commit comments

Comments
 (0)