From b4a39c027f8b874281a35bc3ad778b3b4ea562df Mon Sep 17 00:00:00 2001 From: Toutsu Date: Thu, 21 May 2026 15:11:01 +0300 Subject: [PATCH] test: extend SessionBatchViewBuilderTests with edge cases - Empty sessions - Confirmed status - Null MaxPlayers Issue: #33 --- .../Rendering/SessionBatchViewBuilderTests.cs | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/GmRelay.Bot.Tests/Rendering/SessionBatchViewBuilderTests.cs b/tests/GmRelay.Bot.Tests/Rendering/SessionBatchViewBuilderTests.cs index 3c9eba4..17c67a6 100644 --- a/tests/GmRelay.Bot.Tests/Rendering/SessionBatchViewBuilderTests.cs +++ b/tests/GmRelay.Bot.Tests/Rendering/SessionBatchViewBuilderTests.cs @@ -110,4 +110,38 @@ public sealed class SessionBatchViewBuilderTests Assert.Equal("Alice", player.DisplayName); Assert.Equal("alice", player.TelegramUsername); } + + [Fact] + public void Build_ShouldHandleEmptySessions() + { + var result = SessionBatchViewBuilder.Build("Empty", [], []); + Assert.Equal("Empty", result.Title); + Assert.Empty(result.Sessions); + } + + [Fact] + public void Build_ShouldHandleConfirmedStatus() + { + var sessionId = Guid.NewGuid(); + var sessions = new[] { new SessionBatchDto(sessionId, DateTime.UtcNow, SessionStatus.Confirmed, 4, "https://example.com/game") }; + var participants = Array.Empty(); + + var result = SessionBatchViewBuilder.Build("Test", sessions, participants); + + Assert.Equal(SessionStatus.Confirmed, result.Sessions[0].Status); + Assert.Equal(2, result.Sessions[0].AvailableActions.Count); + } + + [Fact] + public void Build_ShouldHandleNullMaxPlayers() + { + var sessionId = Guid.NewGuid(); + var sessions = new[] { new SessionBatchDto(sessionId, DateTime.UtcNow, SessionStatus.Planned, null, "https://example.com/game") }; + var participants = Array.Empty(); + + var result = SessionBatchViewBuilder.Build("Test", sessions, participants); + + Assert.Null(result.Sessions[0].MaxPlayers); + Assert.Equal(0, result.Sessions[0].ActivePlayerCount); + } }