using LehrerApp.TemplateDesigner; using Xunit; namespace LehrerApp.TemplateDesigner.Tests; public sealed class AssetManagementTests { private static readonly byte[] OnePixelPng = Convert.FromBase64String( "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII="); [Fact] public void Import_ZeigtMetadatenUndBenenntKollisionenUm() { var viewModel = new DesignerViewModel(); var first = viewModel.ImportAsset("mein logo.png", OnePixelPng); var second = viewModel.ImportAsset("mein logo.png", OnePixelPng); Assert.Equal("mein-logo.png", first.Name); Assert.Equal("mein-logo-2.png", second.Name); Assert.Equal("1 × 1 px", first.Dimensions); Assert.Equal(2, viewModel.AssetItems.Count); } [Fact] public void AlsImageEinfuegen_VerwendetKoordinatenUndAktualisiertReferenzzaehler() { var viewModel = new DesignerViewModel { NewX = "15", NewY = "18", NewWidth = "32", NewHeight = "14" }; viewModel.ImportAsset("logo.png", OnePixelPng); viewModel.InsertSelectedAssetAsImage(); Assert.Contains("IMG logo.png 15 18 32 14 scale=100%", viewModel.LayoutSource); Assert.Equal(1, viewModel.SelectedAsset!.UsageCount); } [Fact] public void AlsImageEinfuegen_SchreibtProzentualeSkalierung() { var viewModel = new DesignerViewModel { NewImageScale = "37,5" }; viewModel.ImportAsset("logo.png", OnePixelPng); viewModel.InsertSelectedAssetAsImage(); Assert.Contains("scale=37.5%", viewModel.LayoutSource); } [Fact] public void Entfernen_LoeschtAssetUndAlleLayoutReferenzen() { var viewModel = new DesignerViewModel(); viewModel.ImportAsset("logo.png", OnePixelPng); viewModel.InsertSelectedAssetAsImage(); viewModel.RemoveSelectedAsset(); Assert.Empty(viewModel.AssetItems); Assert.Empty(viewModel.Assets); Assert.DoesNotContain("IMG logo.png", viewModel.LayoutSource); } [Fact] public void Ersetzen_BehältDateinamenUndLayoutReferenzen() { var viewModel = new DesignerViewModel(); viewModel.ImportAsset("logo.png", OnePixelPng); viewModel.InsertSelectedAssetAsImage(); viewModel.ReplaceSelectedAsset(OnePixelPng); Assert.Equal("logo.png", Assert.Single(viewModel.AssetItems).Name); Assert.Contains("IMG logo.png", viewModel.LayoutSource); Assert.Equal(1, viewModel.SelectedAsset!.UsageCount); } }