Skip to content

Commit 12a5c62

Browse files
committed
Merge pull request #41 from JakeGinnivan/AutofacConventions2
Autofac conventions2
2 parents 6b16512 + b94234f commit 12a5c62

11 files changed

+99
-6
lines changed

ConventionTests.proj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<Project DefaultTargets="Test;Publish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2+
<Project DefaultTargets="Test" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<PropertyGroup>
44
<Root>$(MSBuildProjectDirectory)\</Root>
55
<BuildPlatform Condition="$(BuildPlatform) == ''">Any CPU</BuildPlatform>

TestStack.ConventionTests.Autofac/CanResolveAllRegisteredServices.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,17 @@ public void Execute(AutofacRegistrations data, IConventionResultContext result)
2121
.SelectMany(r => r.Services.OfType<TypedService>().Select(s => s.ServiceType).Union(GetGenericFactoryTypes(data, r)))
2222
.Distinct();
2323

24-
var failingTypes = new List<Type>();
24+
var failingTypes = new List<string>();
2525
foreach (var distinctType in distinctTypes)
2626
{
27-
object resolvedInstance;
28-
if (!container.TryResolve(distinctType, out resolvedInstance))
29-
failingTypes.Add(distinctType);
27+
try
28+
{
29+
container.Resolve(distinctType);
30+
}
31+
catch (DependencyResolutionException e)
32+
{
33+
failingTypes.Add(e.Message);
34+
}
3035
}
3136

3237
result.Is("Can resolve all types registered with Autofac", failingTypes);

