Skip to content

Commit d3d2706

Browse files
Work in progress on refactoring and adding Commerce
1 parent 767e326 commit d3d2706

File tree

8 files changed

+180
-151
lines changed

8 files changed

+180
-151
lines changed

src/Web/Program.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ public class Program
44
{
55
public static void Main(string[] args) => CreateHostBuilder(args).Build().Run();
66

7+
// Split Startup into two classes StartupWithCmsAndCommerce and StartupWithCms to be able to test both in isolation
78
public static IHostBuilder CreateHostBuilder(string[] args) =>
89
Host.CreateDefaultBuilder(args)
910
.ConfigureCmsDefaults()
10-
.ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup<Startup>());
11+
.ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup<StartupWithCmsAndCommerce>());
1112
}
Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,26 @@
11
using EPiServer.Cms.Shell;
22
using EPiServer.Cms.UI.AspNetIdentity;
33
using EPiServer.Scheduler;
4-
using EPiServer.ServiceLocation;
54
using EPiServer.Web.Routing;
65

76
namespace Optimizely.TestContainers;
87

9-
public class Startup
8+
public class StartupWithCms(IWebHostEnvironment webHostingEnvironment)
109
{
11-
private readonly IWebHostEnvironment _webHostingEnvironment;
12-
13-
public Startup(IWebHostEnvironment webHostingEnvironment)
14-
{
15-
_webHostingEnvironment = webHostingEnvironment;
16-
}
17-
1810
public void ConfigureServices(IServiceCollection services)
1911
{
20-
if (_webHostingEnvironment.IsDevelopment())
12+
if (webHostingEnvironment.IsDevelopment())
2113
{
22-
AppDomain.CurrentDomain.SetData("DataDirectory", Path.Combine(_webHostingEnvironment.ContentRootPath, "App_Data"));
14+
AppDomain.CurrentDomain.SetData("DataDirectory", Path.Combine(webHostingEnvironment.ContentRootPath, "App_Data"));
2315

2416
services.Configure<SchedulerOptions>(options => options.Enabled = false);
2517
}
2618

2719
services
2820
.AddCmsAspNetIdentity<ApplicationUser>()
2921
.AddCms()
30-
.AddCommerce()
3122
.AddAdminUserRegistration()
32-
.AddEmbeddedLocalization<Startup>();
23+
.AddEmbeddedLocalization<StartupWithCms>();
3324
}
3425

3526
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
using EPiServer.Cms.Shell;
2+
using EPiServer.Cms.UI.AspNetIdentity;
3+
using EPiServer.Scheduler;
4+
using EPiServer.Web.Routing;
5+
6+
namespace Optimizely.TestContainers;
7+
8+
public class StartupWithCmsAndCommerce(IWebHostEnvironment webHostingEnvironment)
9+
{
10+
public void ConfigureServices(IServiceCollection services)
11+
{
12+
if (webHostingEnvironment.IsDevelopment())
13+
{
14+
AppDomain.CurrentDomain.SetData("DataDirectory", Path.Combine(webHostingEnvironment.ContentRootPath, "App_Data"));
15+
16+
services.Configure<SchedulerOptions>(options => options.Enabled = false);
17+
}
18+
19+
services
20+
.AddCmsAspNetIdentity<ApplicationUser>()
21+
.AddCms()
22+
.AddCommerce()
23+
.AddAdminUserRegistration()
24+
.AddEmbeddedLocalization<StartupWithCms>();
25+
}
26+
27+
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
28+
{
29+
if (env.IsDevelopment())
30+
{
31+
app.UseDeveloperExceptionPage();
32+
}
33+
34+
app.UseStaticFiles();
35+
app.UseRouting();
36+
app.UseAuthentication();
37+
app.UseAuthorization();
38+
39+
app.UseEndpoints(endpoints =>
40+
{
41+
endpoints.MapContent();
42+
});
43+
}
44+
}

test/OptimizelyTestContainers.Tests/CommerceCatalogIntegrationTests.cs

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,32 +9,41 @@
99

1010
namespace OptimizelyTestContainers.Tests;
1111

12-
public class CommerceCatalogIntegrationTests : OptimizelyCommerceIntegrationTestBase
12+
public class CommerceCatalogIntegrationTests() : OptimizelyIntegrationTestBase(includeCommerce: true)
1313
{
1414
[Fact]
15-
public void Can_Save_Category()
15+
public void Can_Save_Node_And_Product()
1616
{
17+
// Arrange #1
1718
var referenceConverter = Services.GetRequiredService<ReferenceConverter>();
1819
var contentRepository = Services.GetRequiredService<IContentRepository>();
1920

2021
var rootLink = referenceConverter.GetRootLink();
2122

2223
var aliensNode = contentRepository.GetDefault<NodeContent>(rootLink, CultureInfo.GetCultureInfo("en"));
2324
aliensNode.Name = "Aliens";
24-
var aliensNodeReference = contentRepository.Save(aliensNode, SaveAction.Publish);
2525

26+
// Act #1
27+
var aliensNodeReference = contentRepository.Save(aliensNode, SaveAction.Publish);
28+
29+
// Arrange #2
2630
var testAlienProduct = contentRepository.GetDefault<TestProduct>(aliensNodeReference, CultureInfo.GetCultureInfo("en"));
2731
testAlienProduct.Name = "Snarbo";
2832
testAlienProduct.Description = new XhtmlString("<p>Some scary facts about Aliens!</p>");
29-
var testAlienProductReference = contentRepository.Save(testAlienProduct, SaveAction.Publish);
3033

34+
// Act #2
35+
var testAlienProductReference = contentRepository.Save(testAlienProduct, SaveAction.Publish);
36+
37+
// Assert # 1 & 2
3138
Assert.NotNull(aliensNodeReference);
3239
Assert.NotNull(testAlienProductReference);
33-
34-
aliensNode = contentRepository.Get<NodeContent>(aliensNodeReference);
35-
Assert.Equal("Aliens", aliensNode.Name);
3640

41+
// Act #3
42+
aliensNode = contentRepository.Get<NodeContent>(aliensNodeReference);
3743
testAlienProduct = contentRepository.Get<TestProduct>(testAlienProductReference);
44+
45+
// Assert #3
46+
Assert.Equal("Aliens", aliensNode.Name);
3847
Assert.Equal("Snarbo", testAlienProduct.Name);
3948
}
4049
}

test/OptimizelyTestContainers.Tests/NewsPageIntegrationTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
namespace OptimizelyTestContainers.Tests;
1111

12-
public class NewsPageIntegrationTest : OptimizelyCmsIntegrationTestBase
12+
public class NewsPageIntegrationTest() : OptimizelyIntegrationTestBase(includeCommerce: false)
1313
{
1414
[Fact]
1515
public void Can_Create_And_Read_NewsPage()

test/OptimizelyTestContainers.Tests/OptimizelyCmsIntegrationTestBase.cs

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

test/OptimizelyTestContainers.Tests/OptimizelyCommerceIntegrationTestBase.cs

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

0 commit comments

Comments
 (0)