Files
LehrerApp/LehrerApp.Tests/GroupMembershipServiceTests.cs
T

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)));
}
}