feat(Extensions): add PDF generation support for EnvelopeGenerator tests

- Introduced QuestPDF dependency to generate PDF documents in tests.
- Added `CreatePdfAsBase64` extension method for generating random PDF content.
- Added `CreateDocumentCommand` and `CreateDocumentCommands` helpers for creating document test data.
- Refactored using statements and added `EnvelopeGenerator.Application.EnvelopeReceivers.Commands`.
- Maintains existing sample user and receiver setup for integration testing.
This commit is contained in:
tekh 2025-08-29 16:11:14 +02:00
parent 9cf776fa98
commit 145a2ebe8f
2 changed files with 43 additions and 0 deletions

View File

@ -12,6 +12,7 @@
<PackageReference Include="DigitalData.Core.Infrastructure" Version="2.3.1" />
<PackageReference Include="DigitalData.Core.Infrastructure.AutoMapper" Version="1.0.3" />
<PackageReference Include="DigitalData.EmailProfilerDispatcher" Version="3.1.1" />
<PackageReference Include="QuestPDF" Version="2025.7.1" />
<PackageReference Include="UserManager" Version="1.1.3" />
</ItemGroup>

View File

@ -2,6 +2,7 @@
using DigitalData.Core.Abstraction.Application.Repository;
using DigitalData.UserManager.Domain.Entities;
using EnvelopeGenerator.Application;
using EnvelopeGenerator.Application.EnvelopeReceivers.Commands;
using EnvelopeGenerator.Application.Envelopes.Commands;
using EnvelopeGenerator.Application.Receivers.Commands;
using EnvelopeGenerator.Application.Users.Commands;
@ -11,6 +12,8 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using QuestPDF.Fluent;
using QuestPDF.Infrastructure;
namespace EnvelopeGenerator.Tests.Application;
@ -151,6 +154,45 @@ public static class Extensions
.ToList();
#endregion
#region Envelope Document
public static string CreatePdfAsBase64(this Faker faker)
{
string name = faker.Name.FullName();
string address = faker.Address.FullAddress();
string lorem = faker.Lorem.Paragraphs(2);
QuestPDF.Settings.License = LicenseType.Community;
var document = Document.Create(container =>
{
container.Page(page =>
{
page.Margin(50);
page.Header().Text("Random PDF").FontSize(20).Bold();
page.Content().Column(col =>
{
col.Item().Text($"Vor- und Nachname: {name}");
col.Item().Text($"Adresse: {address}");
col.Item().Text(lorem);
});
});
});
using var ms = new MemoryStream();
document.GeneratePdf(ms);
return Convert.ToBase64String(ms.ToArray());
}
public static DocumentCreateCommand CreateDocumentCommand(this Faker faker) => new()
{
DataAsBase64 = faker.CreatePdfAsBase64()
};
public static List<DocumentCreateCommand> CreateDocumentCommands(this Faker fake, int minCount = 10, int maxCount = 20)
=> Enumerable.Range(0, fake.Random.Number(minCount, maxCount))
.Select(_ => fake.CreateDocumentCommand())
.ToList();
#endregion
#region User Command
public static CreateUserCommand CreateUserCommand(this Faker fake) => new()
{