Kurs-Übersicht: fehlende Hausaufgaben; Erinnerungen als eigene Aufgabenart; Kalender-/Sitzplan-Bugfixes
Kurs-Übersicht: neue Karte "Fehlende Hausaufgaben" listet Schüler mit nicht gemachter Hausaufgabe aus der letzten Mitarbeitssitzung. Aufgabenverwaltung: WorkTask.Kind unterscheidet jetzt Arbeitsaufträge von reinen Erinnerungen ohne Zeitbezug (z.B. "morgen Ansage an die Klasse machen") - eigener Button "🔔 Erinnerung", eigenes Icon in Liste/Dashboard, läuft nicht in die Zeitauswertung ein. Drei Bugfixes aus Nutzer-Feedback: - Dashboard-Kalender zeigte eine Stunde doppelt, wenn sie über "Sitzung erzeugen" mit einer Mitarbeitssitzung verknüpft war. - Der Sitzplan-Tab legte beim bloßen Öffnen einer Gruppe (nicht erst bei echter Nutzung) eine leere "Sitzplan"-Sitzung für heute an. - Der "Meine Klasse"-Ring im Kalender erschien erst, sobald für den Tag eine Lesson existierte, statt schon laut Stundenplan. Außerdem: Drawer-Icons pinnen jetzt explizit auf die farbige Emoji-Schrift (Windows kann sonst je nach Font-Fallback auf eine einfarbige Variante ausweichen). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -254,4 +254,51 @@ public sealed class GroupOverviewViewModelTests
|
||||
|
||||
Assert.Equal([6, 4, 3, 8], indices);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void FehlendeHausaufgaben_ListetNurSchuelerAusDerLetztenSitzung()
|
||||
{
|
||||
var today = DateOnly.FromDateTime(DateTime.Today);
|
||||
var groupId = Guid.NewGuid();
|
||||
var studentMissing = new Student { FirstName = "Anna", LastName = "Beispiel" };
|
||||
var studentDone = new Student { FirstName = "Ben", LastName = "Muster" };
|
||||
var students = new FakeStudents([studentMissing, studentDone]);
|
||||
var sessions = new FakeSessions([]);
|
||||
var entries = new FakeEntries();
|
||||
|
||||
var olderSession = new ParticipationSession { GroupId = groupId, Date = today.AddDays(-10) };
|
||||
sessions.Save(olderSession);
|
||||
entries.Add(new ParticipationEntry
|
||||
{
|
||||
SessionId = olderSession.Id, StudentId = studentDone.Id,
|
||||
Homework = HomeworkStatus.MissingOpen, HomeworkMissing = true,
|
||||
});
|
||||
|
||||
var lastSession = new ParticipationSession { GroupId = groupId, Date = today.AddDays(-1) };
|
||||
sessions.Save(lastSession);
|
||||
entries.Add(new ParticipationEntry
|
||||
{
|
||||
SessionId = lastSession.Id, StudentId = studentMissing.Id,
|
||||
Homework = HomeworkStatus.MissingOverdue, HomeworkMissing = true,
|
||||
});
|
||||
entries.Add(new ParticipationEntry
|
||||
{
|
||||
SessionId = lastSession.Id, StudentId = studentDone.Id,
|
||||
Homework = HomeworkStatus.Completed, HomeworkMissing = false,
|
||||
});
|
||||
|
||||
var vm = NewVm(sessions: sessions, entries: entries, students: students);
|
||||
vm.Initialize(groupId, "Testkurs");
|
||||
|
||||
var item = Assert.Single(vm.MissingHomeworkStudents);
|
||||
Assert.Equal(studentMissing.FullName, item.StudentName);
|
||||
Assert.Contains(lastSession.Date.ToString("dd.MM.yyyy"), vm.MissingHomeworkSessionLabel);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void FehlendeHausaufgaben_OhneOffenePostenIstLeer()
|
||||
{
|
||||
var (vm, _, _, _, _, _, _) = BuildScenario();
|
||||
Assert.False(vm.HasMissingHomework);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user