Upgrade Sitzplan - Jetzt mit Bewertungsfeature

This commit is contained in:
2026-08-19 16:46:08 +02:00
parent f514d1d58c
commit 0faa3f54de
14 changed files with 370 additions and 14 deletions
@@ -146,6 +146,66 @@ public sealed class SeatingPlanViewModelTests
Assert.All(vm.Seats, seat => Assert.True(seat.CanEdit));
}
[Fact]
public void Ansichtsmodus_ZeigtAnwesenheitUndHausaufgabeUndBlendetAbwesendeAb()
{
var groupId = Guid.NewGuid();
var student = new Student { FirstName = "Anna", LastName = "A" };
var session = new ParticipationSession { GroupId = groupId, Date = DateOnly.FromDateTime(DateTime.Today) };
var entries = new FakeEntries();
entries.Add(new ParticipationEntry
{
SessionId = session.Id, StudentId = student.Id,
Attendance = AttendanceStatus.Excused, Homework = HomeworkStatus.MissingOpen,
});
var plan = new SeatingPlan
{
GroupId = groupId, Name = "Standard", Rows = 1, Columns = 1,
Assignments = [new SeatAssignment { StudentId = student.Id }],
};
var vm = new SeatingPlanTabViewModel(new FakeSeatingPlans([plan]), new FakeStudents([student]),
new FakeMemberships([new GroupMembership { GroupId = groupId, StudentId = student.Id }]),
new FakeSessions([session]), entries, new FakeAspects());
vm.Initialize(groupId, isReadOnly: false);
var seat = Assert.Single(vm.Seats);
Assert.True(seat.HasAttendanceBadge);
Assert.True(seat.HasHomeworkBadge);
Assert.Equal(0.42, seat.LessonOpacity);
}
[Fact]
public void SituationsTags_WerdenProSchuelerUndSitzungInEinemEntwurfZusammengefuehrt()
{
var groupId = Guid.NewGuid();
var student = new Student { FirstName = "Anna", LastName = "A" };
var session = new ParticipationSession
{
GroupId = groupId, Date = DateOnly.FromDateTime(DateTime.Today), LessonId = Guid.NewGuid(),
};
var docs = new FakeDocumentation();
var plan = new SeatingPlan
{
GroupId = groupId, Name = "Standard", Rows = 1, Columns = 1,
Assignments = [new SeatAssignment { StudentId = student.Id }],
};
var vm = new SeatingPlanTabViewModel(new FakeSeatingPlans([plan]), new FakeStudents([student]),
new FakeMemberships([new GroupMembership { GroupId = groupId, StudentId = student.Id }]),
new FakeSessions([session]), new FakeEntries(), new FakeAspects(), docs);
vm.Initialize(groupId, isReadOnly: false);
var seat = Assert.Single(vm.Seats);
seat.SituationTags.Single(t => t.Text == "Mitarbeit verweigert").ToggleCommand.Execute(null);
seat.SituationTags.Single(t => t.Text == "Material vergessen").ToggleCommand.Execute(null);
var draft = Assert.Single(docs.GetByStudent(student.Id));
Assert.True(draft.IsDraft);
Assert.Equal(session.Id, draft.ParticipationSessionId);
Assert.Equal(session.LessonId, draft.LessonId);
Assert.Equal(["Mitarbeit verweigert", "Material vergessen"], draft.Tags);
}
[Fact]
public void Tischabstaende_WerdenBeimBearbeitenProSpaltengrenzeGespeichert()
{