From 5b6971fda5f7393bc3b4077e0eac7132f3f92bf3 Mon Sep 17 00:00:00 2001 From: Toutsu Date: Thu, 28 May 2026 16:40:11 +0300 Subject: [PATCH] test: consolidate capacity tests, add GameSystem edge cases, remove ShowcaseQueryTests --- .../Domain/GameSystemTests.cs | 4 ++ .../SessionCapacityRulesTests.cs | 24 ++++++++ .../Web/ShowcaseQueryTests.cs | 55 ------------------- 3 files changed, 28 insertions(+), 55 deletions(-) delete mode 100644 tests/GmRelay.Bot.Tests/Web/ShowcaseQueryTests.cs diff --git a/tests/GmRelay.Bot.Tests/Domain/GameSystemTests.cs b/tests/GmRelay.Bot.Tests/Domain/GameSystemTests.cs index 3834ec0..868d734 100644 --- a/tests/GmRelay.Bot.Tests/Domain/GameSystemTests.cs +++ b/tests/GmRelay.Bot.Tests/Domain/GameSystemTests.cs @@ -8,9 +8,12 @@ public sealed class GameSystemTests [InlineData("Dnd5e", GameSystem.Dnd5e)] [InlineData("D&D", GameSystem.Dnd5e)] [InlineData("dnd5e", GameSystem.Dnd5e)] + [InlineData(" dnd5e ", GameSystem.Dnd5e)] + [InlineData("D&D 5e", GameSystem.Dnd5e)] [InlineData("pathfinder", GameSystem.Pathfinder2e)] [InlineData("call of cthulhu", GameSystem.CallOfCthulhu7e)] [InlineData("shadow", GameSystem.Shadowdark)] + [InlineData("dark", GameSystem.Shadowdark)] [InlineData("unknown xyz", GameSystem.Other)] public void TryParseFuzzy_ShouldMapInputToExpectedSystem(string input, GameSystem expected) { @@ -52,6 +55,7 @@ public sealed class GameSystemTests [InlineData(GameSystem.Other, "Другое")] [InlineData(GameSystem.Pathfinder2e, "Pathfinder 2e")] [InlineData(GameSystem.Shadowdark, "Shadowdark")] + [InlineData((GameSystem)999, "Другое")] public void ToDisplayName_ShouldReturnExpectedName(GameSystem system, string expected) { var result = system.ToDisplayName(); diff --git a/tests/GmRelay.Bot.Tests/Features/Sessions/CreateSession/SessionCapacityRulesTests.cs b/tests/GmRelay.Bot.Tests/Features/Sessions/CreateSession/SessionCapacityRulesTests.cs index f3fd8f9..5dfbf5e 100644 --- a/tests/GmRelay.Bot.Tests/Features/Sessions/CreateSession/SessionCapacityRulesTests.cs +++ b/tests/GmRelay.Bot.Tests/Features/Sessions/CreateSession/SessionCapacityRulesTests.cs @@ -21,6 +21,30 @@ public sealed class SessionCapacityRulesTests Assert.Equal(ParticipantRegistrationStatus.Waitlisted, status); } + [Fact] + public void DecideJoinStatus_ShouldReturnActive_WhenUnlimitedSeats() + { + var status = SessionCapacityRules.DecideJoinStatus(maxPlayers: null, activeParticipants: 5); + + Assert.Equal(ParticipantRegistrationStatus.Active, status); + } + + [Fact] + public void DecideJoinStatus_ShouldReturnWaitlisted_WhenOverCapacity() + { + var status = SessionCapacityRules.DecideJoinStatus(maxPlayers: 3, activeParticipants: 5); + + Assert.Equal(ParticipantRegistrationStatus.Waitlisted, status); + } + + [Fact] + public void DecideJoinStatus_ShouldReturnActive_WhenZeroActiveAndPositiveMax() + { + var status = SessionCapacityRules.DecideJoinStatus(maxPlayers: 1, activeParticipants: 0); + + Assert.Equal(ParticipantRegistrationStatus.Active, status); + } + [Fact] public void CanPromoteWaitlistedPlayer_ShouldRequireWaitlistAndFreeSeat() { diff --git a/tests/GmRelay.Bot.Tests/Web/ShowcaseQueryTests.cs b/tests/GmRelay.Bot.Tests/Web/ShowcaseQueryTests.cs deleted file mode 100644 index 5914bb7..0000000 --- a/tests/GmRelay.Bot.Tests/Web/ShowcaseQueryTests.cs +++ /dev/null @@ -1,55 +0,0 @@ -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); - } -}