CI / build-and-test (push) Canceled after 0s
- Klausuren: neuer ExamWeekLoadService zählt eigene Klausuren je ISO-Woche über alle Kurse hinweg (Klassen-Kollisionen deckt bereits der externe Klausurplaner ab). Hinweis direkt im ExamDialog beim Datum, zusätzlich neue Dashboard-Karte "Klausurwochen" für die 60-Tage-Vorausschau. - Mitarbeit: Schnelleingabe-Dialog kann eine Bewertung jetzt per Entf auf "nicht bewertet" zurücksetzen (bisher nur im Sitzplatz-Dialog möglich). - Sitzplan: Strichliste "gemeldet"/"gemeldet und drangekommen" direkt auf der Sitzplatz-Kachel (ParticipationEntry.RaisedHandCount/CalledOnCount); schlägt im Sitzplatz-Dialog eine Quantitätsbewertung vor (ein Klick zum Übernehmen, nie automatisch). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
65 lines
2.1 KiB
C#
65 lines
2.1 KiB
C#
using LehrerApp.Core.Models;
|
|
using LehrerApp.Core.Services;
|
|
using LehrerApp.Desktop.ViewModels.Groups;
|
|
using Xunit;
|
|
|
|
namespace LehrerApp.Desktop.Tests;
|
|
|
|
public sealed class ExamDialogViewModelTests
|
|
{
|
|
private static ExamDialogViewModel BuildViewModel(List<Exam> existingExams, string dateText,
|
|
Exam? editingExam = null)
|
|
{
|
|
var vm = new ExamDialogViewModel(new FakeExams(existingExams), new FakeCompetencyDomains(),
|
|
new FakeGradingKeyTemplates(), new GradingService(), Guid.NewGuid(), null, 9,
|
|
GradingSystem.Grades1To6, "Chemie", isDifferentiated: false, editingExam, null);
|
|
vm.DateText = dateText;
|
|
return vm;
|
|
}
|
|
|
|
private static Exam MakeExam(DateOnly date) => new() { GroupId = Guid.NewGuid(), Title = "x", Date = date };
|
|
|
|
[Fact]
|
|
public void WeekLoadHint_WenigeKlausurenInDerWoche_BleibtLeer()
|
|
{
|
|
var monday = new DateOnly(2026, 3, 16);
|
|
var existing = new List<Exam> { MakeExam(monday) };
|
|
|
|
var vm = BuildViewModel(existing, monday.AddDays(1).ToString("dd.MM.yyyy"));
|
|
|
|
Assert.Equal("", vm.WeekLoadHint);
|
|
}
|
|
|
|
[Fact]
|
|
public void WeekLoadHint_DritteKlausurInDerWoche_ZeigtHinweis()
|
|
{
|
|
var monday = new DateOnly(2026, 3, 16);
|
|
var existing = new List<Exam> { MakeExam(monday), MakeExam(monday.AddDays(1)) };
|
|
|
|
var vm = BuildViewModel(existing, monday.AddDays(2).ToString("dd.MM.yyyy"));
|
|
|
|
Assert.Contains("3 Klausuren", vm.WeekLoadHint);
|
|
}
|
|
|
|
[Fact]
|
|
public void WeekLoadHint_BearbeiteteKlausurZaehltNichtDoppelt()
|
|
{
|
|
var monday = new DateOnly(2026, 3, 16);
|
|
var editing = MakeExam(monday);
|
|
var existing = new List<Exam> { editing, MakeExam(monday.AddDays(1)) };
|
|
|
|
// Nur die eigene Klausur (editing) + eine weitere -> 2 insgesamt, kein Hinweis.
|
|
var vm = BuildViewModel(existing, monday.ToString("dd.MM.yyyy"), editing);
|
|
|
|
Assert.Equal("", vm.WeekLoadHint);
|
|
}
|
|
|
|
[Fact]
|
|
public void WeekLoadHint_UngueltigesDatum_BleibtLeer()
|
|
{
|
|
var vm = BuildViewModel([], "keindatum");
|
|
|
|
Assert.Equal("", vm.WeekLoadHint);
|
|
}
|
|
}
|