using GmRelay.DiscordBot.Infrastructure.Discord; namespace GmRelay.Bot.Tests.Discord; public sealed class DiscordPermissionCheckerTests { [Fact] public void CanManageSchedule_WhenUserIsGuildOwner_ReturnsTrue() { var checker = new DiscordPermissionChecker(); var result = checker.CanManageSchedule( guildOwnerId: 123456789ul, userId: 123456789ul, userRoles: Array.Empty(), dbManagerUserIds: Array.Empty()); Assert.True(result); } [Fact] public void CanManageSchedule_WhenUserHasAdministratorPermission_ReturnsTrue() { var checker = new DiscordPermissionChecker(); var result = checker.CanManageSchedule( guildOwnerId: 123456789ul, userId: 987654321ul, dbManagerUserIds: Array.Empty(), resolvedPermissions: 0x8); // Administrator Assert.True(result); } [Fact] public void CanManageSchedule_WhenUserIsDbManager_ReturnsTrue() { var checker = new DiscordPermissionChecker(); var managerId = 555ul; var result = checker.CanManageSchedule( guildOwnerId: 123456789ul, userId: managerId, userRoles: Array.Empty(), dbManagerUserIds: new[] { managerId }); Assert.True(result); } [Fact] public void CanManageSchedule_WhenRegularUser_ReturnsFalse() { var checker = new DiscordPermissionChecker(); var result = checker.CanManageSchedule( guildOwnerId: 123456789ul, userId: 111ul, userRoles: Array.Empty(), dbManagerUserIds: new[] { 222ul }); Assert.False(result); } }