Files
GmRelayBot/tests/GmRelay.Bot.Tests/Web/ShowcaseQueryTests.cs
T
2026-05-28 16:33:29 +03:00

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