Kompetenzen fast fertig
This commit is contained in:
@@ -9,7 +9,8 @@ namespace LehrerApp.Desktop.Tests;
|
||||
public sealed class SettingsViewModelTests
|
||||
{
|
||||
private static SettingsViewModel BuildViewModel(FakeSchoolHolidays? holidays = null,
|
||||
FakeSupervisionDuties? supervisionDuties = null)
|
||||
FakeSupervisionDuties? supervisionDuties = null,
|
||||
FakeSubjects? subjects = null, FakeCompetencyDomains? competencyDomains = null)
|
||||
{
|
||||
// Bewusst kein "using": SchoolCalendarSettingsService liest den Pfad erst bei SetState,
|
||||
// das Verzeichnis muss über die Lebensdauer des ViewModels bestehen bleiben.
|
||||
@@ -18,7 +19,7 @@ public sealed class SettingsViewModelTests
|
||||
Directory.CreateDirectory(tempPath);
|
||||
|
||||
return new SettingsViewModel(
|
||||
new FakeSubjects([]), new FakeCompetencyDomains(), new FakeGradingKeyTemplates(),
|
||||
subjects ?? new FakeSubjects([]), competencyDomains ?? new FakeCompetencyDomains(), new FakeGradingKeyTemplates(),
|
||||
new FakeSchemes(), new GradingService(), new BackupService(tempPath),
|
||||
new DatabaseEncryptionService(), new AppLockService(tempPath),
|
||||
new LiteDbContext(new MemoryStream()), new PrivacySettingsService(tempPath),
|
||||
@@ -219,4 +220,82 @@ public sealed class SettingsViewModelTests
|
||||
Assert.Empty(duties.GetAll());
|
||||
Assert.Empty(vm.SupervisionDuties);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Kompetenzbereiche_Umsortieren_PersistiertSortOrder()
|
||||
{
|
||||
var subject = new Subject { Name = "Biologie", ShortName = "Bio" };
|
||||
var repository = new FakeCompetencyDomains();
|
||||
repository.Add(new CompetencyDomain
|
||||
{
|
||||
SubjectId = subject.Id, GradeLevel = 10, Name = "Erster Bereich", SortOrder = 0,
|
||||
});
|
||||
repository.Add(new CompetencyDomain
|
||||
{
|
||||
SubjectId = subject.Id, GradeLevel = 10, Name = "Zweiter Bereich", SortOrder = 1,
|
||||
});
|
||||
var vm = BuildViewModel(subjects: new FakeSubjects([subject]), competencyDomains: repository);
|
||||
vm.CatalogSubject = vm.Subjects.Single();
|
||||
|
||||
vm.Domains[1].MoveUpCommand.Execute(null);
|
||||
|
||||
Assert.Equal(["Zweiter Bereich", "Erster Bereich"], vm.Domains.Select(x => x.Name));
|
||||
var stored = repository.GetBySubjectAndGrade(subject.Id, 10);
|
||||
Assert.Equal(["Zweiter Bereich", "Erster Bereich"], stored.Select(x => x.Name));
|
||||
Assert.Equal([0, 1], stored.Select(x => x.SortOrder));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Kompetenzen_Umsortieren_PersistiertSortOrder()
|
||||
{
|
||||
var repository = new FakeCompetencyDomains();
|
||||
var domain = new CompetencyDomain
|
||||
{
|
||||
Name = "Bereich",
|
||||
Items =
|
||||
[
|
||||
new CompetencyItem { Code = "A", Description = "Erste", SortOrder = 0 },
|
||||
new CompetencyItem { Code = "B", Description = "Zweite", SortOrder = 1 },
|
||||
],
|
||||
};
|
||||
repository.Add(domain);
|
||||
var vm = new DomainEditItem(domain, repository);
|
||||
|
||||
vm.Items[1].MoveUpCommand.Execute(null);
|
||||
|
||||
Assert.Equal(["B", "A"], vm.Items.Select(x => x.Code));
|
||||
var stored = repository.GetById(domain.Id)!;
|
||||
Assert.Equal(["B", "A"], stored.Items.Select(x => x.Code));
|
||||
Assert.Equal([0, 1], stored.Items.Select(x => x.SortOrder));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void KatalogKopieren_BereitetSichereVorschauFuerZielstufeVor()
|
||||
{
|
||||
var subject = new Subject { Name = "Biologie", ShortName = "Bio" };
|
||||
var repository = new FakeCompetencyDomains();
|
||||
repository.Add(new CompetencyDomain
|
||||
{
|
||||
SubjectId = subject.Id,
|
||||
GradeLevel = 10,
|
||||
Name = "Erkenntnisgewinnung",
|
||||
Code = "EG",
|
||||
Items = [new CompetencyItem { Code = "EG1", Description = "Modelle verwenden" }],
|
||||
});
|
||||
var vm = BuildViewModel(subjects: new FakeSubjects([subject]), competencyDomains: repository);
|
||||
vm.CatalogSubject = vm.Subjects.Single();
|
||||
|
||||
var preview = vm.PrepareCatalogCopy(11);
|
||||
|
||||
Assert.NotNull(preview);
|
||||
Assert.Equal(11, preview.GradeLevel);
|
||||
Assert.Equal(1, preview.NewDomains);
|
||||
Assert.Equal(1, preview.NewCompetencies);
|
||||
|
||||
vm.ApplyCatalogImport(preview, CompetencyCatalogImportMode.Merge, new HashSet<string>());
|
||||
var copied = repository.GetBySubjectAndGrade(subject.Id, 11);
|
||||
Assert.Single(copied);
|
||||
Assert.NotEqual(repository.GetBySubjectAndGrade(subject.Id, 10)[0].Id, copied[0].Id);
|
||||
Assert.Equal("EG1", copied[0].Items.Single().Code);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user