Files
LehrerApp/LehrerApp.Desktop.Tests/QuickInputViewModelTests.cs
T
adminandClaude Sonnet 5 4510c56bb4 fix: Schnellbewerten-Dialog - Datenverlust, Pfeiltasten, Shortcuts
- GetRating las aus einem nie aktualisierten ParticipationEntry-
  Snapshot statt aus der laufend gepflegten Cells-Liste. Beim
  Zurückwechseln zu einem vorherigen Schüler zeigte der Dialog
  dadurch fälschlich keine Bewertung, obwohl sie tatsächlich
  gespeichert war. Jetzt liest GetRating aus Cells, das ungenutzte
  _entry-Feld entfernt.
- Pfeiltasten waren unbehandelt und fielen auf Avalonias
  Standard-Fokusnavigation durch: der Fokus sprang auf den
  Schließen-Button, ein Enter danach schloss den Dialog statt zum
  nächsten Schüler zu springen. Jetzt echte Navigation: ↑/↓ voriger/
  nächster Aspekt (neue PreviousAspect-Methode), ←/→ voriger/
  nächster Schüler - zugleich rechtsseitiges Pendant zu Q/W/E/R/T
  links. Hotkey-Legende im Dialog aktualisiert.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 09:14:00 +02:00

49 lines
1.5 KiB
C#

using LehrerApp.Core.Models;
using LehrerApp.Desktop.ViewModels.Groups;
using Xunit;
namespace LehrerApp.Desktop.Tests;
public sealed class QuickInputViewModelTests
{
[Fact]
public void ZurueckZuVorherigemSchueler_ZeigtBereitsGesetzteBewertung()
{
var aspects = new List<AspectColumnDef>
{
new(new ParticipationAspect { Key = "mitarbeit", Label = "Mitarbeit" }),
};
var rows = new List<ParticipationStudentRow>
{
new(Guid.NewGuid(), "Anna", new ParticipationEntry(), aspects, []),
new(Guid.NewGuid(), "Ben", new ParticipationEntry(), aspects, []),
};
var vm = new QuickInputViewModel(rows, aspects);
vm.SetRatingByNumber(4); // Scale5, 4. Stufe -> Rohwert 1 ("+"), Anna bewerten
vm.NextStudent(); // zu Ben
vm.PreviousStudent(); // zurück zu Anna
Assert.Equal(1, vm.AspectRows[0].Value);
}
[Fact]
public void VorherigerAspekt_SpringtRueckwaertsMitUmlauf()
{
var aspects = new List<AspectColumnDef>
{
new(new ParticipationAspect { Key = "a", Label = "A" }),
new(new ParticipationAspect { Key = "b", Label = "B" }),
};
var rows = new List<ParticipationStudentRow>
{
new(Guid.NewGuid(), "Anna", new ParticipationEntry(), aspects, []),
};
var vm = new QuickInputViewModel(rows, aspects);
vm.PreviousAspect(); // von Index 0 rückwärts -> letzter Aspekt (Umlauf)
Assert.Equal(1, vm.AspectIndex);
}
}