using LehrerApp.Core.Models; using LehrerApp.Desktop.ViewModels.Groups; using Xunit; namespace LehrerApp.Desktop.Tests; public class WithdrawStudentDialogViewModelTests { [Fact] public void InitialisiertMitHeutigemDatumUndSpeichertAustritt() { var membership = new GroupMembership { JoinedAt = new DateOnly(2025, 9, 1) }; var memberships = new FakeMemberships([membership]); var vm = new WithdrawStudentDialogViewModel( memberships, membership, "Anna Beispiel", "7a", new DateOnly(2025, 10, 5)); Assert.Equal(new DateOnly(2025, 10, 5), DateOnly.FromDateTime(vm.SelectedDate!.Value.LocalDateTime)); vm.SaveCommand.Execute(null); Assert.True(vm.WasSaved); Assert.Equal(new DateOnly(2025, 10, 5), membership.LeftAt); } [Fact] public void VerhindertAustrittVorEintritt() { var membership = new GroupMembership { JoinedAt = new DateOnly(2025, 9, 1) }; var vm = new WithdrawStudentDialogViewModel( new FakeMemberships([membership]), membership, "Anna Beispiel", "7a"); vm.SelectedDate = new DateTimeOffset(2025, 8, 31, 0, 0, 0, TimeSpan.Zero); vm.SaveCommand.Execute(null); Assert.False(vm.WasSaved); Assert.Null(membership.LeftAt); Assert.NotEmpty(vm.DateError); } }