Files
LehrerApp/LehrerApp.Desktop.Tests/UntisLessonAbsenceHelperTests.cs
T
admin 1291b24478
CI / build-and-test (push) Canceled after 0s
Untis-Fehlzeiten und Dashboard-Hinweise verfeinern
2026-09-25 12:09:32 +02:00

62 lines
2.0 KiB
C#

using LehrerApp.Core.Models;
using LehrerApp.Desktop.Services;
using Xunit;
namespace LehrerApp.Desktop.Tests;
public sealed class UntisLessonAbsenceHelperTests
{
[Theory]
[InlineData(0, AttendanceStatus.Late)]
[InlineData(9, AttendanceStatus.Late)]
[InlineData(10, AttendanceStatus.SignificantlyLate)]
[InlineData(44, AttendanceStatus.SignificantlyLate)]
public void MapStatus_StaffeltVerspaetungAbZehnMinuten(
int absentMinutes, AttendanceStatus expected)
{
Assert.Equal(expected, UntisLessonAbsenceHelper.MapStatus(Absence(absentMinutes)));
}
[Fact]
public void MatchesUntisStatus_ErheblichVerspaetetAkzeptiertAllgemeinesUntisVerspaetet()
{
var matches = UntisLessonAbsenceHelper.MatchesUntisStatus(
AttendanceStatus.SignificantlyLate, AttendanceStatus.Late);
Assert.True(matches);
}
[Fact]
public void MatchesUntisStatus_NachgereichteEntschuldigungBleibtAenderung()
{
var matches = UntisLessonAbsenceHelper.MatchesUntisStatus(
AttendanceStatus.SignificantlyLate, AttendanceStatus.Excused);
Assert.False(matches);
}
[Fact]
public void MatchesUntisStatus_IstFuerVerspaetungsPraezisierungGerichtet()
{
var matches = UntisLessonAbsenceHelper.MatchesUntisStatus(
AttendanceStatus.Late, AttendanceStatus.SignificantlyLate);
Assert.False(matches);
}
[Theory]
[InlineData(AttendanceStatus.Late)]
[InlineData(AttendanceStatus.SignificantlyLate)]
[InlineData(AttendanceStatus.ExcusePending)]
[InlineData(AttendanceStatus.Excused)]
[InlineData(AttendanceStatus.Unexcused)]
public void MatchesUntisStatus_GleicherStatusPasst(AttendanceStatus status)
{
Assert.True(UntisLessonAbsenceHelper.MatchesUntisStatus(status, status));
}
private static UntisLessonAbsenceDto Absence(int absentMinutes) => new(
"Testschüler", 20260925, 1, 0, absentMinutes, 0, 800, 845,
"Verspätung", 1, false, null, true);
}