test: extend DiscordSessionBatchRendererTests with regression cases

- Confirmed status blue color
- Empty player description
- Embed URL from join link
- Inline field values for capacity/waitlist/status

Issue: #33
This commit is contained in:
2026-05-21 15:21:02 +03:00
parent 47b22c7401
commit d29c6c0725
@@ -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<ParticipantBatchDto>();
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<ParticipantBatchDto>();
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<ParticipantBatchDto>();
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);
}
}