feat: Darkmode, Core/Modul-Gliederung, OptionsWheel & DebugTrading Web-UI, Supervisor entfernt
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
using FluentAssertions;
|
||||
using IBKRTrader.Core.Modularity;
|
||||
using IBKRTrader.Hosting.Web.Endpoints;
|
||||
using IBKRTrader.Modules.CongressTrading;
|
||||
using IBKRTrader.Modules.DebugTrading;
|
||||
using IBKRTrader.Modules.OptionsWheel;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Routing;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace IBKRTrader.Tests.Web;
|
||||
|
||||
[Trait("cat", "unit")]
|
||||
public class ModuleEndpointsTests
|
||||
{
|
||||
[Fact]
|
||||
public void Map_RegistersEndpoints_ForConfiguredModules()
|
||||
{
|
||||
var services = new ServiceCollection();
|
||||
services.AddSingleton<IModule>(new CongressTradingModule());
|
||||
services.AddSingleton<IModule>(new OptionsWheelModule());
|
||||
services.AddSingleton<IModule>(new DebugTradingModule());
|
||||
|
||||
var sp = services.BuildServiceProvider();
|
||||
|
||||
var builder = WebApplication.CreateBuilder();
|
||||
var app = builder.Build();
|
||||
var api = app.MapGroup("/api");
|
||||
|
||||
// Act
|
||||
ModuleEndpoints.Map(api, sp);
|
||||
|
||||
// Assert - Verify registered endpoints
|
||||
var routeBuilder = (IEndpointRouteBuilder)app;
|
||||
var patterns = routeBuilder.DataSources
|
||||
.SelectMany(ds => ds.Endpoints)
|
||||
.OfType<RouteEndpoint>()
|
||||
.Select(e => e.RoutePattern.RawText)
|
||||
.ToList();
|
||||
|
||||
patterns.Should().Contain(p => p != null && p.Contains("/modules/congresstrading"));
|
||||
patterns.Should().Contain(p => p != null && p.Contains("/modules/optionswheel/status"));
|
||||
patterns.Should().Contain(p => p != null && p.Contains("/modules/optionswheel/underlyings"));
|
||||
patterns.Should().Contain(p => p != null && p.Contains("/modules/debugtrading/status"));
|
||||
patterns.Should().Contain(p => p != null && p.Contains("/modules/debugtrading/positions"));
|
||||
|
||||
// Verify Supervisor is NOT registered
|
||||
patterns.Should().NotContain(p => p != null && p.Contains("/supervisor"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Map_DoesNotRegisterEndpoints_WhenModulesOmitted()
|
||||
{
|
||||
var services = new ServiceCollection();
|
||||
// Empty modules list
|
||||
var sp = services.BuildServiceProvider();
|
||||
|
||||
var builder = WebApplication.CreateBuilder();
|
||||
var app = builder.Build();
|
||||
var api = app.MapGroup("/api");
|
||||
|
||||
// Act
|
||||
ModuleEndpoints.Map(api, sp);
|
||||
|
||||
// Assert - None of the module endpoints should be mapped
|
||||
var routeBuilder = (IEndpointRouteBuilder)app;
|
||||
var patterns = routeBuilder.DataSources
|
||||
.SelectMany(ds => ds.Endpoints)
|
||||
.OfType<RouteEndpoint>()
|
||||
.Select(e => e.RoutePattern.RawText)
|
||||
.ToList();
|
||||
|
||||
patterns.Should().BeEmpty();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user