Neue Funktion Schüler austragen statt aus Kurs löschen.
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
using LehrerApp.Core.Models;
|
||||
using LehrerApp.Core.Services;
|
||||
using Xunit;
|
||||
|
||||
namespace LehrerApp.Tests;
|
||||
|
||||
public class GroupMembershipServiceTests
|
||||
{
|
||||
[Fact]
|
||||
public void IsActiveOn_BeruecksichtigtEinUndAustrittAuchBeiGanzemJahr()
|
||||
{
|
||||
var membership = new GroupMembership
|
||||
{
|
||||
Period = MembershipPeriod.FullYear,
|
||||
JoinedAt = new DateOnly(2025, 9, 1),
|
||||
LeftAt = new DateOnly(2025, 10, 15),
|
||||
};
|
||||
|
||||
Assert.False(GroupMembershipService.IsActiveOn(membership, new DateOnly(2025, 8, 31)));
|
||||
Assert.True(GroupMembershipService.IsActiveOn(membership, new DateOnly(2025, 9, 1)));
|
||||
Assert.True(GroupMembershipService.IsActiveOn(membership, new DateOnly(2025, 10, 15)));
|
||||
Assert.False(GroupMembershipService.IsActiveOn(membership, new DateOnly(2025, 10, 16)));
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(2025, 12, 1, true)]
|
||||
[InlineData(2026, 1, 31, true)]
|
||||
[InlineData(2026, 2, 1, false)]
|
||||
public void IsActiveOn_BeruecksichtigtHalbjahresmodus(int year, int month, int day, bool expected)
|
||||
{
|
||||
var membership = new GroupMembership { Period = MembershipPeriod.H1Only };
|
||||
|
||||
Assert.Equal(expected,
|
||||
GroupMembershipService.IsActiveOn(membership, new DateOnly(year, month, day)));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Overlaps_FindetTeilweiseZugehoerigkeitImHalbjahr()
|
||||
{
|
||||
var membership = new GroupMembership
|
||||
{
|
||||
Period = MembershipPeriod.Custom,
|
||||
JoinedAt = new DateOnly(2025, 12, 15),
|
||||
LeftAt = new DateOnly(2026, 3, 10),
|
||||
};
|
||||
var h1 = GroupMembershipService.SchoolYearPeriod("2025/26", SchoolYearPeriodKind.H1);
|
||||
var h2 = GroupMembershipService.SchoolYearPeriod("2025/26", SchoolYearPeriodKind.H2);
|
||||
|
||||
Assert.True(GroupMembershipService.Overlaps(membership, h1.From, h1.To));
|
||||
Assert.True(GroupMembershipService.Overlaps(membership, h2.From, h2.To));
|
||||
Assert.False(GroupMembershipService.Overlaps(membership,
|
||||
new DateOnly(2026, 4, 1), new DateOnly(2026, 7, 31)));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user