Phase 1: Modul-System formalisiert (IModule + ModuleRegistry) - Core/Modules/IModule.cs: Vertrag (Key, DisplayName, Description, Version, RegisterServices, InitializeAsync, GetWorkers, CreateWindow) - Core/Modules/ModuleRegistry.cs - CongressTradingModule auf IModule umgestellt (instanzbasiert, Platzhalter-Fenster) - Program.cs iteriert ueber IModule[] + Registry; Form1 initialisiert Module ueber Registry - Testbarkeit: WorkerBase DB-Log-Seam (virtuell); CapitolTradesScraper.ParseTradesFromHtml extrahiert (offline gegen ct_raw.html testbar) - Tests: ModuleRegistry, CongressTradingModule, WorkerBase, CapitolTradesScraper -> 15/15 gruen Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> @
50 lines
1.4 KiB
C#
50 lines
1.4 KiB
C#
using FluentAssertions;
|
|
using IBKRTrader.Modules.CongressTrading;
|
|
using IBKRTrader.Modules.CongressTrading.Database;
|
|
using IBKRTrader.Modules.CongressTrading.Scraper;
|
|
using IBKRTrader.Modules.CongressTrading.Workers;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
namespace IBKRTrader.Tests.Modules;
|
|
|
|
[Trait("cat", "unit")]
|
|
public class CongressTradingModuleTests
|
|
{
|
|
[Fact]
|
|
public void Metadata_IsAsExpected()
|
|
{
|
|
var module = new CongressTradingModule();
|
|
|
|
module.Key.Should().Be("CT");
|
|
module.DisplayName.Should().NotBeNullOrWhiteSpace();
|
|
module.Version.Should().Be("1.0.0");
|
|
}
|
|
|
|
[Fact]
|
|
public void RegisterServices_RegistersAllModuleServices()
|
|
{
|
|
var services = new ServiceCollection();
|
|
|
|
new CongressTradingModule().RegisterServices(services);
|
|
|
|
var registered = services.Select(d => d.ServiceType).ToList();
|
|
registered.Should().Contain(new[]
|
|
{
|
|
typeof(CongressMigrations),
|
|
typeof(CongressRepository),
|
|
typeof(CapitolTradesScraper),
|
|
typeof(CongressHistoryImportWorker),
|
|
typeof(CongressScrapeWorker),
|
|
});
|
|
}
|
|
|
|
[Fact]
|
|
public void CreateWindow_ReturnsForm()
|
|
{
|
|
using var form = new CongressTradingModule().CreateWindow(new ServiceCollection().BuildServiceProvider());
|
|
|
|
form.Should().NotBeNull();
|
|
form.Text.Should().Contain("CT");
|
|
}
|
|
}
|