public void GetByID_OneItem_ReturnsGuildTask() { // Arrange GuildTask entity = new GuildTask { ID = 1 }; // Act MessageHub.Instance.Publish(new OnCacheObjectSet <GuildTask>(entity)); // Assert Assert.AreNotSame(entity, _cache.GetByID(1)); }
public void GetByID_TwoItems_ReturnsCorrectObject() { // Arrange GuildTask entity1 = new GuildTask { ID = 1 }; GuildTask entity2 = new GuildTask { ID = 2 }; // Act MessageHub.Instance.Publish(new OnCacheObjectSet <GuildTask>(entity1)); MessageHub.Instance.Publish(new OnCacheObjectSet <GuildTask>(entity2)); // Assert Assert.AreNotSame(entity1, _cache.GetByID(1)); Assert.AreNotSame(entity2, _cache.GetByID(2)); }
public void GetByID_RemovedItem_ReturnsCorrectObject() { // Arrange GuildTask entity1 = new GuildTask { ID = 1 }; GuildTask entity2 = new GuildTask { ID = 2 }; // Act MessageHub.Instance.Publish(new OnCacheObjectSet <GuildTask>(entity1)); MessageHub.Instance.Publish(new OnCacheObjectSet <GuildTask>(entity2)); MessageHub.Instance.Publish(new OnCacheObjectDeleted <GuildTask>(entity1)); // Assert Assert.Throws <KeyNotFoundException>(() => { _cache.GetByID(1); }); Assert.AreNotSame(entity2, _cache.GetByID(2)); }
public void GetByID_NoItems_ThrowsKeyNotFoundException() { // Arrange GuildTask entity1 = new GuildTask { ID = 1 }; GuildTask entity2 = new GuildTask { ID = 2 }; // Act MessageHub.Instance.Publish(new OnCacheObjectSet <GuildTask>(entity1)); MessageHub.Instance.Publish(new OnCacheObjectSet <GuildTask>(entity2)); MessageHub.Instance.Publish(new OnCacheObjectDeleted <GuildTask>(entity1)); MessageHub.Instance.Publish(new OnCacheObjectDeleted <GuildTask>(entity2)); // Assert Assert.Throws <KeyNotFoundException>(() => { _cache.GetByID(1); }); Assert.Throws <KeyNotFoundException>(() => { _cache.GetByID(2); }); }
public async Task PunishMemberAsync(DiscordGuild guild, DiscordMember member, PunishmentAction type, TimeSpan?cooldown = null, string?reason = null) { Log.Debug("Punishing {Member} in guild {Guild} with action {ActionType} due to: {Reason}", member, guild, type, reason ?? this.reason); try { DiscordRole muteRole; GuildTask gt; switch (type) { case PunishmentAction.Kick: await member.RemoveAsync(reason ?? this.reason); break; case PunishmentAction.PermanentMute: muteRole = await this.GetOrCreateMuteRoleAsync(guild); if (member.Roles.Contains(muteRole)) { return; } await member.GrantRoleAsync(muteRole, reason ?? this.reason); break; case PunishmentAction.PermanentBan: await member.BanAsync(1, reason : reason ?? this.reason); break; case PunishmentAction.TemporaryBan: await member.BanAsync(0, reason : reason ?? this.reason); gt = new GuildTask { ExecutionTime = DateTimeOffset.Now + (cooldown ?? TimeSpan.FromDays(1)), GuildId = guild.Id, UserId = member.Id, Type = ScheduledTaskType.Unban, }; await this.ss.ScheduleAsync(gt); break; case PunishmentAction.TemporaryMute: muteRole = await this.GetOrCreateMuteRoleAsync(guild); if (member.Roles.Contains(muteRole)) { return; } await member.GrantRoleAsync(muteRole, reason ?? this.reason); gt = new GuildTask { ExecutionTime = DateTimeOffset.Now + (cooldown ?? TimeSpan.FromHours(1)), GuildId = guild.Id, RoleId = muteRole.Id, UserId = member.Id, Type = ScheduledTaskType.Unmute, }; await this.ss.ScheduleAsync(gt); break; } } catch { if (this.ls.IsLogEnabledFor(guild.Id, out LocalizedEmbedBuilder emb)) { emb.WithLocalizedTitle("err-punish-failed"); emb.WithColor(DiscordColor.Red); emb.AddLocalizedTitleField("str-user", member); emb.AddLocalizedTitleField("str-rsn", reason ?? this.reason); await this.ls.LogAsync(guild, emb.Build()); } } }