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:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user