Files
LehrerApp/LehrerApp.TemplateDesigner.Tests/AssetManagementTests.cs
admin 2f2761caf8
CI / build-and-test (push) Canceled after 0s
QuestPDF-Vorlagensystem und Designer hinzufügen
2026-08-30 15:37:22 +02:00

77 lines
2.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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);
}
}