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>()); }
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>()); }
public void ShouldThrowValidationException_WhenCurrentUserIdIsInvalid(ulong id) { var command = new GetTopUsersByXPQuery { CurrentUserId = id, Count = 10 }; FluentActions.Invoking(() => _fixture.SendAsync(command)).Should().ThrowAsync <ValidationException>(); }
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>()); }
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);
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); }
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);
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);
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);
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(); }
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);
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);
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); }