36 lines
1.7 KiB
C#
36 lines
1.7 KiB
C#
using LehrerApp.Desktop.ViewModels.ClassTeacher;
|
|
using Xunit;
|
|
|
|
namespace LehrerApp.Desktop.Tests;
|
|
|
|
public sealed class UntisNameMatchingTests
|
|
{
|
|
[Theory]
|
|
[InlineData("Ben Schmidt", "Schmidt Ben")]
|
|
[InlineData("Ada Müller", "MÜLLER ADA")]
|
|
[InlineData("Max Mustermann", "mustermann max")]
|
|
public void NamesMatch_IstReihenfolgeUndGrossKleinschreibungUnabhaengig(string a, string b) =>
|
|
Assert.True(UntisNameMatching.NamesMatch(a, b));
|
|
|
|
[Theory]
|
|
[InlineData("Ben Schmidt", "Ben Müller")]
|
|
[InlineData(null, "Ben Schmidt")]
|
|
[InlineData("Ben Schmidt", "")]
|
|
public void NamesMatch_LehntUnterschiedlicheOderFehlendeNamenAb(string? a, string b) =>
|
|
Assert.False(UntisNameMatching.NamesMatch(a, b));
|
|
|
|
// Regression: Student.FullName liefert "Nachname, Vorname" (mit Komma) für Anzeigezwecke.
|
|
// Wird dieser String direkt an NamesMatch übergeben, bleibt das Komma am Wort kleben
|
|
// ("gerste," != "gerste") und der Abgleich gegen WebUntis-Namen (immer ohne Komma) schlägt
|
|
// fehl - genau das ließ den Anwesenheitskalender/die Fehlzeitenliste im Elternbrief leer
|
|
// bleiben, obwohl echte Fehlzeiten vorlagen. Aufrufer müssen deshalb "Vorname Nachname" ohne
|
|
// Komma bilden (siehe StudentAttendanceCalendarDrawingBuilder.StudentAttendanceCalendarService
|
|
// und ClassTeacherOverviewViewModel.cs:1173), statt Student.FullName direkt zu verwenden.
|
|
[Fact]
|
|
public void NamesMatch_KommaGetrennterAnzeigename_PasstNichtOhneUmformung()
|
|
{
|
|
Assert.False(UntisNameMatching.NamesMatch("Gerste, Amelia", "Gerste Amelia"));
|
|
Assert.True(UntisNameMatching.NamesMatch("Amelia Gerste", "Gerste Amelia"));
|
|
}
|
|
}
|