using LehrerApp.Core.Services; using Xunit; namespace LehrerApp.Tests; public sealed class PrivacySettingsServiceTests { [Fact] public void NeueKonfiguration_HatDreiJahreAlsStandard() { using var temp = new TempAppData(); var service = new PrivacySettingsService(temp.Path); Assert.Equal(3, service.RetentionYears); } [Fact] public void SetRetentionYears_WirdUeberNeueInstanzHinwegPersistiert() { using var temp = new TempAppData(); new PrivacySettingsService(temp.Path).SetRetentionYears(5); var second = new PrivacySettingsService(temp.Path); Assert.Equal(5, second.RetentionYears); } [Fact] public void SetRetentionYears_WertUnterEinsWirdAufEinsBegrenzt() { using var temp = new TempAppData(); var service = new PrivacySettingsService(temp.Path); service.SetRetentionYears(0); Assert.Equal(1, service.RetentionYears); } [Fact] public void RetentionCutoff_LiegtRetentionYearsVorDemStichtag() { using var temp = new TempAppData(); var service = new PrivacySettingsService(temp.Path); service.SetRetentionYears(3); var now = new DateTime(2026, 1, 1, 0, 0, 0, DateTimeKind.Utc); var cutoff = service.RetentionCutoff(now); Assert.Equal(new DateTime(2023, 1, 1, 0, 0, 0, DateTimeKind.Utc), cutoff); } private sealed class TempAppData : IDisposable { public string Path { get; } = System.IO.Path.Combine( System.IO.Path.GetTempPath(), $"lehrerapp-privacy-tests-{Guid.NewGuid():N}"); public TempAppData() => Directory.CreateDirectory(Path); public void Dispose() { if (Directory.Exists(Path)) Directory.Delete(Path, recursive: true); } } }