using LehrerApp.Core.Models; using LehrerApp.Core.Services; using LehrerApp.Desktop.ViewModels.Groups; using Xunit; namespace LehrerApp.Desktop.Tests; public sealed class ExamDialogViewModelTests { private static ExamDialogViewModel BuildViewModel(List existingExams, string dateText, Exam? editingExam = null) { var vm = new ExamDialogViewModel(new FakeExams(existingExams), new FakeCompetencyDomains(), new FakeGradingKeyTemplates(), new GradingService(), Guid.NewGuid(), null, 9, GradingSystem.Grades1To6, "Chemie", isDifferentiated: false, editingExam, null); vm.DateText = dateText; return vm; } private static Exam MakeExam(DateOnly date) => new() { GroupId = Guid.NewGuid(), Title = "x", Date = date }; [Fact] public void WeekLoadHint_WenigeKlausurenInDerWoche_BleibtLeer() { var monday = new DateOnly(2026, 3, 16); var existing = new List { MakeExam(monday) }; var vm = BuildViewModel(existing, monday.AddDays(1).ToString("dd.MM.yyyy")); Assert.Equal("", vm.WeekLoadHint); } [Fact] public void WeekLoadHint_DritteKlausurInDerWoche_ZeigtHinweis() { var monday = new DateOnly(2026, 3, 16); var existing = new List { MakeExam(monday), MakeExam(monday.AddDays(1)) }; var vm = BuildViewModel(existing, monday.AddDays(2).ToString("dd.MM.yyyy")); Assert.Contains("3 Klausuren", vm.WeekLoadHint); } [Fact] public void WeekLoadHint_BearbeiteteKlausurZaehltNichtDoppelt() { var monday = new DateOnly(2026, 3, 16); var editing = MakeExam(monday); var existing = new List { editing, MakeExam(monday.AddDays(1)) }; // Nur die eigene Klausur (editing) + eine weitere -> 2 insgesamt, kein Hinweis. var vm = BuildViewModel(existing, monday.ToString("dd.MM.yyyy"), editing); Assert.Equal("", vm.WeekLoadHint); } [Fact] public void WeekLoadHint_UngueltigesDatum_BleibtLeer() { var vm = BuildViewModel([], "keindatum"); Assert.Equal("", vm.WeekLoadHint); } }