using LehrerApp.Core.Models; using LehrerApp.Desktop.ViewModels.Groups; using Xunit; namespace LehrerApp.Desktop.Tests; public sealed class ParticipationSessionEditingTests { [Fact] public void Bearbeitungsdialog_AendertBestehendeSessionOhneVerknuepfungenZuErsetzen() { var session = new ParticipationSession { GroupId = Guid.NewGuid(), Date = new DateOnly(2026, 8, 19), Comment = "Sitzplan", LessonId = Guid.NewGuid(), CompetencyCodes = ["K1"], }; var vm = new AddSessionDialogViewModel(session) { DateText = "20.08.2026", Comment = "Elektrische Stromkreise", }; vm.SaveCommand.Execute(null); Assert.Same(session, vm.Result); Assert.Equal(new DateOnly(2026, 8, 20), session.Date); Assert.Equal("Elektrische Stromkreise", session.Comment); Assert.NotNull(session.LessonId); Assert.Equal(["K1"], session.CompetencyCodes); } [Fact] public async Task BearbeitenBefehl_SpeichertSessionUndAktualisiertAnzeige() { var group = new LearningGroup { Name = "8a", SchoolYear = "2026/27" }; var session = new ParticipationSession { GroupId = group.Id, Date = new DateOnly(2026, 8, 19), Comment = "Sitzplan", }; var sessions = new FakeSessions([session]); var vm = new ParticipationTabViewModel( sessions, new FakeEntries(), new FakeAspects(), new FakeStudents([]), new FakeMemberships([]), new FakeGroups([group]), new FakeCompetencyDomains()); vm.OnEditSession = existing => { existing.Comment = "Nachbesprechung Elektrizität"; return Task.FromResult(existing); }; vm.Initialize(group.Id, group.SchoolYear); await vm.EditSessionCommand.ExecuteAsync(null); Assert.Equal(session.Id, vm.SelectedSession?.Id); Assert.Equal("Nachbesprechung Elektrizität", sessions.GetById(session.Id)?.Comment); Assert.Contains("Nachbesprechung Elektrizität", vm.SelectedSessionDisplay); } }