-
Notifications
You must be signed in to change notification settings - Fork 2.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Introduce OrchardCore.Testing APIs #13018
base: main
Are you sure you want to change the base?
Conversation
# Conflicts: # src/OrchardCore/OrchardCore.Testing/Apis/Security/PermissionContextAuthorizationHandler.cs # src/OrchardCore/OrchardCore.Testing/Data/TablePrefixGenerator.cs # src/OrchardCore/OrchardCore.Testing/Extensions/HttpContentExtensions.cs # test/OrchardCore.Testing.Tests/Data/TablePrefixGeneratorTests.cs # test/OrchardCore.Testing.Tests/Security/PermissionHandlerTests.cs # test/OrchardCore.Tests/Apis/ContentManagement/ContentApiController/BlogPostApiControllerTests.cs # test/OrchardCore.Tests/Apis/ContentManagement/DeploymentPlans/BlogPostCreateDeploymentPlanTests.cs # test/OrchardCore.Tests/Apis/ContentManagement/DeploymentPlans/BlogPostUpdateDeploymentPlanTests.cs # test/OrchardCore.Tests/Apis/Context/BlogPostApiControllerContext.cs # test/OrchardCore.Tests/Apis/Context/Extensions/HttpRequestExtensions.cs # test/OrchardCore.Tests/Apis/Context/MvcTestFixture.cs # test/OrchardCore.Tests/Apis/Context/SiteContext.cs # test/OrchardCore.Tests/Apis/Context/SiteStartup.cs # test/OrchardCore.Tests/Apis/Context/TestRecipeHarvester.cs # test/OrchardCore.Tests/Apis/GraphQL/ValidationRules/RequiresPermissionValidationRuleTests.cs # test/OrchardCore.Tests/Apis/Lucene/LuceneQueryTests.cs # test/OrchardCore.Tests/DisplayManagement/Decriptors/DefaultShapeTableManagerTests.cs # test/OrchardCore.Tests/DisplayManagement/DefaultDisplayManagerTests.cs # test/OrchardCore.Tests/DisplayManagement/ShapeFactoryTests.cs # test/OrchardCore.Tests/DisplayManagement/ShapeHelperTests.cs # test/OrchardCore.Tests/DisplayManagement/ShapeSerializerTests.cs # test/OrchardCore.Tests/Email/EmailTests.cs # test/OrchardCore.Tests/Extensions/ExtensionManagerTests.cs # test/OrchardCore.Tests/Localization/PortableObjectStringLocalizerFactoryTests.cs # test/OrchardCore.Tests/Localization/PortableObjectStringLocalizerTests.cs # test/OrchardCore.Tests/Modules/OrchardCore.OpenId/OpenIdServerDeploymentSourceTests.cs # test/OrchardCore.Tests/Modules/OrchardCore.Roles/RolesPermissionsHandlerTests.cs # test/OrchardCore.Tests/OrchardCore.Users/UserValidatorTests.cs # test/OrchardCore.Tests/OrchardCore.Users/UsersMockHelper.cs # test/OrchardCore.Tests/ResourceManagement/ResourceDefinitionTests.cs # test/OrchardCore.Tests/ResourceManagement/ResourceManagerTests.cs # test/OrchardCore.Tests/Routing/AutorouteEntriesTests.cs # test/OrchardCore.Tests/Security/PermissionHandlerHelper.cs # test/OrchardCore.Tests/Shell/ShellContainerFactoryTests.cs # test/OrchardCore.Tests/Stubs/MemoryFileBuilder.cs # test/OrchardCore.Tests/Stubs/StubExtensionManager.cs # test/OrchardCore.Tests/Stubs/StubHostingEnvironment.cs # test/OrchardCore.Tests/Stubs/StubPoFileLocationProvider.cs # test/OrchardCore.Tests/Workflows/WorkflowManagerTests.cs
@sebastienros could you please have a look, coz we need to move forward after this to cover UI testing |
Can you give more details about the changes in this PR? Like "New project named ... that users can reference to create tests", and other new interfaces or methods. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OrchardCore.Testing should not depend on CMS.Web project
src/OrchardCore/OrchardCore.Testing/Infrastructure/OrchardCoreTestFixture.cs
Outdated
Show resolved
Hide resolved
} | ||
|
||
public static ConcurrentDictionary<string, PermissionsContext> PermissionsContexts { get; set; } | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
add a static action to be able to configure the IHostBuilder
public static Action ConfigureHostBuilderAction { get; set; }
So in a Context, in a static constructor one could configure the host eg. to use NServicebus
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We might defer this for now and add it later, the aim is to extract what we have nowadays into OC.Testing
then we can add helper features
|
||
public class OrchardCoreTestFixture<TStartup> : WebApplicationFactory<TStartup> where TStartup : class | ||
{ | ||
protected override void ConfigureWebHost(IWebHostBuilder builder) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
override the CreateHost method to configure the IHostBuilder based on the SiteContextOptions.ConfigureHostBuilderAction
eg.
protected override IHost CreateHost(IHostBuilder builder)
{
if (SiteContextOptions.ConfigureHostBuilderAction != null)
{
SiteContextOptions.ConfigureHostBuilderAction.Invoke(builder);
}
return base.CreateHost(builder);
}
Thanks @MichaelPetrinolis for your comment, I will try to react to them, but still I'm asking can we add it as a separated NuGet package or for OC use |
@hishamco an official OC Testing NuGet package, which is used internally by OC project for unit/integration testing, would be beneficial for the community. As a developer, having OOB stubs and mocks that I can use in my own module testing, would be nice to have. Also easily configuring a Site Context and perform integration testing to my module controllers, would be awesome. please note that the UseCultureAttribute causes issues when running dotnet test from CLI. The reference to xunit seems to cause the failure.
|
My proposal from the begging to have
AngleSharp is not related to what I did |
# Conflicts: # test/OrchardCore.Tests/Apis/Context/SiteContext.cs # test/OrchardCore.Tests/Stubs/TestShapeBindingResolver.cs # test/OrchardCore.Tests/Stubs/TestShapeTableManager.cs
This pull request has merge conflicts. Please resolve those before requesting a review. |
Do you want to get back to this anytime soon, @hishamco? Starting with addressing #13018 (comment). Otherwise, I welcome refactoring the tests and providing some common packages to make it easier for community members to write tests for their OC modules. (A bit of that we also address with the Lombiq Testing Toolbox but this would be better as part of OC itself.) I didn't look deeply into the code under this PR yet. Also, you may want to look into AutoMocker: I briefly checked out the code and I see a lot of manual dependency resolution with mocks, while this library takes care of that. |
I am delaying this because I've been working on Playwright and OC integrations last few weeks, hope to have a demo ASAP. Regarding I will try |
Hello @hishamco, will this PR be a part of OC 2? |
I will try to resolve the changes, there're too much :) |
@hishamco Perfect! If I can help, please let me know. |
@MichaelPetrinolis if you fix the conflict I will be thankful, coz I'm working on other PRs and issues |
@hishamco weekend is over but i will try to get time for it this week. |
This is one of the PRs that I'm working on testing part of Orchard Core, the plan is to provide an essential testing APIs infrastructure for creating unit tests easily for OC APIs and modules
For reference #11865 (comment)
Fixes #11865.