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>
66 lines
2.0 KiB
C#
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);
|
|
}
|
|
}
|