using FluentAssertions; using IBKRTrader.Core.Database; using IBKRTrader.Core.Logging; using IBKRTrader.Core.Settings; using IBKRTrader.Core.Workers; using IBKRTrader.Modules.CongressTrading; using IBKRTrader.Modules.CongressTrading.Database; using IBKRTrader.Modules.CongressTrading.Scraper; using IBKRTrader.Modules.CongressTrading.Workers; using IBKRTrader.UI; 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_ReturnsModuleForm() { // Minimaler DI-Container mit allen von CreateWindow benötigten Abhängigkeiten. var services = new ServiceCollection(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton>(_ => Array.Empty()); services.AddSingleton(); var module = new CongressTradingModule(); module.RegisterServices(services); using var provider = services.BuildServiceProvider(); using var form = module.CreateWindow(provider); form.Should().BeAssignableTo(); ((ModuleFormBase)form).ModuleKey.Should().Be("CT"); } }