using LehrerApp.TemplateDesigner; using Xunit; namespace LehrerApp.TemplateDesigner.Tests; public sealed class ProjectLifecycleTests { [Fact] public void Reset_ErzeugtEinVollstaendigLeeresUnabhaengigesProjekt() { var viewModel = new DesignerViewModel(); viewModel.ImportAsset("logo.png", OnePixelPng); viewModel.Placeholders.Add(new("Test", LehrerApp.Templating.PlaceholderType.Text, false, "Wert")); viewModel.NewElementType = "IMG"; viewModel.NewContent = "logo.png"; viewModel.Reset(); Assert.Equal("neue-vorlage", viewModel.TemplateId); Assert.Equal("PAGE 210 297 mm\n", viewModel.LayoutSource); Assert.Empty(viewModel.Placeholders); Assert.Empty(viewModel.Assets); Assert.Empty(viewModel.AssetItems); Assert.Equal("de-DE", viewModel.MetadataItems.Single(x => x.Name == "language").Value); Assert.Equal("letter", viewModel.MetadataItems.Single(x => x.Name == "report-type").Value); Assert.Null(viewModel.SelectedAsset); Assert.Null(viewModel.PreviewImage); Assert.Equal("TEXT", viewModel.NewElementType); Assert.Equal("$Brieftext", viewModel.NewContent); Assert.False(viewModel.CanExport); } [Fact] public void FreieMetadaten_WerdenInDasManifestUebernommen() { var viewModel = new DesignerViewModel(); viewModel.MetadataItems.Add(new("school-year", "2026/27")); var manifest = viewModel.BuildManifest(); Assert.Equal("de-DE", manifest.Metadata["language"]); Assert.Equal("2026/27", manifest.Metadata["school-year"]); } private static readonly byte[] OnePixelPng = Convert.FromBase64String( "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII="); }