- Added ComplianceNFs.Infrastructure.Tests project to the solution. - Implemented unit tests for AccessDbRepository, ArchivingService, AttachmentRepository, InvoiceIngestionService, MailListener, MonitorViewModel, and Worker. - Enhanced existing tests with additional assertions and mock setups. - Updated TODOs and roadmap documentation to reflect changes in service implementations and testing coverage. - Modified ComplianceNFs.sln to include new test project and adjust solution properties.
56 lines
2.5 KiB
C#
56 lines
2.5 KiB
C#
using ComplianceNFs.Service;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Hosting;
|
|
using ComplianceNFs.Core.Ports;
|
|
using ComplianceNFs.Infrastructure.Repositories;
|
|
using ComplianceNFs.Infrastructure.Mail;
|
|
using ComplianceNFs.Infrastructure.Parsers;
|
|
using ComplianceNFs.Infrastructure.Archiving;
|
|
using ComplianceNFs.Core.Application.Services;
|
|
using ComplianceNFs.Core.Application;
|
|
|
|
IHost host = Host.CreateDefaultBuilder(args)
|
|
.ConfigureAppConfiguration((hostingContext, config) =>
|
|
{
|
|
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
|
|
})
|
|
.ConfigureServices((context, services) =>
|
|
{
|
|
var config = context.Configuration;
|
|
// Register infrastructure
|
|
services.AddSingleton<IAccessDbRepository>(sp =>
|
|
{
|
|
var connectionString = config["AccessConnectionString"];
|
|
if (string.IsNullOrWhiteSpace(connectionString))
|
|
throw new InvalidOperationException("AccessConnectionString is missing in configuration.");
|
|
return new AccessDbRepository(connectionString);
|
|
});
|
|
services.AddSingleton<IAttachmentRepository>(sp =>
|
|
{
|
|
var pgConnectionString = config["PostgresConnectionString"];
|
|
if (string.IsNullOrWhiteSpace(pgConnectionString))
|
|
throw new InvalidOperationException("PostgresConnectionString is missing in configuration.");
|
|
return new AttachmentRepository(pgConnectionString);
|
|
});
|
|
services.AddSingleton<IMailListener, MailListener>();
|
|
services.AddSingleton<IXmlParser, XmlParser>();
|
|
services.AddSingleton<IPdfParser, PdfParser>();
|
|
services.AddSingleton<IFileArchiver>(sp =>
|
|
{
|
|
var archiveBasePath = config["ArchiveBasePath"];
|
|
if (string.IsNullOrWhiteSpace(archiveBasePath))
|
|
throw new InvalidOperationException("ArchiveBasePath is missing in configuration.");
|
|
return new FileArchiver(archiveBasePath);
|
|
});
|
|
services.AddSingleton<IInvoiceIngestionService, InvoiceIngestionService>();
|
|
services.AddSingleton<IMatchingService, MatchingService>();
|
|
services.AddSingleton<IComplianceService, ComplianceService>();
|
|
services.AddSingleton<INotificationService, NotificationService>();
|
|
services.AddSingleton<IArchivingService, ArchivingService>();
|
|
services.AddHostedService<Worker>();
|
|
})
|
|
.Build();
|
|
|
|
host.Run();
|