Files
GmRelayBot/tests/GmRelay.Bot.Tests/Features/Sessions/ListSessions/SessionListMessageRendererTests.cs
T
Toutsu aefed5abd4
Deploy Telegram Bot / build-and-push (push) Successful in 4m28s
Deploy Telegram Bot / deploy (push) Successful in 11s
feat: improve telegram session posts
2026-05-04 09:52:07 +03:00

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);
}
}