This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
using System.IO.Compression;
|
||||
using LehrerApp.Templating;
|
||||
using Xunit;
|
||||
|
||||
namespace LehrerApp.Templating.Tests;
|
||||
|
||||
public sealed class TemplateMetadataTests : IDisposable
|
||||
{
|
||||
private readonly string _directory = Path.Combine(Path.GetTempPath(), $"template-metadata-{Guid.NewGuid():N}");
|
||||
|
||||
public TemplateMetadataTests() => Directory.CreateDirectory(_directory);
|
||||
|
||||
[Fact]
|
||||
public void Paket_SchreibtLesbareMetadatendateiUndLaedtWerteInsManifest()
|
||||
{
|
||||
var path = Path.Combine(_directory, "metadata.lavorlage");
|
||||
var manifest = new TemplateManifest
|
||||
{
|
||||
Id = "metadata", Name = "Metadaten",
|
||||
Metadata = new(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
["language"] = "de-DE",
|
||||
["report-type"] = "parent-letter",
|
||||
["filter"] = "class=7a",
|
||||
},
|
||||
};
|
||||
|
||||
TemplatePackage.Create(path, manifest, "PAGE 210 297 mm", new Dictionary<string, byte[]>());
|
||||
|
||||
using (var archive = ZipFile.OpenRead(path))
|
||||
using (var reader = new StreamReader(archive.GetEntry("metadata.txt")!.Open()))
|
||||
{
|
||||
var text = reader.ReadToEnd();
|
||||
Assert.Contains("language=de-DE", text);
|
||||
Assert.Contains("report-type=parent-letter", text);
|
||||
}
|
||||
var loaded = new TemplateLoader().LoadFromPackage(path);
|
||||
Assert.Equal("de-DE", loaded.Manifest.Metadata["language"]);
|
||||
Assert.Equal("parent-letter", loaded.Manifest.Metadata["REPORT-TYPE"]);
|
||||
Assert.Equal("class=7a", loaded.Manifest.Metadata["filter"]);
|
||||
Assert.DoesNotContain("metadata.txt", loaded.Assets.Keys);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Textformat_IgnoriertKommentareUndLehntDoppelteSchluesselAb()
|
||||
{
|
||||
var parsed = TemplateMetadataText.Parse("# Kommentar\nlanguage = de-DE\nreport-type=letter\n");
|
||||
Assert.Equal("de-DE", parsed["language"]);
|
||||
|
||||
var exception = Assert.Throws<InvalidDataException>(() =>
|
||||
TemplateMetadataText.Parse("language=de-DE\nLANGUAGE=en-US"));
|
||||
Assert.Contains("mehrfach", exception.Message);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (Directory.Exists(_directory)) Directory.Delete(_directory, true);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user