Files
LehrerApp/LehrerApp.WebUntis.Tests/WebUntisLessonAbsenceParserTests.cs
T
2026-08-25 00:21:53 +02:00

55 lines
2.3 KiB
C#

using Xunit;
using LehrerApp.WebUntis;
namespace LehrerApp.WebUntis.Tests;
public sealed class WebUntisLessonAbsenceParserTests
{
[Fact]
public void Parse_UebernimmtAlleFelderUndZweistelligesJahr()
{
const string report = "\uFEFFSchüler*innen\tDatum\tFehlstd.\tUnentsch. Fehlstd.\tFehlmin.\tUnentsch. Fehlmin.\tZeit\tAbwesenheitsgrund\tENr\tErledigt\tAbwesenheit zählt\r\n" +
"Erika Mustermann\t09.12.25\t1\t1\t45\t45\t09:40-10:25\tKrank\t(185120)\t09.12.25\ttrue\r\n";
var absence = Assert.Single(WebUntisLessonAbsenceParser.Parse(report));
Assert.Equal("Erika Mustermann", absence.StudentName);
Assert.Equal(20251209, absence.Date);
Assert.Equal(1, absence.AbsentPeriods);
Assert.Equal(1, absence.UnexcusedAbsentPeriods);
Assert.Equal(45, absence.AbsentMinutes);
Assert.Equal(45, absence.UnexcusedAbsentMinutes);
Assert.Equal(940, absence.StartTime);
Assert.Equal(1025, absence.EndTime);
Assert.Equal("Krank", absence.Reason);
Assert.Equal(185120, absence.ExternKey);
Assert.True(absence.ExternKeyInParentheses);
Assert.Equal("09.12.25", absence.HandledOn);
Assert.True(absence.Counts);
}
[Fact]
public void Parse_AkzeptiertExterneSchuelerkennungOhneKlammern()
{
const string report = "Schüler*innen\tDatum\tFehlstd.\tUnentsch. Fehlstd.\tFehlmin.\tUnentsch. Fehlmin.\tZeit\tAbwesenheitsgrund\tENr\tErledigt\tAbwesenheit zählt\r\n" +
"Max Muster\t27.01.26\t1\t0\t45\t0\t10:25-11:10\t\t178156\t\tfalse\r\n";
var absence = Assert.Single(WebUntisLessonAbsenceParser.Parse(report));
Assert.Equal(178156, absence.ExternKey);
Assert.False(absence.ExternKeyInParentheses);
Assert.Null(absence.Reason);
Assert.Null(absence.HandledOn);
Assert.False(absence.Counts);
}
[Fact]
public void Parse_LehntUngueltigesDatumAb()
{
const string report = "Schüler*innen\tDatum\tFehlstd.\tUnentsch. Fehlstd.\tFehlmin.\tUnentsch. Fehlmin.\tZeit\tAbwesenheitsgrund\tENr\tErledigt\tAbwesenheit zählt\r\n" +
"Max Muster\tkein-datum\t1\t0\t45\t0\t10:25-11:10\t\t178156\t\tfalse\r\n";
Assert.Throws<InvalidDataException>(() => WebUntisLessonAbsenceParser.Parse(report));
}
}