Sitzungsfreigabe: McpConfirmDialog bietet zwei Checkboxen ("diese Art
von Aktion" / "alle KI-Aktionen für den Rest der Sitzung nicht mehr
nachfragen"), nur beim Bestätigen wirksam. IMcpConfirmationService.
ConfirmAsync bekommt einen per [CallerMemberName] automatisch
befüllten operationKey - kein bestehender Aufruf musste geändert
werden. Freigaben leben als In-Memory-Bookkeeping auf der
Confirmation-Service-Instanz, gelten bis App-Ende, werden aber trotzdem
geloggt, damit stillschweigende Bestätigungen nicht spurlos bleiben.
Grund: 17 identische Bestätigungen in Folge für eine neu generierte
Unterrichtseinheit sind unzumutbar.
LessonStatus.Cancelled ("Ausgefallen") als Alternative zu
delete_lesson für Stunden, die nur ausgefallen sind (Exkursion,
Feiertag), aber als Ereignis dokumentiert bleiben sollen. Als
Cancelled=4 angehängt (bestehende LiteDB-Werte 0/1 sind fix). Konsistent
wie "bereits durchgeführt" behandelt an allen Stellen, die bisher nur
auf Conducted prüften: Terminverschiebung, Fortschrittsanzeige,
Hausaufgabe-kontrollieren-Erinnerung, "nächste Stunde"-Vorschlag.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
39 lines
1.2 KiB
C#
39 lines
1.2 KiB
C#
using LehrerApp.Core.Models;
|
|
using LehrerApp.Desktop.ViewModels.Groups;
|
|
using Xunit;
|
|
|
|
namespace LehrerApp.Desktop.Tests;
|
|
|
|
public sealed class LessonStatusDisplayTests
|
|
{
|
|
[Theory]
|
|
[InlineData(LessonStatus.Draft, "Entwurf")]
|
|
[InlineData(LessonStatus.Ready, "Bereit")]
|
|
[InlineData(LessonStatus.Conducted, "Durchgeführt")]
|
|
[InlineData(LessonStatus.Cancelled, "Ausgefallen")]
|
|
[InlineData(LessonStatus.Planned, "Geplant")]
|
|
public void ToName_FromName_RoundTrip(LessonStatus status, string expectedName)
|
|
{
|
|
Assert.Equal(expectedName, LessonStatusDisplay.ToName(status));
|
|
Assert.Equal(status, LessonStatusDisplay.FromName(expectedName));
|
|
}
|
|
|
|
[Fact]
|
|
public void UnitSummary_AusgefalleneStundenZaehlenWederAlsGehaltenNochAlsPensum()
|
|
{
|
|
var unit = new Unit { Title = "Optik" };
|
|
var lessons = new List<Lesson>
|
|
{
|
|
new() { Status = LessonStatus.Conducted },
|
|
new() { Status = LessonStatus.Cancelled },
|
|
new() { Status = LessonStatus.Ready },
|
|
};
|
|
|
|
var summary = new UnitSummary(unit, lessons);
|
|
|
|
Assert.Equal(2, summary.TotalCount);
|
|
Assert.Equal(1, summary.ConductedCount);
|
|
Assert.Equal(0.5, summary.ProgressFraction);
|
|
}
|
|
}
|