8bcd16fbc9
PR Checks / test-and-build (pull_request) Successful in 12m35s
Introduce platform-neutral PlatformKind, PlatformUser, PlatformGroup, and IPlatformMessenger contracts in GmRelay.Shared. Route Telegram session schedule updates, direct notifications, interaction replies, and calendar export through TelegramPlatformMessenger while preserving existing Telegram behavior. Bump version -> 2.0.1
55 lines
1.9 KiB
C#
55 lines
1.9 KiB
C#
using GmRelay.Shared.Platform;
|
|
using GmRelay.Shared.Rendering;
|
|
|
|
namespace GmRelay.Bot.Tests.Platform;
|
|
|
|
public sealed class PlatformContractsTests
|
|
{
|
|
[Fact]
|
|
public void PlatformKind_ShouldDefineTelegramDiscordAndMaxSentinel()
|
|
{
|
|
Assert.Equal(0, (int)PlatformKind.Telegram);
|
|
Assert.Equal(1, (int)PlatformKind.Discord);
|
|
Assert.Equal(2, (int)PlatformKind.Max);
|
|
}
|
|
|
|
[Fact]
|
|
public void PlatformContracts_ShouldBeTelegramAssemblyFree()
|
|
{
|
|
var contractTypes = new[]
|
|
{
|
|
typeof(PlatformUser),
|
|
typeof(PlatformGroup),
|
|
typeof(PlatformMessageRef),
|
|
typeof(PlatformMessageAction),
|
|
typeof(PlatformScheduleMessage),
|
|
typeof(PlatformPrivateMessage),
|
|
typeof(PlatformInteractionReply),
|
|
typeof(PlatformCalendarFile),
|
|
typeof(IPlatformMessenger)
|
|
};
|
|
|
|
Assert.All(contractTypes, type =>
|
|
Assert.DoesNotContain(
|
|
"Telegram",
|
|
string.Join(" ", type.Assembly.GetReferencedAssemblies().Select(value => value.Name)),
|
|
StringComparison.OrdinalIgnoreCase));
|
|
}
|
|
|
|
[Fact]
|
|
public void PlatformScheduleMessage_ShouldCarrySharedViewModelWithoutPlatformTypes()
|
|
{
|
|
var sessionId = Guid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa");
|
|
var view = SessionBatchViewBuilder.Build(
|
|
"Campaign",
|
|
[new SessionBatchDto(sessionId, new DateTime(2026, 5, 15, 16, 0, 0, DateTimeKind.Utc), "Planned", 4, "https://example.test/game")],
|
|
[]);
|
|
var group = new PlatformGroup(PlatformKind.Discord, "guild-1", "Guild", "channel-1", "thread-1");
|
|
|
|
var message = new PlatformScheduleMessage(group, view, ExistingMessage: null);
|
|
|
|
Assert.Equal(PlatformKind.Discord, message.Group.Platform);
|
|
Assert.Same(view, message.View);
|
|
}
|
|
}
|