feat: Importkonflikte gesammelt übernehmen

This commit is contained in:
2026-08-18 00:52:05 +02:00
parent 99efa3a0fe
commit 65c2211dab
4 changed files with 69 additions and 2 deletions
@@ -56,6 +56,35 @@ public sealed class StudentImportDialogViewModelTests
Assert.Single(stored);
}
[Fact]
public async Task UebernehmenFuerAlle_WaehltBeiJedemEindeutigenKonfliktDenVorhandenenSchueler()
{
var stored = new List<Student>
{
new() { FirstName = "Max", LastName = "Beispiel" },
new() { FirstName = "Erika", LastName = "Muster" },
};
var service = Service(stored,
[
new ImportedStudent { FirstName = "Max", LastName = "Beispiel" },
new ImportedStudent { FirstName = "Erika", LastName = "Muster" },
]);
var preview = await service.AnalyzeAsync(File());
var vm = new StudentImportDialogViewModel(service, preview, "students.csv");
Assert.True(vm.CanUseExistingForAll);
Assert.All(vm.Conflicts, conflict => Assert.Equal("skip", conflict.SelectedOption.Id));
vm.UseExistingForAll();
Assert.All(vm.Conflicts,
conflict => Assert.StartsWith("existing:", conflict.SelectedOption.Id));
Assert.True(await vm.TryApplyAsync());
Assert.Equal(2, vm.Result?.MatchedExistingStudents);
Assert.Equal(0, vm.Result?.SkippedStudents);
Assert.Equal(2, stored.Count);
}
private static StudentImportService Service(
List<Student> stored,
IReadOnlyList<ImportedStudent> imported) => new(