diff --git a/tests/GmRelay.Bot.Tests/Rendering/DiscordSessionBatchRendererTests.cs b/tests/GmRelay.Bot.Tests/Rendering/DiscordSessionBatchRendererTests.cs index b8be82e..86328a5 100644 --- a/tests/GmRelay.Bot.Tests/Rendering/DiscordSessionBatchRendererTests.cs +++ b/tests/GmRelay.Bot.Tests/Rendering/DiscordSessionBatchRendererTests.cs @@ -136,4 +136,68 @@ public sealed class DiscordSessionBatchRendererTests Assert.Single(embeds); Assert.Single(actionRows); // not cancelled → actions present } + + [Fact] + public void Render_ShouldUseBlueColorForConfirmedSessions() + { + var sessionId = Guid.NewGuid(); + var sessions = new[] { new SessionBatchDto(sessionId, DateTime.UtcNow, SessionStatus.Confirmed, 4, "https://example.com/game") }; + var participants = Array.Empty(); + + var view = SessionBatchViewBuilder.Build("Test", sessions, participants); + var (embeds, _) = DiscordSessionBatchRenderer.Render(view); + + Assert.Equal(0x5865F2, embeds[0].Color.RawValue); + } + + [Fact] + public void Render_ShouldShowEmptyPlayerDescription() + { + var sessionId = Guid.NewGuid(); + var sessions = new[] { new SessionBatchDto(sessionId, DateTime.UtcNow, SessionStatus.Planned, 4, "https://example.com/game") }; + var participants = Array.Empty(); + + var view = SessionBatchViewBuilder.Build("Test", sessions, participants); + var (embeds, _) = DiscordSessionBatchRenderer.Render(view); + + Assert.Contains("Пока никто не записался", embeds[0].Description); + } + + [Fact] + public void Render_ShouldSetEmbedUrlWhenJoinLinkPresent() + { + var sessionId = Guid.NewGuid(); + var sessions = new[] { new SessionBatchDto(sessionId, DateTime.UtcNow, SessionStatus.Planned, 4, "https://example.com/game") }; + var participants = Array.Empty(); + + var view = SessionBatchViewBuilder.Build("Test", sessions, participants); + var (embeds, _) = DiscordSessionBatchRenderer.Render(view); + + Assert.Equal("https://example.com/game", embeds[0].Url); + } + + [Fact] + public void Render_ShouldEmbedCorrectFieldValues() + { + var sessionId = Guid.NewGuid(); + var sessions = new[] { new SessionBatchDto(sessionId, DateTime.UtcNow, SessionStatus.Planned, 4, "https://example.com/game") }; + var participants = new[] + { + new ParticipantBatchDto(sessionId, "Alice", "alice", ParticipantRegistrationStatus.Active), + new ParticipantBatchDto(sessionId, "Bob", null, ParticipantRegistrationStatus.Waitlisted) + }; + + var view = SessionBatchViewBuilder.Build("Test", sessions, participants); + var (embeds, _) = DiscordSessionBatchRenderer.Render(view); + var embed = embeds[0]; + var fields = embed.Fields!.ToList(); + + Assert.Equal(3, fields.Count); + Assert.Equal("👥 Заполненность", fields[0].Name); + Assert.Equal("1/4", fields[0].Value); + Assert.Equal("⏳ Лист ожидания", fields[1].Name); + Assert.Equal("1", fields[1].Value); + Assert.Equal("📊 Статус", fields[2].Name); + Assert.Equal("Запланирована", fields[2].Value); + } }