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(() => PdfMerger.Merge(merged, Path.Combine(_dir, "nope.pdf"))); } }