Giuliano Paschoalino 606b841435 feat: Add ComplianceNFs.Infrastructure.Tests project and implement unit tests for various services
- 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.
2025-06-18 16:34:44 -03:00

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();