Skip to content

Commit 50e5560

Browse files
Trying to solve the Cms vs Commerce issue with separate projects and startups
1 parent 03df5ed commit 50e5560

File tree

4 files changed

+27
-28
lines changed

4 files changed

+27
-28
lines changed

Optimizely.TestContainers.Shared/OptimizelyIntegrationTestBase.cs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using EPiServer.Data;
22
using EPiServer.Framework;
33
using EPiServer.Framework.Initialization;
4+
using Microsoft.AspNetCore.Hosting;
45
using Microsoft.Data.SqlClient;
56
using Microsoft.Extensions.Configuration;
67
using Microsoft.Extensions.DependencyInjection;
@@ -9,7 +10,7 @@
910

1011
namespace Optimizely.TestContainers.Shared;
1112

12-
public class OptimizelyIntegrationTestBase(bool includeCommerce) : IAsyncLifetime
13+
public abstract class OptimizelyIntegrationTestBase(bool includeCommerce) : IAsyncLifetime
1314
{
1415
private IHost _host = null!;
1516

@@ -27,10 +28,10 @@ public virtual async Task InitializeAsync()
2728
var cmsDatabaseConnectionString = await CreateNamedDatabaseConnectionString(container, "Cms");
2829

2930
string? commerceDatabaseConnectionString = null;
30-
/*if (includeCommerce)
31-
{*/
31+
if (includeCommerce)
32+
{
3233
commerceDatabaseConnectionString = await CreateNamedDatabaseConnectionString(container, "Commerce");
33-
/*}*/
34+
}
3435

3536

3637
// Build CMS host
@@ -66,15 +67,17 @@ public virtual async Task InitializeAsync()
6667
/*}*/
6768
});
6869

70+
ConfiureWebHostBuilder(webHostBuilder);
71+
6972
// TOOD: Run startup in each test project!
70-
if (includeCommerce && !string.IsNullOrWhiteSpace(commerceDatabaseConnectionString))
73+
/*if (includeCommerce && !string.IsNullOrWhiteSpace(commerceDatabaseConnectionString))
7174
{
72-
//webHostBuilder.UseStartup<StartupWithCmsAndCommerce>();
75+
webHostBuilder.UseStartup<Optimizely.TestContainers.Startup>();
7376
}
7477
else
7578
{
76-
//webHostBuilder.UseStartup<StartupWithCms>();
77-
}
79+
webHostBuilder.UseStartup<StartupWithCms>();
80+
}*/
7881

7982

8083

@@ -95,7 +98,9 @@ public virtual async Task InitializeAsync()
9598

9699
await _host.StartAsync();
97100
}
98-
101+
102+
protected abstract void ConfiureWebHostBuilder(IWebHostBuilder webHostBuilder);
103+
99104
public async Task DisposeAsync()
100105
{
101106
await _host.StopAsync();

Optimizely.TestContainers.Commerce.Tests/CommerceCatalogIntegrationTests.cs renamed to test/OptimizelyTestContainers.Tests/CommerceCatalogIntegrationTests.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using EPiServer.Security;
77
using Mediachase.Commerce;
88
using Mediachase.Commerce.Catalog;
9+
using Microsoft.AspNetCore.Hosting;
910
using Microsoft.Extensions.DependencyInjection;
1011
using Optimizely.TestContainers.Commerce.Tests.Models.Commerce;
1112
using Optimizely.TestContainers.Shared;
@@ -14,6 +15,11 @@ namespace Optimizely.TestContainers.Commerce.Tests;
1415

1516
public class CommerceCatalogIntegrationTests() : OptimizelyIntegrationTestBase(includeCommerce: true)
1617
{
18+
protected override void ConfiureWebHostBuilder(IWebHostBuilder webHostBuilder)
19+
{
20+
webHostBuilder.UseStartup<Startup>();
21+
}
22+
1723
[Fact]
1824
public void Can_Save_Catalog_And_Node_And_Product()
1925
{

test/OptimizelyTestContainers.Tests/NewsPageIntegrationTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using EPiServer.DataAccess;
55
using EPiServer.Security;
66
using EPiServer.Web;
7+
using Microsoft.AspNetCore.Hosting;
78
using Microsoft.Extensions.DependencyInjection;
89
using Optimizely.TestContainers.Models.Pages;
910
using Optimizely.TestContainers.Shared;
@@ -12,6 +13,12 @@ namespace OptimizelyTestContainers.Tests;
1213

1314
public class NewsPageIntegrationTest() : OptimizelyIntegrationTestBase(includeCommerce: false)
1415
{
16+
protected override void ConfiureWebHostBuilder(IWebHostBuilder webHostBuilder)
17+
{
18+
webHostBuilder.UseStartup<Startup>();
19+
}
20+
21+
1522
[Fact]
1623
public void Can_Create_And_Read_NewsPage()
1724
{

test/OptimizelyTestContainers.Tests/Startup.cs

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
using EPiServer.Cms.Shell;
22
using EPiServer.Cms.UI.AspNetIdentity;
3-
using EPiServer.Commerce.Internal;
4-
using EPiServer.Data.SchemaUpdates;
53
using EPiServer.Scheduler;
64
using EPiServer.Web.Routing;
75
using Microsoft.AspNetCore.Builder;
@@ -27,23 +25,6 @@ public void ConfigureServices(IServiceCollection services)
2725
.AddCms()
2826
.AddAdminUserRegistration()
2927
.AddEmbeddedLocalization<Startup>();
30-
31-
// Remove the schema updater from the container if we're not running Commerce
32-
/*if (!includeCommerce)
33-
{*/
34-
//services.RemoveImplementation<ISchemaUpdater, CommerceDatabaseSchemaUpdater>();
35-
//services.RemoveImplementation<SchemaUpdaterBase, CommerceDatabaseSchemaUpdater>();
36-
/*}*/
37-
38-
// TODO: Runs all initializable modules even if commerce is not included!
39-
// Solve with custom IAssemblyScanner?
40-
/*
41-
if (!includeCommerce)
42-
{
43-
services.Replace(new ServiceDescriptor(typeof(IAssemblyScanner)))
44-
services.AddSingleton<IAssemblyScanner, ExcludeCommerceAssemblyScanner>();
45-
}
46-
*/
4728
}
4829

4930
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

0 commit comments

Comments
 (0)