Exemple #1
0
        public async Task ShouldGrantResultingRoleToMember_WhenMemberHasRequiredLevel()
        {
            ulong guildId         = 16;
            ulong resultingRoleId = 553;
            ulong memberId        = 69;
            var   level           = 5;

            _dbContext.ConfigureMockDbSet(x => x.LevelRoles, new LevelRole
            {
                Id      = 0,
                Remain  = false,
                Lvl     = level,
                RoleId  = resultingRoleId,
                GuildId = guildId
            });

            await _appFixture.SendAsync(new ApplyLevelRolesCommand
            {
                GuildId  = guildId,
                Level    = level,
                MemberId = memberId,
                RoleIds  = Array.Empty <ulong>()
            });

            await _roleService.Received().GrantRoleAsync(guildId, resultingRoleId, memberId, Arg.Any <string>());
        }
Exemple #2
0
        public async Task ShouldReturnMultiplier_IfActiveBoosterExists(
            [Range(0.1f, 10f /*lol*/, 0.1f)] float multiplier)
        {
            ulong guildId = 6;
            var   booster = new ActiveBooster
            {
                Multiplier = multiplier
            };

            var activeBoosters = new Dictionary <ulong, List <ActiveBooster> >
            {
                { guildId, new List <ActiveBooster> {
                      booster
                  } }
            };

            _boosterService.ActiveBoosters.Returns(activeBoosters);

            var command = new GetBoosterMultiplierCommand
            {
                GuildId = guildId
            };

            var result = await _appFixture.SendAsync(command);

            result.Should().Be(multiplier);
        }
        public async Task ShouldGrantResultingRoleToMember_WhenMemberHasRequiredRole()
        {
            ulong guildId         = 16;
            ulong requiredRoleId  = 5;
            ulong resultingRoleId = 553;

            _dbContext.ConfigureMockDbSet(x => x.ConditionalRoles, new ConditionalRole
            {
                Id             = 0,
                Remain         = false,
                GuildId        = guildId,
                RequiredRoleId = requiredRoleId,
                ResultRoleId   = resultingRoleId
            });

            await _appFixture.SendAsync(new ApplyConditionalRolesCommand
            {
                GuildId = guildId,
                Members = new Dictionary <ulong, ulong[]>
                {
                    { 69, new[] { requiredRoleId } }
                }
            });

            await _roleService.Received().GrantRoleAsync(guildId, resultingRoleId, 69, Arg.Any <string>());
        }
Exemple #4
0
        public void ShouldThrowValidationException_WhenCurrentUserIdIsInvalid(ulong id)
        {
            var command = new GetTopUsersByXPQuery
            {
                CurrentUserId = id,
                Count         = 10
            };

            FluentActions.Invoking(() => _fixture.SendAsync(command)).Should().ThrowAsync <ValidationException>();
        }
Exemple #5
0
        public void ShouldThrowValidationException_WhenEmojiIsNull()
        {
            var command = new ApplyReactionRolesCommand
            {
                GuildId   = 151,
                UserId    = 450,
                ChannelId = 4540,
                MessageId = 500,
                Emoji     = null
            };

            FluentActions.Invoking(() => _fixture.SendAsync(command)).Should().ThrowAsync <ValidationException>();
        }
        public async Task ShouldAssignReactionRole_WhenAnExceptionIsThrownForSomeRoles()
        {
            var guildId   = 16;
            var channelId = 15;
            var messageId = 394;
            var emojiId   = 29;

            var badRoleId  = 500;
            var goodRoleId = 6944;

            _dbContext.ConfigureMockDbSet(x => x.ReactionRoles,
                                          new[]
            {
                CreateReactionRole(guildId, channelId, emojiId, messageId, badRoleId),
                CreateReactionRole(guildId, channelId, emojiId, messageId, goodRoleId)
            });

            var command = CreateCommand(guildId, channelId, messageId, emojiId, "TEST");

            _roleService.GrantRoleAsync(command.GuildId, (ulong)badRoleId, command.UserId, "reaction role")
            .Throws <Exception>();

            var result = await _fixture.SendAsync(command);

            result.Should().BeTrue();
            await _roleService.Received(1)
            .GrantRoleAsync(command.GuildId, (ulong)goodRoleId, command.UserId, "reaction role");

            logger.Received().Log(Arg.Is <LogLevel>(x => x == LogLevel.Error), Arg.Any <string>());

            await _roleService.DidNotReceive()
            .RevokeRoleAsync(Arg.Any <ulong>(), Arg.Any <ulong>(), Arg.Any <ulong>(), Arg.Any <string>());
        }
