diff --git a/tests/GmRelay.Bot.Tests/Rendering/SessionBatchViewBuilderTests.cs b/tests/GmRelay.Bot.Tests/Rendering/SessionBatchViewBuilderTests.cs index 17c67a6..c778d02 100644 --- a/tests/GmRelay.Bot.Tests/Rendering/SessionBatchViewBuilderTests.cs +++ b/tests/GmRelay.Bot.Tests/Rendering/SessionBatchViewBuilderTests.cs @@ -114,7 +114,7 @@ public sealed class SessionBatchViewBuilderTests [Fact] public void Build_ShouldHandleEmptySessions() { - var result = SessionBatchViewBuilder.Build("Empty", [], []); + var result = SessionBatchViewBuilder.Build("Empty", Array.Empty(), Array.Empty()); Assert.Equal("Empty", result.Title); Assert.Empty(result.Sessions); } @@ -130,6 +130,10 @@ public sealed class SessionBatchViewBuilderTests Assert.Equal(SessionStatus.Confirmed, result.Sessions[0].Status); Assert.Equal(2, result.Sessions[0].AvailableActions.Count); + Assert.Equal("join_session", result.Sessions[0].AvailableActions[0].ActionKey); + Assert.Equal("leave_session", result.Sessions[0].AvailableActions[1].ActionKey); + Assert.Equal(sessionId, result.Sessions[0].AvailableActions[0].SessionId); + Assert.Equal(sessionId, result.Sessions[0].AvailableActions[1].SessionId); } [Fact] @@ -142,6 +146,7 @@ public sealed class SessionBatchViewBuilderTests var result = SessionBatchViewBuilder.Build("Test", sessions, participants); Assert.Null(result.Sessions[0].MaxPlayers); - Assert.Equal(0, result.Sessions[0].ActivePlayerCount); + var joinAction = result.Sessions[0].AvailableActions.First(a => a.ActionKey == "join_session"); + Assert.DoesNotContain("ожидания", joinAction.Label); } } diff --git a/tests/GmRelay.Bot.Tests/Rendering/TelegramSessionBatchRendererTests.cs b/tests/GmRelay.Bot.Tests/Rendering/TelegramSessionBatchRendererTests.cs index 8938d10..904fec9 100644 --- a/tests/GmRelay.Bot.Tests/Rendering/TelegramSessionBatchRendererTests.cs +++ b/tests/GmRelay.Bot.Tests/Rendering/TelegramSessionBatchRendererTests.cs @@ -77,4 +77,75 @@ public sealed class TelegramSessionBatchRendererTests Assert.Contains("ожидания", joinButton.Text); } + + [Fact] + public void Render_ShouldHandleEmptySessions() + { + var view = SessionBatchViewBuilder.Build("Empty", Array.Empty(), Array.Empty()); + var (text, markup) = TelegramSessionBatchRenderer.Render(view); + + Assert.Contains("Empty", text); + Assert.DoesNotContain("📅", text); + Assert.Empty(markup.InlineKeyboard); + } + + [Fact] + public void Render_ShouldEncodeHtmlInTitle() + { + var sessionId = Guid.NewGuid(); + var sessions = new[] { new SessionBatchDto(sessionId, DateTime.UtcNow, SessionStatus.Planned, 4, "") }; + var participants = Array.Empty(); + + var view = SessionBatchViewBuilder.Build("", sessions, participants); + var (text, _) = TelegramSessionBatchRenderer.Render(view); + + Assert.Contains("<script>alert(1)</script>", text); + Assert.DoesNotContain("