77 lines
2.5 KiB
C#
77 lines
2.5 KiB
C#
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);
|
||
}
|
||
}
|