-
Notifications
You must be signed in to change notification settings - Fork 801
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add ExtensionsTypeSource and subclass that in Serene TypeSource. It a…
…lso includes Serenity.Net.* and Serenity.Extensions assembly references and ExtensionsAssemblyChain. Add tests so that it does not break in the future when moving types between assemblies.
- Loading branch information
1 parent
a2e9865
commit c229ae3
Showing
10 changed files
with
200 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
52 changes: 52 additions & 0 deletions
52
common-features/src/extensions/Modules/Options/ExtensionsTypeSource.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
namespace Serenity.Extensions; | ||
|
||
/// <summary> | ||
/// Base type source for apps using Serenity.Extensions assembly and its reference chain | ||
/// </summary> | ||
/// <param name="assemblies">Additional assemblies to include</param> | ||
public class ExtensionsTypeSource(IEnumerable<Assembly> assemblies) | ||
: DefaultTypeSource([..SerenityExtensionsAssemblyChain, ..assemblies]) | ||
{ | ||
/// <summary> | ||
/// Reference to Serenity.Net.Core assembly | ||
/// </summary> | ||
public static readonly Assembly SerenityNetCoreAssembly = typeof(Localization.ILocalText).Assembly; | ||
|
||
/// <summary> | ||
/// Reference to Serenity.Net.Data assembly | ||
/// </summary> | ||
public static readonly Assembly SerenityNetDataAssembly = typeof(DefaultSqlConnections).Assembly; | ||
|
||
/// <summary> | ||
/// Reference to Serenity.Net.Entity assembly | ||
/// </summary> | ||
public static readonly Assembly SerenityNetEntityAssembly = typeof(Row<>).Assembly; | ||
|
||
/// <summary> | ||
/// Reference to Serenity.Net.Services assembly | ||
/// </summary> | ||
public static readonly Assembly SerenityNetServicesAssembly = typeof(SaveRequestHandler<>).Assembly; | ||
|
||
/// <summary> | ||
/// Reference to Serenity.Net.Web assembly | ||
/// </summary> | ||
public static readonly Assembly SerenityNetWebAssembly = typeof(HttpContextItemsAccessor).Assembly; | ||
|
||
/// <summary> | ||
/// Reference to Serenity.Extensions assembly | ||
/// </summary> | ||
public static readonly Assembly SerenityExtensionsAssembly = typeof(ExtensionsTypeSource).Assembly; | ||
|
||
/// <summary> | ||
/// List of assemblies up to Serenity.Extensions | ||
/// </summary> | ||
public static readonly Assembly[] SerenityExtensionsAssemblyChain = | ||
[ | ||
SerenityNetCoreAssembly, | ||
SerenityNetDataAssembly, | ||
SerenityNetEntityAssembly, | ||
SerenityNetServicesAssembly, | ||
SerenityNetWebAssembly, | ||
SerenityExtensionsAssembly | ||
]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<Project> | ||
<Import Project="$(MSBuildThisFileDirectory)..\..\tests\Test.Build.props" /> | ||
<PropertyGroup> | ||
<RootNamespace>Serenity.Tests</RootNamespace> | ||
</PropertyGroup> | ||
</Project> |
86 changes: 86 additions & 0 deletions
86
common-features/tests/Serenity.Extensions.Tests/ExtensionsTypeSourceTests.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
using Serenity.Extensions; | ||
|
||
namespace Serenity.Tests; | ||
|
||
public class ExtensionsTypeSourceTests | ||
{ | ||
[Fact] | ||
public void IncludesExtensionsAssemblyChain() | ||
{ | ||
var typeSource = new ExtensionsTypeSource([]); | ||
var assemblies = typeSource.GetAssemblies() | ||
.Select(x => x.GetName().Name); | ||
Assert.Collection(assemblies, | ||
x => Assert.Equal("Serenity.Net.Core", x), | ||
x => Assert.Equal("Serenity.Net.Data", x), | ||
x => Assert.Equal("Serenity.Net.Entity", x), | ||
x => Assert.Equal("Serenity.Net.Services", x), | ||
x => Assert.Equal("Serenity.Net.Web", x), | ||
x => Assert.Equal("Serenity.Extensions", x)); | ||
} | ||
|
||
[Fact] | ||
public void IncludesPassedAssembliesAtEnd() | ||
{ | ||
var typeSource = new ExtensionsTypeSource([typeof(ExtensionsTypeSourceTests).Assembly]); | ||
var assemblies = typeSource.GetAssemblies() | ||
.Select(x => x.GetName().Name); | ||
Assert.Collection(assemblies, | ||
x => Assert.Equal("Serenity.Net.Core", x), | ||
x => Assert.Equal("Serenity.Net.Data", x), | ||
x => Assert.Equal("Serenity.Net.Entity", x), | ||
x => Assert.Equal("Serenity.Net.Services", x), | ||
x => Assert.Equal("Serenity.Net.Web", x), | ||
x => Assert.Equal("Serenity.Extensions", x), | ||
x => Assert.Equal(typeof(ExtensionsTypeSourceTests).Assembly.GetName().Name, x)); | ||
} | ||
|
||
[Fact] | ||
public void ExtensionsAssemblyChainIsCorrect() | ||
{ | ||
Assert.Collection(ExtensionsTypeSource.SerenityExtensionsAssemblyChain | ||
.Select(x => x.GetName().Name), | ||
x => Assert.Equal("Serenity.Net.Core", x), | ||
x => Assert.Equal("Serenity.Net.Data", x), | ||
x => Assert.Equal("Serenity.Net.Entity", x), | ||
x => Assert.Equal("Serenity.Net.Services", x), | ||
x => Assert.Equal("Serenity.Net.Web", x), | ||
x => Assert.Equal("Serenity.Extensions", x)); | ||
} | ||
|
||
[Fact] | ||
public void CoreAssemblyIsCorrect() | ||
{ | ||
Assert.Equal("Serenity.Net.Core", ExtensionsTypeSource.SerenityNetCoreAssembly.GetName().Name); | ||
} | ||
|
||
[Fact] | ||
public void DataAssemblyIsCorrect() | ||
{ | ||
Assert.Equal("Serenity.Net.Data", ExtensionsTypeSource.SerenityNetDataAssembly.GetName().Name); | ||
} | ||
|
||
[Fact] | ||
public void EntityAssemblyIsCorrect() | ||
{ | ||
Assert.Equal("Serenity.Net.Entity", ExtensionsTypeSource.SerenityNetEntityAssembly.GetName().Name); | ||
} | ||
|
||
[Fact] | ||
public void ServicesAssemblyIsCorrect() | ||
{ | ||
Assert.Equal("Serenity.Net.Services", ExtensionsTypeSource.SerenityNetServicesAssembly.GetName().Name); | ||
} | ||
|
||
[Fact] | ||
public void WebAssemblyIsCorrect() | ||
{ | ||
Assert.Equal("Serenity.Net.Web", ExtensionsTypeSource.SerenityNetWebAssembly.GetName().Name); | ||
} | ||
|
||
[Fact] | ||
public void ExtensionsAssemblyIsCorrect() | ||
{ | ||
Assert.Equal("Serenity.Extensions", ExtensionsTypeSource.SerenityExtensionsAssembly.GetName().Name); | ||
} | ||
} |
6 changes: 6 additions & 0 deletions
6
common-features/tests/Serenity.Extensions.Tests/Serenity.Extensions.Tests.csproj
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
<ItemGroup> | ||
<ProjectReference Include="..\..\src\extensions\Serenity.Extensions.csproj" /> | ||
<ProjectReference Include="..\..\..\tests\Serenity.Net.Web.Tests\Serenity.Net.Web.Tests.csproj" /> | ||
</ItemGroup> | ||
</Project> |
28 changes: 6 additions & 22 deletions
28
serene/src/Serene.Web/Modules/Common/AppServices/TypeSource.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,29 +1,13 @@ | ||
namespace Serene.AppServices; | ||
|
||
public class TypeSource : DefaultTypeSource | ||
{ | ||
public TypeSource() | ||
: base(GetAssemblyList()) | ||
{ | ||
} | ||
|
||
private static System.Reflection.Assembly[] GetAssemblyList() | ||
{ | ||
return | ||
[ | ||
typeof(Serenity.Localization.ILocalText).Assembly, // Serenity.Core | ||
typeof(DefaultSqlConnections).Assembly, // Serenity.Net.Data | ||
typeof(Row<>).Assembly, // Serenity.Net.Entity | ||
typeof(SaveRequestHandler<>).Assembly, // Serenity.Net.Services | ||
typeof(HttpContextItemsAccessor).Assembly, // Serenity.Net.Web | ||
typeof(Serenity.Reporting.ExcelExporter).Assembly, // Serenity.Extensions | ||
public class TypeSource() : ExtensionsTypeSource([ | ||
#if (Northwind) | ||
typeof(Serenity.Demo.Northwind.CustomerPage).Assembly, // Serenity.Demo.Northwind | ||
typeof(Serenity.Demo.Northwind.CustomerPage).Assembly, // Serenity.Demo.Northwind | ||
#endif | ||
#if (BasicSamples) | ||
typeof(Serenity.Demo.BasicSamples.BasicSamplesPage).Assembly, // Serenity.Demo.BasicSamples | ||
typeof(Serenity.Demo.BasicSamples.BasicSamplesPage).Assembly, // Serenity.Demo.BasicSamples | ||
#endif | ||
typeof(Startup).Assembly // Serene.Web | ||
]; | ||
} | ||
typeof(Startup).Assembly // Serene.Web | ||
]) | ||
{ | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<Project> | ||
<Import Project="$(MSBuildThisFileDirectory)..\..\tests\Test.Build.props" /> | ||
<PropertyGroup> | ||
<RootNamespace>Serene.Tests</RootNamespace> | ||
</PropertyGroup> | ||
</Project> |
22 changes: 22 additions & 0 deletions
22
serene/tests/Serene.Tests.Unit/AppServices/TypeSourceTests.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
namespace Serene.Tests; | ||
|
||
public class TypeSourceTests | ||
{ | ||
[Fact] | ||
public void IncludesCorrectAssemblyList() | ||
{ | ||
var typeSource = new AppServices.TypeSource(); | ||
var assemblies = typeSource.GetAssemblies() | ||
.Select(x => x.GetName().Name); | ||
Assert.Collection(assemblies, | ||
x => Assert.Equal("Serenity.Net.Core", x), | ||
x => Assert.Equal("Serenity.Net.Data", x), | ||
x => Assert.Equal("Serenity.Net.Entity", x), | ||
x => Assert.Equal("Serenity.Net.Services", x), | ||
x => Assert.Equal("Serenity.Net.Web", x), | ||
x => Assert.Equal("Serenity.Extensions", x), | ||
x => Assert.Equal("Serenity.Demo.Northwind", x), | ||
x => Assert.Equal("Serenity.Demo.BasicSamples", x), | ||
x => Assert.Equal("Serene.Web", x)); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
<ItemGroup> | ||
<ProjectReference Include="..\..\src\Serene.Web\Serene.Web.csproj" /> | ||
<ProjectReference Include="..\..\..\common-features\tests\Serenity.Extensions.Tests\Serenity.Extensions.Tests.csproj" /> | ||
</ItemGroup> | ||
</Project> |
This file was deleted.
Oops, something went wrong.