Files
LehrerApp/LehrerApp.Desktop.Tests/WindowSettingsServiceTests.cs
T
adminandClaude Sonnet 5 331033db5c feat: Dunkelmodus, Fenstergröße merken, Papierkorb für Löschvorgänge (12.4, 14.3, 14.6)
Dunkelmodus über neuen Einstellungen-Tab "Darstellung" (Systemvorgabe/Hell/Dunkel),
Fenstergröße/Maximiert-Status wird über Sitzungen hinweg gemerkt (bewusst ohne
Fensterposition), und ein generischer Snapshot-basierter Papierkorb (30 Tage) für
Sitzpläne, Noten, Notenschlüssel-Vorlagen, Aufgaben und Zeiteinträge. Details und
bewusste Scope-Entscheidungen (Spaltenbreiten zurückgestellt, Farb-Audit für
Dunkelmodus offen, welche Entitäten der Papierkorb abdeckt) in TODO.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-20 16:26:10 +02:00

66 lines
2.0 KiB
C#

using LehrerApp.Desktop.Services;
using Xunit;
namespace LehrerApp.Desktop.Tests;
public sealed class WindowSettingsServiceTests
{
private static string BuildTempPath()
{
var path = Path.Combine(Path.GetTempPath(), $"lehrerapp-windowsettings-tests-{Guid.NewGuid():N}");
Directory.CreateDirectory(path);
return path;
}
[Fact]
public void Load_OhneVorhandeneDatei_LiefertStandardgroesse()
{
var service = new WindowSettingsService(BuildTempPath());
var settings = service.Load();
Assert.Equal(1280, settings.Width);
Assert.Equal(800, settings.Height);
Assert.False(settings.IsMaximized);
}
[Fact]
public void SaveUndLoad_PersistiertUeberNeueInstanz()
{
var path = BuildTempPath();
new WindowSettingsService(path).Save(new WindowSettings { Width = 1600, Height = 950, IsMaximized = true });
var reloaded = new WindowSettingsService(path).Load();
Assert.Equal(1600, reloaded.Width);
Assert.Equal(950, reloaded.Height);
Assert.True(reloaded.IsMaximized);
}
/// Eine winzige oder negative Größe (z.B. durch eine beschädigte/manuell editierte Datei)
/// darf das Fenster beim nächsten Start nicht unbenutzbar klein machen.
[Fact]
public void Load_UnplausibelKleineGroesse_FaelltAufStandardgroesseZurueck()
{
var path = BuildTempPath();
new WindowSettingsService(path).Save(new WindowSettings { Width = 5, Height = 5 });
var reloaded = new WindowSettingsService(path).Load();
Assert.Equal(1280, reloaded.Width);
Assert.Equal(800, reloaded.Height);
}
[Fact]
public void Load_BeschaedigteDatei_FaelltAufStandardgroesseZurueck()
{
var path = BuildTempPath();
File.WriteAllText(Path.Combine(path, "windowsettings.json"), "{ kein json");
var settings = new WindowSettingsService(path).Load();
Assert.Equal(1280, settings.Width);
Assert.Equal(800, settings.Height);
}
}