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>
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user