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:
parent
9cf776fa98
commit
145a2ebe8f
@ -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>
|
||||
|
||||
|
||||
@ -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()
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user