123 lines
4.6 KiB
C#
123 lines
4.6 KiB
C#
using LehrerApp.Core.Models;
|
||
using LehrerApp.Core.Services;
|
||
using LehrerApp.Desktop.ViewModels.Groups;
|
||
using Xunit;
|
||
|
||
namespace LehrerApp.Desktop.Tests;
|
||
|
||
public sealed class CompetencyOverviewViewModelTests
|
||
{
|
||
[Fact]
|
||
public void Initialize_ZeigtAbdeckungGruppenmittelUndVorausgewaehltesSchuelerprofil()
|
||
{
|
||
var subjectId = Guid.NewGuid();
|
||
var group = new LearningGroup { SubjectId = subjectId, GradeLevel = 8 };
|
||
var student = new Student { FirstName = "Ada", LastName = "Lovelace" };
|
||
var k1 = new CompetencyItem { Code = "K1", Description = "Kompetenz" };
|
||
var units = new FakeUnits();
|
||
units.Add(new Unit
|
||
{
|
||
GroupId = group.Id, Status = UnitStatus.Completed,
|
||
Competencies = [new CompetencyReference { ItemId = k1.Id, Code = k1.Code, Description = k1.Description }],
|
||
});
|
||
var exam = new Exam
|
||
{
|
||
GroupId = group.Id,
|
||
Status = ExamStatus.Graded,
|
||
Tasks = [new ExamTask { MaxPoints = 10, Competencies = [new CompetencyReference { ItemId = k1.Id, Code = k1.Code, Description = k1.Description }] }],
|
||
};
|
||
var results = new FakeResults();
|
||
results.Add(new ExamResult { ExamId = exam.Id, StudentId = student.Id, Points = [5] });
|
||
var versions = new FakeCompetencyCatalogVersions();
|
||
var version = versions.GetOrCreateDefault(subjectId);
|
||
var catalog = new FakeCompetencyDomains();
|
||
catalog.Add(new CompetencyDomain
|
||
{
|
||
SubjectId = subjectId,
|
||
GradeLevel = 8,
|
||
VersionId = version.Id,
|
||
Name = "Bereich",
|
||
Items = [k1],
|
||
});
|
||
var vm = new CompetencyOverviewTabViewModel(units, new FakeExams([exam]), results,
|
||
catalog, versions, new FakeStudents([student]), new FakeSessions([]), new FakeEntries(),
|
||
new FakeAspects(), new CompetencyAnalysisService());
|
||
|
||
vm.Initialize(group);
|
||
|
||
var row = Assert.Single(vm.Rows);
|
||
Assert.Equal("1× behandelt", row.InstructionCoverage);
|
||
Assert.Equal("1× geprüft", row.ExamCoverage);
|
||
Assert.Contains("50 %", row.GroupResult);
|
||
Assert.Contains("50 %", row.StudentResult);
|
||
Assert.Equal("Wiederholungsbedarf", row.Recommendation);
|
||
Assert.Equal(student.Id, vm.SelectedStudent?.Id);
|
||
}
|
||
|
||
[Fact]
|
||
public void ReviewThreshold_Aendern_AktualisiertHinweis()
|
||
{
|
||
var item = new CompetencyAnalysisItem
|
||
{
|
||
DomainName = "Bereich",
|
||
DomainCode = "B",
|
||
Code = "K1",
|
||
Description = "Kompetenz",
|
||
GroupScore = new CompetencyScore(5, 10, 1, 1),
|
||
};
|
||
var row = new CompetencyOverviewRow(item, null, 60);
|
||
|
||
row.SetThreshold(40);
|
||
|
||
Assert.Equal("Stand solide", row.Recommendation);
|
||
}
|
||
|
||
[Fact]
|
||
public void Initialize_AutomatischeMitarbeitsschaetzung_FuelltKompetenzprofil()
|
||
{
|
||
var subjectId = Guid.NewGuid();
|
||
var group = new LearningGroup { SubjectId = subjectId, GradeLevel = 8 };
|
||
var student = new Student { FirstName = "Ada", LastName = "Lovelace" };
|
||
var competency = new CompetencyItem { Code = "K1", Description = "Kompetenz" };
|
||
var versions = new FakeCompetencyCatalogVersions();
|
||
var version = versions.GetOrCreateDefault(subjectId);
|
||
var catalog = new FakeCompetencyDomains();
|
||
catalog.Add(new CompetencyDomain
|
||
{
|
||
SubjectId = subjectId,
|
||
GradeLevel = 8,
|
||
VersionId = version.Id,
|
||
Name = "Bereich",
|
||
Items = [competency],
|
||
});
|
||
var session = new ParticipationSession
|
||
{
|
||
GroupId = group.Id,
|
||
Competencies = [new CompetencyReference
|
||
{
|
||
ItemId = competency.Id,
|
||
Code = competency.Code,
|
||
Description = competency.Description,
|
||
}],
|
||
};
|
||
var entries = new FakeEntries();
|
||
entries.Add(new ParticipationEntry
|
||
{
|
||
SessionId = session.Id,
|
||
StudentId = student.Id,
|
||
Ratings = [new AspectRating { Key = "quality", Value = 1 }],
|
||
});
|
||
|
||
var vm = new CompetencyOverviewTabViewModel(new FakeUnits(), new FakeExams([]),
|
||
new FakeResults(), catalog, versions, new FakeStudents([student]),
|
||
new FakeSessions([session]), entries, new FakeAspects(), new CompetencyAnalysisService());
|
||
|
||
vm.Initialize(group);
|
||
|
||
var row = Assert.Single(vm.Rows);
|
||
Assert.Equal("1× bewertet", row.ParticipationCoverage);
|
||
Assert.Contains("75 %", row.GroupResult);
|
||
Assert.Contains("1 Mitarbeitswert", row.StudentResult);
|
||
}
|
||
}
|