59 lines
1.8 KiB
C#
59 lines
1.8 KiB
C#
using GmRelay.Bot.Features.Sessions.ListSessions;
|
|
using GmRelay.Shared.Domain;
|
|
|
|
namespace GmRelay.Bot.Tests.Features.Sessions.ListSessions;
|
|
|
|
public sealed class SessionListMessageRendererTests
|
|
{
|
|
[Fact]
|
|
public void Render_ShouldIncludeManagerActions_WhenUserCanManage()
|
|
{
|
|
var sessionId = Guid.NewGuid();
|
|
var sessions = new[]
|
|
{
|
|
new SessionListItemDto(
|
|
sessionId,
|
|
"Ravenloft",
|
|
new DateTime(2026, 5, 7, 16, 30, 0, DateTimeKind.Utc),
|
|
SessionStatus.Planned,
|
|
4,
|
|
3,
|
|
1,
|
|
true)
|
|
};
|
|
|
|
var result = SessionListMessageRenderer.Render(sessions);
|
|
Assert.NotNull(result.Markup);
|
|
var buttons = result.Markup.InlineKeyboard.SelectMany(row => row).ToList();
|
|
|
|
Assert.Contains("Ravenloft", result.Text);
|
|
Assert.Collection(
|
|
buttons.Select(button => button.CallbackData),
|
|
callbackData => Assert.Equal($"cancel_session:{sessionId}", callbackData),
|
|
callbackData => Assert.Equal($"reschedule_session:{sessionId}", callbackData),
|
|
callbackData => Assert.Equal($"promote_waitlist:{sessionId}", callbackData),
|
|
callbackData => Assert.Equal($"delete_session:{sessionId}", callbackData));
|
|
}
|
|
|
|
[Fact]
|
|
public void Render_ShouldHideManagerActions_WhenUserCannotManage()
|
|
{
|
|
var sessions = new[]
|
|
{
|
|
new SessionListItemDto(
|
|
Guid.NewGuid(),
|
|
"Ravenloft",
|
|
new DateTime(2026, 5, 7, 16, 30, 0, DateTimeKind.Utc),
|
|
SessionStatus.Planned,
|
|
4,
|
|
3,
|
|
1,
|
|
false)
|
|
};
|
|
|
|
var result = SessionListMessageRenderer.Render(sessions);
|
|
|
|
Assert.Null(result.Markup);
|
|
}
|
|
}
|