64 lines
2.5 KiB
C#
64 lines
2.5 KiB
C#
using Xunit;
|
|
using LehrerApp.WebUntis;
|
|
|
|
namespace LehrerApp.WebUntis.Tests;
|
|
|
|
public sealed class WebUntisStudentReportParserTests
|
|
{
|
|
[Fact]
|
|
public void Parse_UebernimmtAlleFelderUndDeutscheDatumswerte()
|
|
{
|
|
const string report = "\uFEFFid\texternKey\tklasse.name\tname\tlongName\tforeName\tgender\tbirthDate\tentryDate\texitDate\ttext\tmedicalReportDuty\tschulpflicht\tmajority\tadress.email\tadress.mobile\tadress.phone\tadress.city\tadress.postCode\tadress.street\tattribute.iL\r\n" +
|
|
"17\t9001\t10a\tMUST\tMustermann\tErika\tw\t03.02.2010\t01.08.2021\t\t\"Zeile 1\nZeile 2\"\tja\tja\tnein\terika@example.org\t0151\t030\tBerlin\t10115\tTestweg 1\tIL-A\r\n";
|
|
|
|
var student = Assert.Single(WebUntisStudentReportParser.Parse(report));
|
|
|
|
Assert.Equal(17, student.UntisId);
|
|
Assert.Equal(9001, student.ExternKey);
|
|
Assert.Equal("10a", student.ClassName);
|
|
Assert.Equal("Erika Mustermann", student.DisplayName);
|
|
Assert.Equal(20100203, student.BirthDate);
|
|
Assert.Equal(20210801, student.EntryDate);
|
|
Assert.Null(student.ExitDate);
|
|
Assert.Equal("Zeile 1\nZeile 2", student.Text);
|
|
Assert.Equal("erika@example.org", student.Address.Email);
|
|
Assert.Equal("IL-A", student.AttributeIL);
|
|
}
|
|
|
|
[Fact]
|
|
public void Parse_BehandeltEscapteAnfuehrungszeichenUndLeereZeilen()
|
|
{
|
|
const string report = "id\texternKey\tklasse.name\tname\r\n" +
|
|
"1\t2\t5b\t\"MUS\"\"T\"\r\n\t\t\t\r\n";
|
|
|
|
var student = Assert.Single(WebUntisStudentReportParser.Parse(report));
|
|
|
|
Assert.Equal("MUS\"T", student.Name);
|
|
Assert.Equal("MUS\"T", student.DisplayName);
|
|
}
|
|
|
|
[Fact]
|
|
public void Parse_AkzeptiertIsoDatumswerteOhneTrennzeichen()
|
|
{
|
|
const string report = "id\texternKey\tklasse.name\tbirthDate\tentryDate\texitDate\r\n" +
|
|
"17\t9001\t10a\t20100203\t20210801\t20270731\r\n";
|
|
|
|
var student = Assert.Single(WebUntisStudentReportParser.Parse(report));
|
|
|
|
Assert.Equal(20100203, student.BirthDate);
|
|
Assert.Equal("20100203", student.BirthDateRaw);
|
|
Assert.Equal(20210801, student.EntryDate);
|
|
Assert.Equal(20270731, student.ExitDate);
|
|
}
|
|
|
|
[Fact]
|
|
public void Parse_LehntUngueltigePflichtIdAb()
|
|
{
|
|
const string report = "id\texternKey\tklasse.name\r\nkeine-zahl\t1\t5b\r\n";
|
|
|
|
var error = Assert.Throws<InvalidDataException>(() => WebUntisStudentReportParser.Parse(report));
|
|
|
|
Assert.Contains("id", error.Message);
|
|
}
|
|
}
|