commits
tags
using PdfSharp.Pdf.IO;
using Remiss.Core.Pdf;
using Xunit;
namespace Remiss.Core.Tests;
public sealed class PdfPipelineTests : IDisposable
{
private readonly string _dir = Path.Combine(Path.GetTempPath(), "remiss-tests-" + Guid.NewGuid().ToString("N"));
public PdfPipelineTests() => Directory.CreateDirectory(_dir);
public void Dispose()
{
try { Directory.Delete(_dir, recursive: true); } catch { /* ignore */ }
}
[Fact]
public void CoverPageGenerator_producesReadableSinglePagePdf()
{
var path = Path.Combine(_dir, "cover.pdf");
CoverPageGenerator.Generate(path, new CoverInfo("Hudmottagningen Sahlgrenska", "SE2321000131-E000000000001", DateTime.Now));
Assert.True(File.Exists(path));
using var doc = PdfReader.Open(path, PdfDocumentOpenMode.Import);
Assert.Equal(1, doc.PageCount);
}
[Fact]
public void PdfMerger_concatenatesPagesInOrder()
{
var cover = Path.Combine(_dir, "cover.pdf");
var body = Path.Combine(_dir, "body.pdf");
var merged = Path.Combine(_dir, "merged.pdf");
CoverPageGenerator.Generate(cover, new CoverInfo("A", "hsa-a", DateTime.Now));
// Återanvänd generatorn för att skapa en 1-sidig "remiss".
CoverPageGenerator.Generate(body, new CoverInfo("B", "hsa-b", DateTime.Now));
PdfMerger.Merge(merged, cover, body);
using var doc = PdfReader.Open(merged, PdfDocumentOpenMode.Import);
Assert.Equal(2, doc.PageCount);
}
[Fact]
public void PdfMerger_throwsWhenSourceMissing()
{
var merged = Path.Combine(_dir, "merged.pdf");
Assert.Throws<FileNotFoundException>(() => PdfMerger.Merge(merged, Path.Combine(_dir, "nope.pdf")));
}
}