TemplateDesigner: Redesign des TemplateSkripts

This commit is contained in:
2026-09-01 10:07:25 +02:00
parent 95e3f677e4
commit b2d0ccd30d
12 changed files with 807 additions and 55 deletions
@@ -17,7 +17,9 @@ public sealed class ProjectLifecycleTests
viewModel.Reset();
Assert.Equal("neue-vorlage", viewModel.TemplateId);
Assert.Equal("PAGE 210 297 mm\n", viewModel.LayoutSource);
Assert.Contains("#pragma page-template first", viewModel.LayoutSource);
Assert.Contains("#pragma page-template continuation", viewModel.LayoutSource);
Assert.Contains("#pragma content-flow body", viewModel.LayoutSource);
Assert.Empty(viewModel.Placeholders);
Assert.Empty(viewModel.Assets);
Assert.Empty(viewModel.AssetItems);
@@ -91,6 +93,21 @@ public sealed class ProjectLifecycleTests
Assert.Contains("mehrfach", exception.Message);
}
[Fact]
public void AlteAbsoluteLayouts_WerdenBeimOeffnenVerlustfreiInSeitentypEingebettet()
{
const string source = "PAGE 210 297 mm\nTEXT 20 30 \"Altbestand\" size=12\n";
var layout = new LehrerApp.Templating.LayoutParser().Parse(source);
var migrated = DesignerViewModel.MigrateLegacyLayout(source, layout);
var parsed = new LehrerApp.Templating.LayoutParser().Parse(migrated);
Assert.True(parsed.UsesPageTemplates);
Assert.Equal("Altbestand", Assert.IsType<LehrerApp.Templating.TextElement>(
parsed.PageTemplates.Single(x => x.Name == "first").Elements.Single()).Content);
Assert.Empty(parsed.ContentFlows.Single().Elements);
}
private static readonly byte[] OnePixelPng = Convert.FromBase64String(
"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=");
}