55 lines
2.0 KiB
C#
55 lines
2.0 KiB
C#
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)));
|
|
}
|
|
}
|