Neue Funktion Schüler austragen statt aus Kurs löschen.
This commit is contained in:
@@ -21,8 +21,12 @@ public class FakeMemberships(List<GroupMembership> all) : IGroupMembershipReposi
|
||||
public List<GroupMembership> GetByGroup(Guid groupId) => all.Where(m => m.GroupId == groupId).ToList();
|
||||
public GroupMembership? GetByStudentAndGroup(Guid studentId, Guid groupId) =>
|
||||
all.FirstOrDefault(m => m.StudentId == studentId && m.GroupId == groupId);
|
||||
public void Save(GroupMembership membership) { }
|
||||
public void Delete(Guid id) { }
|
||||
public void Save(GroupMembership membership)
|
||||
{
|
||||
all.RemoveAll(m => m.Id == membership.Id);
|
||||
all.Add(membership);
|
||||
}
|
||||
public void Delete(Guid id) => all.RemoveAll(m => m.Id == id);
|
||||
}
|
||||
|
||||
public class FakeSessions(List<ParticipationSession> all) : IParticipationSessionRepository
|
||||
|
||||
@@ -22,7 +22,8 @@ public class ReportGradeCalculationTests
|
||||
var grading = new GradingService();
|
||||
|
||||
return new ReportGradeDialogViewModel(grades, exams, results, students, memberships,
|
||||
schemes, reportGrades, grading, GroupId, GroupType.Class, GradingSystem.Grades1To6, "Testgruppe");
|
||||
schemes, reportGrades, grading, GroupId, GroupType.Class, GradingSystem.Grades1To6,
|
||||
"Testgruppe", "2025/26");
|
||||
}
|
||||
|
||||
private static (Exam Exam1, Exam Exam2, FakeExams Exams, FakeResults Results) BuildExams()
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user