b496a401fc
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
56 lines
1.8 KiB
C#
56 lines
1.8 KiB
C#
using GmRelay.Bot.Features.Sessions.CreateSession;
|
|
using GmRelay.Shared.Domain;
|
|
|
|
namespace GmRelay.Bot.Tests.Web;
|
|
|
|
public sealed class ShowcaseQueryTests
|
|
{
|
|
[Fact]
|
|
public void RegisterFromShowcase_WhenUnlimitedSeats_ShouldReturnActive()
|
|
{
|
|
var status = SessionCapacityRules.DecideJoinStatus(maxPlayers: null, activeParticipants: 5);
|
|
|
|
Assert.Equal(ParticipantRegistrationStatus.Active, status);
|
|
}
|
|
|
|
[Fact]
|
|
public void RegisterFromShowcase_WhenOneFreeSeat_ShouldReturnActive()
|
|
{
|
|
var status = SessionCapacityRules.DecideJoinStatus(maxPlayers: 4, activeParticipants: 3);
|
|
|
|
Assert.Equal(ParticipantRegistrationStatus.Active, status);
|
|
}
|
|
|
|
[Fact]
|
|
public void RegisterFromShowcase_WhenExactlyAtCapacity_ShouldReturnWaitlisted()
|
|
{
|
|
var status = SessionCapacityRules.DecideJoinStatus(maxPlayers: 4, activeParticipants: 4);
|
|
|
|
Assert.Equal(ParticipantRegistrationStatus.Waitlisted, status);
|
|
}
|
|
|
|
[Fact]
|
|
public void RegisterFromShowcase_WhenOverCapacity_ShouldReturnWaitlisted()
|
|
{
|
|
var status = SessionCapacityRules.DecideJoinStatus(maxPlayers: 3, activeParticipants: 5);
|
|
|
|
Assert.Equal(ParticipantRegistrationStatus.Waitlisted, status);
|
|
}
|
|
|
|
[Fact]
|
|
public void RegisterFromShowcase_WhenZeroActiveAndZeroMax_ShouldReturnWaitlisted()
|
|
{
|
|
var status = SessionCapacityRules.DecideJoinStatus(maxPlayers: 0, activeParticipants: 0);
|
|
|
|
Assert.Equal(ParticipantRegistrationStatus.Waitlisted, status);
|
|
}
|
|
|
|
[Fact]
|
|
public void RegisterFromShowcase_WhenZeroActiveAndPositiveMax_ShouldReturnActive()
|
|
{
|
|
var status = SessionCapacityRules.DecideJoinStatus(maxPlayers: 1, activeParticipants: 0);
|
|
|
|
Assert.Equal(ParticipantRegistrationStatus.Active, status);
|
|
}
|
|
}
|