Files
LehrerApp/LehrerApp.Desktop.Tests/CompetencyOverviewViewModelTests.cs
T
2026-08-16 02:32:12 +02:00

69 lines
2.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 units = new FakeUnits();
units.Add(new Unit
{
GroupId = group.Id, Status = UnitStatus.Completed, Competencies = ["K1"],
});
var exam = new Exam
{
GroupId = group.Id,
Status = ExamStatus.Graded,
Tasks = [new ExamTask { MaxPoints = 10, CompetencyCodes = ["K1"] }],
};
var results = new FakeResults();
results.Add(new ExamResult { ExamId = exam.Id, StudentId = student.Id, Points = [5] });
var catalog = new FakeCompetencyDomains();
catalog.Add(new CompetencyDomain
{
SubjectId = subjectId,
GradeLevel = 8,
Name = "Bereich",
Items = [new CompetencyItem { Code = "K1", Description = "Kompetenz" }],
});
var vm = new CompetencyOverviewTabViewModel(units, new FakeExams([exam]), results,
catalog, new FakeStudents([student]), 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);
}
}