Exemple #7
0
        public async Task ShouldHaveBoardsOnMoves_WhenTheBoardIsFilled()
        {
            var pegBoard = new PegBoard();

            pegBoard.Holes[0].Filled = false;

            var result = await _appFixture.SendAsync(new SolvePegBoardQuery
            {
                PegBoard = pegBoard,
            });

            result.Should().NotBeNull();
            result.Moves.Should().NotBeNullOrEmpty();
            result.Moves.ForEach(x => x.Board.Should().NotBeNull());
        }
        public async Task ShouldBeValidMove_WhenOnePegIsRemoved()
        {
            var pegBoard = new PegBoard();

            pegBoard.Holes[0].Filled = false;

            var result = await _appFixture.SendAsync(new MakeMoveCommand
            {
                PegBoard = pegBoard,
                From     = pegBoard.Holes[3],
                To       = pegBoard.Holes[0]
            });

            result.Should().NotBeNull();
            result.IsValidMove.Should().BeTrue();
        }
        public async Task ShouldAddReactionRole_WhenNoReactionRolesExist()
        {
            ulong roleId    = 5;
            ulong guildId   = 69;
            ulong channelId = 215u;
            ulong messageId = 215u;
            var   emoji     = new Emoji
            {
                Id   = 4126u,
                Name = "TEST"
            };

            ReactionRole addedRole = null;
            var          mockDbSet = _dbContext.ConfigureMockDbSet(x => x.ReactionRoles);

            mockDbSet.When(x => x.AddAsync(Arg.Any <ReactionRole>())).Do(x => addedRole = x.Arg <ReactionRole>());

            await _appFixture.SendAsync(new AddReactionRoleCommand
            {
                RoleId    = roleId,
                GuildId   = guildId,
                ChannelId = channelId,
                MessageId = messageId,
                Emoji     = emoji
            });

            await _dbContext.Received(1).SaveChangesAsync(default);
        public async Task ShouldAddXp_WhenUserExists()
        {
            ulong guildId = 6;
            ulong userId  = 90;
            var   message = "TEST";
            var   user    = new User
            {
                GuildId = guildId,
                UserId  = userId,
                Lvl     = 0,
                XP      = 0
            };

            _dbContext.ConfigureMockDbSet(x => x.XPUsers, user);
            _calculator.XpEarned(message, guildId).Returns(20.0);

            var command = new AddXpToUserCommand
            {
                GuildId = guildId,
                UserId  = userId,
                Message = message
            };

            await _appFixture.SendAsync(command);

            await _dbContext.Received(1).SaveChangesAsync(default);
Exemple #11
0
        public async Task ShouldGrantMuteRoleForUser_WhenValidRequestCalled()
        {
            var command = GenerateCommand();

            await _appFixture.SendAsync(command);

            await _roleService.ReceivedWithAnyArgs(1).GrantRoleAsync(default, default, default);
        public async Task ShouldRestrictChannelAccess_WhenValidRequestCalled()
        {
            var command = GenerateCommand();

            await _appFixture.SendAsync(command);

            await _moderationService.ReceivedWithAnyArgs(1).RestrictChannelAccess(default, default, default);
        public async Task ShouldPerformBanningOfMember_WhenValidRequestCalled()
        {
            var command = new BanCommand
            {
                GuildId = 70650,
                UserId  = 90,
                Reason  = "You're Annoying",
            };

            await _appFixture.SendAsync(command);

            await _moderationService.ReceivedWithAnyArgs(1).BanAsync(default, default);
        public async Task ShouldReturnContextUser_WhenUserIsInDbSet()
        {
            ulong currentUserId = 90;
            var   currentUser   = new User {
                UserId = currentUserId, Lvl = 100, XP = 20
            };

            _dbContext.ConfigureMockDbSet(x => x.XPUsers, currentUser);

            var command = new GetTopUsersByXPQuery
            {
                CurrentUserId = currentUserId,
                Count         = 10
            };

            var result = await _fixture.SendAsync(command);

            result.ContextUser.Should().NotBeNull();
            result.TopTenUsers.Count.Should().Be(1);
            result.ContextUser.User.Should().BeEquivalentTo(currentUser);
        }
Exemple #15
0
        public async Task DbSetShouldBeEmpty_WhenThereIsNoBoostersInQueue()
        {
            ulong guildId = 6;

            var queuedBoosters = new Dictionary <ulong, Queue <QueuedBooster> >
            {
                { guildId, new Queue <QueuedBooster>() }
            };

            _boosterService.QueuedBoosters.Returns(queuedBoosters);

            _dbContext.ConfigureMockDbSet(x => x.XPQueuedBoosters);
            ((IQueryable <QueuedBooster>)_dbContext.XPQueuedBoosters).Expression.Returns(new List <QueuedBooster>()
                                                                                         .AsQueryable().Where(x => false).Expression);

            await _appFixture.SendAsync(new SaveQueueCommand { GuildId = guildId });

            await _dbContext.XPQueuedBoosters.Received(1).DeleteAsync();

            _dbContext.XPQueuedBoosters.Received(0).Add(Arg.Any <QueuedBooster>());
        }
        public async Task ShouldNotRestoreAnyChannels_WhenChannelRestrictionsThatAreNotExpiredExist(int secondsInFuture)
        {
            var now = DateTime.Now;

            _dateTime.Now.Returns(now);

            var activeRestriction = GenerateActiveChannelRestrict(now.AddSeconds(secondsInFuture));

            _dbContext.ConfigureMockDbSet(x => x.ModerationActiveChannelRestricts, activeRestriction);

            await _appFixture.SendAsync(new UnRestrictExpiredChannelsCommand());

            await _moderationService.DidNotReceiveWithAnyArgs().RestoreChannelAccess(default, default, default);
Exemple #17
0
        public async Task ShouldNotRevokeAnyRoles_WhenMutesThatAreNotExpiredExist(int secondsInFuture)
        {
            var now = DateTime.Now;

            _dateTime.Now.Returns(now);

            var activeMute = GenerateActiveMute(now.AddSeconds(secondsInFuture));

            _dbContext.ConfigureMockDbSet(x => x.ModerationActiveMutes, activeMute);

            await _appFixture.SendAsync(new UnMuteExpiredMutesCommand());

            await _roleService.DidNotReceiveWithAnyArgs().RevokeRoleAsync(default, default, default);
        public async Task ShouldAddJoinRole_WhenNoJoinRolesExist()
        {
            ulong roleId = 5;

            JoinRole addedRole = null;
            var      mockDbSet = _dbContext.ConfigureMockDbSet(x => x.JoinRoles);

            mockDbSet.When(x => x.AddAsync(Arg.Any <JoinRole>())).Do(x => addedRole = x.Arg <JoinRole>());

            await _appFixture.SendAsync(new AddJoinRoleCommand
            {
                RoleId = roleId
            });

            await _dbContext.Received(1).SaveChangesAsync(default);
Exemple #19
0
        public async Task ShouldRemoveReactionRole_WhenReactionRolesExists()
        {
            const int id = 5;

            ReactionRole role      = null;
            var          mockDbSet = _dbContext.ConfigureMockDbSet(x => x.ReactionRoles, new ReactionRole {
                Id = id
            });

            mockDbSet.When(x => x.Remove(Arg.Any <ReactionRole>())).Do(x => role = x.Arg <ReactionRole>());

            await _appFixture.SendAsync(new RemoveReactionRoleCommand
            {
                Id = id
            });

            await _dbContext.Received(1).SaveChangesAsync(default);
Exemple #20
0
        public async Task AllCollectionsShouldBeEmpty_WhenNoGuildsExist()
        {
            _dbContext.ConfigureMockDbSet(x => x.XPActiveBoosters);
            _dbContext.ConfigureMockDbSet(x => x.XPQueuedBoosters);
            _dbContext.ConfigureMockDbSet(x => x.XPAvailableSlots);

            await _appFixture.SendAsync(new PopulateBoosterServiceCommand());

            _activeBoosters.Should().NotBeNull().And.BeEmpty();
            _queuedBoosters.Should().NotBeNull().And.BeEmpty();
            _availableSlots.Should().NotBeNull().And.BeEmpty();
        }
Exemple #21
0
        public async Task ShouldAddConditionalRole_WhenNoConditionalRolesExist()
        {
            ulong requiredRoleId  = 5;
            ulong resultingRoleId = 553;

            ConditionalRole addedRole = null;
            var             mockDbSet = _dbContext.ConfigureMockDbSet(x => x.ConditionalRoles);

            mockDbSet.When(x => x.AddAsync(Arg.Any <ConditionalRole>())).Do(x => addedRole = x.Arg <ConditionalRole>());

            await _appFixture.SendAsync(new AddConditionalRoleCommand
            {
                RequiredRoleId = requiredRoleId,
                ResultRoleId   = resultingRoleId,
                Remain         = true
            });

            await _dbContext.Received(1).SaveChangesAsync(default);
Exemple #22
0
        public async Task ShouldAddLevelRole_WhenNoLevelRolesExist()
        {
            ulong roleId = 5;
            var   level  = 45;

            LevelRole addedRole = null;
            var       mockDbSet = _dbContext.ConfigureMockDbSet(x => x.LevelRoles);

            mockDbSet.When(x => x.AddAsync(Arg.Any <LevelRole>())).Do(x => addedRole = x.Arg <LevelRole>());

            await _appFixture.SendAsync(new AddLevelRoleCommand
            {
                RoleId = roleId,
                Level  = level,
                Remain = true
            });

            await _dbContext.Received(1).SaveChangesAsync(default);
Exemple #23
0
        public async Task ShouldActivateBooster_WhenSlotExists()
        {
            var   now        = DateTime.Now;
            ulong guildId    = 6;
            ulong channelId  = 7;
            var   multiplier = 0.5f;
            var   duration   = TimeSpan.FromSeconds(5);
            var   slot       = new AvailableSlot
            {
                Id        = 69,
                GuildId   = guildId,
                ChannelId = channelId
            };

            var activeBoosters = new Dictionary <ulong, List <ActiveBooster> >
            {
                { guildId, new List <ActiveBooster>() }
            };
            var availableSlots = new Dictionary <ulong, List <AvailableSlot> >
            {
                { guildId, new List <AvailableSlot> {
                      slot
                  } }
            };

            _dbContext.ConfigureMockDbSet(x => x.XPActiveBoosters);
            _dbContext.ConfigureMockDbSet(x => x.XPAvailableSlots, slot);
            _boosterService.ActiveBoosters.Returns(activeBoosters);
            _boosterService.AvailableSlots.Returns(availableSlots);

            _dateTime.Now.Returns(now);

            var command = new ActivateBoosterCommand
            {
                GuildId    = guildId,
                Multiplier = multiplier,
                Duration   = duration,
                Slot       = slot
            };

            await _appFixture.SendAsync(command);

            await _dbContext.Received(1).SaveChangesAsync(default);
        private async Task PerformOobifyTest(string text, string expected)
        {
            var result = await _fixture.SendAsync(new OobifyTextCommand { Text = text });

            result.Should().Be(expected);
        }