Kapitel 7 abgeschlossen.
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
using LehrerApp.Core.Models;
|
||||
using LehrerApp.Core.Services;
|
||||
using LehrerApp.Desktop.ViewModels.Groups;
|
||||
using Xunit;
|
||||
|
||||
namespace LehrerApp.Desktop.Tests;
|
||||
|
||||
public sealed class GroupRolloverDialogViewModelTests
|
||||
{
|
||||
[Fact]
|
||||
public void Vorauswahl_NimmtNurAktiveSchuelerAmSchuljahresende()
|
||||
{
|
||||
var group = new LearningGroup { Name = "8a", SchoolYear = "2025/26", GradeLevel = 8 };
|
||||
var fullYearStudent = Student("Ganzjahr");
|
||||
var h1Student = Student("Halbjahr");
|
||||
var withdrawnStudent = Student("Ausgetreten");
|
||||
var inactiveStudent = Student("Inaktiv", active: false);
|
||||
var membershipList = new List<GroupMembership>
|
||||
{
|
||||
Membership(group, fullYearStudent, MembershipPeriod.FullYear),
|
||||
Membership(group, h1Student, MembershipPeriod.H1Only),
|
||||
Membership(group, withdrawnStudent, MembershipPeriod.FullYear, new DateOnly(2026, 5, 1)),
|
||||
Membership(group, inactiveStudent, MembershipPeriod.FullYear),
|
||||
};
|
||||
var groups = new FakeGroups([group]);
|
||||
var memberships = new FakeMemberships(membershipList);
|
||||
var schemes = new FakeSchemes();
|
||||
var schoolYears = new SchoolYearService();
|
||||
var vm = new GroupRolloverDialogViewModel(group,
|
||||
new FakeStudents([fullYearStudent, h1Student, withdrawnStudent, inactiveStudent]),
|
||||
memberships, schemes, schoolYears,
|
||||
new GroupRolloverService(groups, memberships, schemes, schoolYears));
|
||||
|
||||
Assert.True(vm.Students.Single(s => s.FullName.Contains("Ganzjahr")).IsSelected);
|
||||
Assert.False(vm.Students.Single(s => s.FullName.Contains("Halbjahr")).IsSelected);
|
||||
Assert.False(vm.Students.Single(s => s.FullName.Contains("Ausgetreten")).IsSelected);
|
||||
var inactive = vm.Students.Single(s => s.FullName.Contains("Inaktiv"));
|
||||
Assert.False(inactive.IsSelected);
|
||||
Assert.False(inactive.CanSelect);
|
||||
Assert.Equal(1, vm.SelectedCount);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Dialog_SchlaegtNaechstesSchuljahrUndNaechsteStufeVor()
|
||||
{
|
||||
var group = new LearningGroup { Name = "8a", SchoolYear = "2025/26", GradeLevel = 8 };
|
||||
var student = Student("Ganzjahr");
|
||||
var membershipList = new List<GroupMembership> { Membership(group, student, MembershipPeriod.FullYear) };
|
||||
var groups = new FakeGroups([group]);
|
||||
var memberships = new FakeMemberships(membershipList);
|
||||
var schemes = new FakeSchemes();
|
||||
var schoolYears = new SchoolYearService();
|
||||
|
||||
var vm = new GroupRolloverDialogViewModel(group, new FakeStudents([student]), memberships,
|
||||
schemes, schoolYears, new GroupRolloverService(groups, memberships, schemes, schoolYears));
|
||||
|
||||
Assert.Equal("2026/27", vm.TargetSchoolYear);
|
||||
Assert.Equal(9, vm.GradeLevel);
|
||||
Assert.True(vm.ArchiveSource);
|
||||
}
|
||||
|
||||
private static Student Student(string lastName, bool active = true) =>
|
||||
new() { FirstName = "Test", LastName = lastName, IsActive = active };
|
||||
|
||||
private static GroupMembership Membership(LearningGroup group, Student student,
|
||||
MembershipPeriod period, DateOnly? leftAt = null) => new()
|
||||
{
|
||||
GroupId = group.Id,
|
||||
StudentId = student.Id,
|
||||
Period = period,
|
||||
JoinedAt = new DateOnly(2025, 8, 1),
|
||||
LeftAt = leftAt,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user