TestStack.ConventionTests.Autofac/TestStack.ConventionTests.Autofac.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99
<AppDesignerFolder>Properties</AppDesignerFolder>
1010
<RootNamespace>TestStack.ConventionTests.Autofac</RootNamespace>
1111
<AssemblyName>TestStack.ConventionTests.Autofac</AssemblyName>
12-
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
12+
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
1313
<FileAlignment>512</FileAlignment>
14+
<TargetFrameworkProfile />
1415
</PropertyGroup>
1516
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
1617
<DebugSymbols>true</DebugSymbols>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
namespace TestStack.ConventionTests.Tests.Autofac
2+
{
3+
using global::Autofac;
4+
using NUnit.Framework;
5+
using TestStack.ConventionTests.Autofac;
6+
using TestStack.ConventionTests.Tests.Autofac.TestTypes;
7+
8+
[TestFixture]
9+
public class CanResolveAllRegisteredServicesTests
10+
{
11+
[Test]
12+
public void ConventionFailsWhenContainerRegistrationCannotBeResolved()
13+
{
14+
var containerBuilder = new ContainerBuilder();
15+
containerBuilder.RegisterType<Foo>().As<IFoo>();
16+
var container = containerBuilder.Build();
17+
18+
var data = new AutofacRegistrations(container.ComponentRegistry);
19+
20+
Assert.Throws<ConventionFailedException>(()=>Convention.Is(new CanResolveAllRegisteredServices(container), data));
21+
}
22+
}
23+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
namespace TestStack.ConventionTests.Tests.Autofac
2+
{
3+
using global::Autofac;
4+
using NUnit.Framework;
5+
using TestStack.ConventionTests.Autofac;
6+
using TestStack.ConventionTests.Tests.Autofac.TestTypes;
7+
8+
[TestFixture]
9+
public class ServicesShouldOnlyHaveDependenciesWithLesserLifetimeTests
10+
{
11+
[Test]
12+
public void ConventionShouldFailForTransientInjectectedIntoSingleton()
13+
{
14+
var containerBuilder = new ContainerBuilder();
15+
containerBuilder.RegisterType<Foo>().As<IFoo>().SingleInstance();
16+
containerBuilder.RegisterType<Bar>().As<IBar>();
17+
18+
var container = containerBuilder.Build();
19+
20+
var convention = new ServicesShouldOnlyHaveDependenciesWithLesserLifetime();
21+
var autofacRegistrations = new AutofacRegistrations(container.ComponentRegistry);
22+
Assert.Throws<ConventionFailedException>(() => Convention.Is(convention, autofacRegistrations));
23+
}
24+
}
25+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace TestStack.ConventionTests.Tests.Autofac.TestTypes
2+
{
3+
public class Bar : IBar
4+
{
5+
6+
}
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace TestStack.ConventionTests.Tests.Autofac.TestTypes
2+
{
3+
public class Foo : IFoo
4+
{
5+
public Foo(IBar bar){}
6+
}
7+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace TestStack.ConventionTests.Tests.Autofac.TestTypes
2+
{
3+
public interface IBar
4+
{
5+
}
6+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
namespace TestStack.ConventionTests.Tests.Autofac.TestTypes
2+
{
3+
public interface IFoo {}
4+
}

TestStack.ConventionTests.Tests/TestStack.ConventionTests.Tests.csproj

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@
3636
<Reference Include="ApprovalUtilities">
3737
<HintPath>..\packages\ApprovalUtilities.3.0.01\lib\net35\ApprovalUtilities.dll</HintPath>
3838
</Reference>
39+
<Reference Include="Autofac">
40+
<HintPath>..\packages\Autofac.3.1.1\lib\net40\Autofac.dll</HintPath>
41+
</Reference>
3942
<Reference Include="NSubstitute">
4043
<HintPath>..\packages\NSubstitute.1.6.1.0\lib\NET40\NSubstitute.dll</HintPath>
4144
</Reference>
@@ -51,6 +54,12 @@
5154
<Reference Include="System.Xml" />
5255
</ItemGroup>
5356
<ItemGroup>
57+
<Compile Include="Autofac\CanResolveAllRegisteredServicesTests.cs" />
58+
<Compile Include="Autofac\ServicesShouldOnlyHaveDependenciesWithLesserLifetimeTests.cs" />
59+
<Compile Include="Autofac\TestTypes\Bar.cs" />
60+
<Compile Include="Autofac\TestTypes\Foo.cs" />
61+
<Compile Include="Autofac\TestTypes\IBar.cs" />
62+
<Compile Include="Autofac\TestTypes\IFoo.cs" />
5463
<Compile Include="ConventionAssertionClassTests.cs" />
5564
<Compile Include="CsvReportTests.cs" />
5665
<Compile Include="MvcConventions.cs" />
@@ -72,6 +81,10 @@
7281
<Project>{D5A0D078-C660-4654-8A14-DDC816BEBC54}</Project>
7382
<Name>TestAssembly</Name>
7483
</ProjectReference>
84+
<ProjectReference Include="..\TestStack.ConventionTests.Autofac\TestStack.ConventionTests.Autofac.csproj">
85+
<Project>{a747fd64-5338-4572-879d-a9deb00ebd56}</Project>
86+
<Name>TestStack.ConventionTests.Autofac</Name>
87+
</ProjectReference>
7588
<ProjectReference Include="..\TestStack.ConventionTests\TestStack.ConventionTests.csproj">
7689
<Project>{955B0236-089F-434D-BA02-63A1E24C2B7C}</Project>
7790
<Name>TestStack.ConventionTests</Name>
@@ -89,6 +102,7 @@
89102
<ItemGroup>
90103
<None Include="Resources\ProjectFileWithInvalidSqlScriptFile.txt" />
91104
</ItemGroup>
105+
<ItemGroup />
92106
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
93107
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
94108
Other similar extension points exist, see Microsoft.Common.targets.

TestStack.ConventionTests.Tests/packages.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
<packages>
33
<package id="ApprovalTests" version="3.0.01" targetFramework="net40" />
44
<package id="ApprovalUtilities" version="3.0.01" targetFramework="net40" />
5+
<package id="Autofac" version="3.1.1" targetFramework="net40" />
56
<package id="NSubstitute" version="1.6.1.0" targetFramework="net40" />
67
<package id="NUnit" version="2.6.2" targetFramework="net40" />
78
</packages>

0 commit comments

Comments
 (0)