32 lines
1.2 KiB
C#
32 lines
1.2 KiB
C#
using GmRelay.Bot.Features.Sessions.CreateSession;
|
|
using GmRelay.Shared.Domain;
|
|
|
|
namespace GmRelay.Bot.Tests.Features.Sessions.CreateSession;
|
|
|
|
public sealed class SessionCapacityRulesTests
|
|
{
|
|
[Fact]
|
|
public void DecideJoinStatus_ShouldReturnActive_WhenSessionHasFreeSeats()
|
|
{
|
|
var status = SessionCapacityRules.DecideJoinStatus(maxPlayers: 3, activeParticipants: 2);
|
|
|
|
Assert.Equal(ParticipantRegistrationStatus.Active, status);
|
|
}
|
|
|
|
[Fact]
|
|
public void DecideJoinStatus_ShouldReturnWaitlisted_WhenSessionReachedLimit()
|
|
{
|
|
var status = SessionCapacityRules.DecideJoinStatus(maxPlayers: 2, activeParticipants: 2);
|
|
|
|
Assert.Equal(ParticipantRegistrationStatus.Waitlisted, status);
|
|
}
|
|
|
|
[Fact]
|
|
public void CanPromoteWaitlistedPlayer_ShouldRequireWaitlistAndFreeSeat()
|
|
{
|
|
Assert.True(SessionCapacityRules.CanPromoteWaitlistedPlayer(maxPlayers: 3, activeParticipants: 2, waitlistedParticipants: 1));
|
|
Assert.False(SessionCapacityRules.CanPromoteWaitlistedPlayer(maxPlayers: 3, activeParticipants: 3, waitlistedParticipants: 1));
|
|
Assert.False(SessionCapacityRules.CanPromoteWaitlistedPlayer(maxPlayers: 3, activeParticipants: 2, waitlistedParticipants: 0));
|
|
}
|
|
}
|