示例#1
0
        public void IsBlockedTests()
        {
            foreach (ulong uid in MockData.Ids)
            {
                Assert.That(this.Service.IsChannelBlocked(MockData.Ids[0]), Is.False);
                Assert.That(this.Service.IsUserBlocked(MockData.Ids[0]), Is.False);
            }

            TestDbProvider.SetupAlterAndVerify(
                setup: db => this.AddMockData(db),
                alter: db => this.Service.LoadData(),
                verify: db => {
                Assert.That(this.Service.IsChannelBlocked(MockData.Ids[0]));
                Assert.That(this.Service.IsChannelBlocked(MockData.Ids[1]));
                Assert.That(this.Service.IsChannelBlocked(MockData.Ids[2]));
                Assert.That(this.Service.IsChannelBlocked(MockData.Ids[3]), Is.False);
                Assert.That(this.Service.IsChannelBlocked(MockData.Ids[4]), Is.False);
                Assert.That(this.Service.IsChannelBlocked(MockData.Ids[5]), Is.False);
                Assert.That(this.Service.IsUserBlocked(MockData.Ids[0]));
                Assert.That(this.Service.IsUserBlocked(MockData.Ids[1]), Is.False);
                Assert.That(this.Service.IsUserBlocked(MockData.Ids[2]), Is.False);
                Assert.That(this.Service.IsUserBlocked(MockData.Ids[3]), Is.False);
                Assert.That(this.Service.IsUserBlocked(MockData.Ids[4]));
                Assert.That(this.Service.IsBlocked(MockData.Ids[0], cid: MockData.Ids[0], uid: MockData.Ids[1]));
                Assert.That(this.Service.IsBlocked(MockData.Ids[0], cid: MockData.Ids[3], uid: MockData.Ids[4]));
                Assert.That(this.Service.IsBlocked(MockData.Ids[0], cid: MockData.Ids[3], uid: MockData.Ids[3]), Is.False);
                Assert.That(this.Service.IsBlocked(MockData.Ids[0], cid: MockData.Ids[4], uid: MockData.Ids[2]), Is.False);
            }
                );
        }
        public void GetLocalizedTimeTests()
        {
            TestDbProvider.SetupAlterAndVerify(
                setup: db => {
                GuildConfig gcfg;

                gcfg            = db.Configs.Find((long)MockData.Ids[0]);
                gcfg.TimezoneId = null;
                gcfg.Locale     = this.SrLocale;
                db.Configs.Update(gcfg);

                gcfg            = db.Configs.Find((long)MockData.Ids[1]);
                gcfg.TimezoneId = "UTC";
                gcfg.Locale     = "en-US";
                db.Configs.Update(gcfg);
            },
                alter: db => {
                this.Configs.LoadData();
                this.Service.LoadData(this.ValidTestDataPath);
            },
                verify: db => {
                var dt  = new DateTime(2020, 1, 1, 12, 0, 0, DateTimeKind.Utc);
                var dto = new DateTimeOffset(2020, 1, 1, 12, 0, 0, TimeSpan.FromHours(1));
                Assert.That(this.Service.GetLocalizedTimeString(MockData.Ids[0], dt, "G"), Is.EqualTo("2020-01-01 13:00:00"));
                Assert.That(this.Service.GetLocalizedTimeString(MockData.Ids[1], dt), Is.EqualTo("1/1/2020 12:00 PM"));
                Assert.That(this.Service.GetLocalizedTimeString(MockData.Ids[0], dt, "r"), Is.EqualTo("Wed, 01 Jan 2020 12:00:00 GMT"));
                Assert.That(this.Service.GetLocalizedTimeString(MockData.Ids[1], dt, "r"), Is.EqualTo("Wed, 01 Jan 2020 12:00:00 GMT"));
                Assert.That(this.Service.GetLocalizedTimeString(MockData.Ids[0], dto), Is.EqualTo("2020-01-01 12:00"));
                Assert.That(this.Service.GetLocalizedTimeString(MockData.Ids[1], dto, "G"), Is.EqualTo("1/1/2020 11:00:00 AM"));
                Assert.That(this.Service.GetLocalizedTimeString(MockData.Ids[0], dto, "r"), Is.EqualTo("Wed, 01 Jan 2020 11:00:00 GMT"));
                Assert.That(this.Service.GetLocalizedTimeString(MockData.Ids[1], dto, "r"), Is.EqualTo("Wed, 01 Jan 2020 11:00:00 GMT"));
            }
                );
        }
        public async Task UnregisterGuildAsyncTests()
        {
            await TestDbProvider.AlterAndVerifyAsync(
                alter : async db => {
                this.Service.LoadData();
                await this.Service.UnregisterGuildAsync(MockData.Ids[0]);
            },
                verify : async db => Assert.That(await db.Configs.FindAsync((long)MockData.Ids[0]), Is.Null)
                );

            await TestDbProvider.AlterAndVerifyAsync(
                alter : async db => {
                this.Service.LoadData();
                await this.Service.UnregisterGuildAsync(1);
            },
                verify : db => Task.CompletedTask
                );

            await TestDbProvider.SetupAlterAndVerifyAsync(
                setup : db => {
                this.SetMockGuildConfig(db);
                return(Task.CompletedTask);
            },
                alter : async db => {
                this.Service.LoadData();
                await this.Service.UnregisterGuildAsync(MockData.Ids[0]);
                await this.Service.RegisterGuildAsync(MockData.Ids[0]);
            },
                verify : async db => {
                GuildConfig gcfg = await db.Configs.FindAsync((long)MockData.Ids[0]);
                Assert.That(HaveSamePropertyValues(new CachedGuildConfig(), gcfg.CachedConfig));
            }
                );
        }
        public void GetTests()
        {
            TestDbProvider.AlterAndVerify(
                alter: _ => { },
                verify: db => {
                foreach (ulong id in MockData.Ids)
                {
                    IReadOnlyList <ulong> all = this.Service.GetIds(id);
                    Assert.That(all, Is.Empty);
                }
            }
                );

            TestDbProvider.SetupAlterAndVerify(
                setup: db => this.AddMockData(db),
                alter: _ => { },
                verify: db => {
                IReadOnlyList <ulong> gid0 = this.Service.GetIds(MockData.Ids[0]);
                Assert.That(gid0, Is.EquivalentTo(new[] { MockData.Ids[0], MockData.Ids[1] }));
                IReadOnlyList <ulong> gid1 = this.Service.GetIds(MockData.Ids[1]);
                Assert.That(gid1, Is.EquivalentTo(new[] { MockData.Ids[2] }));
                foreach (ulong id in MockData.Ids.Skip(2))
                {
                    IReadOnlyList <ulong> gidx = this.Service.GetIds(id);
                    Assert.That(gidx, Is.Empty);
                }
            }
                );
        }
        public async Task ClearAsyncTests()
        {
            await TestDbProvider.SetupAlterAndVerifyAsync(
                setup : db => {
                this.AddMockData(db);
                return(Task.CompletedTask);
            },
                alter : db => this.Service.ClearAsync(),
                verify : db => {
                IReadOnlyList <ulong> all = this.Service.GetIds();
                Assert.That(all, Is.Empty);
                Assert.That(db.PrivilegedUsers, Is.Empty);
                return(Task.CompletedTask);
            }
                );

            await TestDbProvider.SetupAlterAndVerifyAsync(
                setup : db => Task.CompletedTask,
                alter : db => this.Service.ClearAsync(),
                verify : db => {
                IReadOnlyList <ulong> all = this.Service.GetIds();
                Assert.That(all, Is.Empty);
                Assert.That(db.PrivilegedUsers, Is.Empty);
                return(Task.CompletedTask);
            }
                );
        }
        public void GetCommandDescriptionTests()
        {
            this.Service.LoadData(this.ValidTestDataPath);

            Assert.That(this.Service.GetCommandDescription(MockData.Ids[0], "cmd1"), Is.EqualTo("one"));
            Assert.That(this.Service.GetCommandDescription(MockData.Ids[0], "cmd2"), Is.EqualTo("two"));
            Assert.That(this.Service.GetCommandDescription(MockData.Ids[0], "cmd1 subcommand"), Is.EqualTo("one sub"));
            Assert.That(() => this.Service.GetCommandDescription(MockData.Ids[0], "does not exist"), Throws.InstanceOf <LocalizationException>());
            Assert.That(this.Service.GetCommandDescription(MockData.Ids[1], "cmd1"), Is.EqualTo("one"));
            Assert.That(this.Service.GetCommandDescription(MockData.Ids[1], "cmd2"), Is.EqualTo("two"));
            Assert.That(this.Service.GetCommandDescription(MockData.Ids[1], "cmd1 subcommand"), Is.EqualTo("one sub"));

            TestDbProvider.SetupAlterAndVerify(
                setup: db => {
                GuildConfig gcfg = db.Configs.Find((long)MockData.Ids[1]);
                gcfg.Locale      = this.SrLocale;
                db.Configs.Update(gcfg);
            },
                alter: db => {
                this.Configs.LoadData();
                this.Service.LoadData(this.ValidTestDataPath);
            },
                verify: db => {
                Assert.That(this.Service.GetCommandDescription(MockData.Ids[0], "cmd1"), Is.EqualTo("one"));
                Assert.That(this.Service.GetCommandDescription(MockData.Ids[0], "cmd2"), Is.EqualTo("two"));
                Assert.That(this.Service.GetCommandDescription(MockData.Ids[0], "cmd1 subcommand"), Is.EqualTo("one sub"));
                Assert.That(() => this.Service.GetCommandDescription(MockData.Ids[0], "does not exist"), Throws.InstanceOf <LocalizationException>());
                Assert.That(this.Service.GetCommandDescription(MockData.Ids[1], "cmd2"), Is.EqualTo("dva"));
                Assert.That(this.Service.GetCommandDescription(MockData.Ids[1], "cmd3"), Is.EqualTo("tri"));
                Assert.That(this.Service.GetCommandDescription(MockData.Ids[1], "cmd1 subcommand"), Is.EqualTo("jedan pod"));
                Assert.That(() => this.Service.GetCommandDescription(MockData.Ids[1], "does not exist"), Throws.InstanceOf <LocalizationException>());
            }
                );
        }
示例#7
0
        public void GetRulesTests()
        {
            TestDbProvider.Verify(
                verify: db => {
                foreach (ulong gid in MockData.Ids)
                {
                    Assert.That(this.Service.GetRules(gid), Is.Empty);
                }
            }
                );

            TestDbProvider.SetupAndVerify(
                setup: db => this.AddMockRules(db),
                verify: db => {
                Assert.That(this.Service.GetRules(MockData.Ids[0]), Has.Exactly(11).Items);
                Assert.That(this.Service.GetRules(MockData.Ids[0], "a"), Has.Exactly(2).Items);
                Assert.That(this.Service.GetRules(MockData.Ids[0], "b"), Has.Exactly(1).Items);
                Assert.That(this.Service.GetRules(MockData.Ids[0], "f"), Has.Exactly(2).Items);
                Assert.That(this.Service.GetRules(MockData.Ids[0], "f g"), Has.Exactly(2).Items);
                Assert.That(this.Service.GetRules(MockData.Ids[0], "aaa"), Is.Empty);
                Assert.That(this.Service.GetRules(MockData.Ids[0], "x"), Is.Empty);

                Assert.That(this.Service.GetRules(MockData.Ids[1]), Has.Exactly(22).Items);
                Assert.That(this.Service.GetRules(MockData.Ids[1], "a"), Has.Exactly(2).Items);
                Assert.That(this.Service.GetRules(MockData.Ids[1], "a b"), Has.Exactly(3).Items);
                Assert.That(this.Service.GetRules(MockData.Ids[1], "aaa"), Is.Empty);
                Assert.That(this.Service.GetRules(MockData.Ids[1], "g"), Has.Exactly(2).Items);
                Assert.That(this.Service.GetRules(MockData.Ids[1], "g h"), Has.Exactly(3).Items);
                Assert.That(this.Service.GetRules(MockData.Ids[1], "g h j"), Has.Exactly(4).Items);

                Assert.That(this.Service.GetRules(MockData.Ids[3]), Is.Empty);
                Assert.That(this.Service.GetRules(MockData.Ids[3], "x"), Is.Empty);
            }
                );
        }
        public async Task BlankDatabaseSyncTests()
        {
            this.Service.ChangeXp(MockData.Ids[0], MockData.Ids[0]);
            this.Service.ChangeXp(MockData.Ids[0], MockData.Ids[0]);
            for (int i = 0; i < 9; i++)
            {
                this.Service.ChangeXp(MockData.Ids[0], MockData.Ids[1]);
            }
            this.Service.ChangeXp(MockData.Ids[0], MockData.Ids[2]);

            await TestDbProvider.AlterAndVerifyAsync(
                alter : db => this.Service.Sync(),
                verify : db => {
                Assert.That(db.XpCounts, Has.Exactly(3).Items);
                XpCount u1 = db.XpCounts.Find((long)MockData.Ids[0], (long)MockData.Ids[0]);
                XpCount u2 = db.XpCounts.Find((long)MockData.Ids[0], (long)MockData.Ids[1]);
                XpCount u3 = db.XpCounts.Find((long)MockData.Ids[0], (long)MockData.Ids[2]);
                Assert.That(db.XpCounts.Find((long)MockData.Ids[0], 123451234512345), Is.Null);
                Assert.That(u1, Is.Not.Null);
                Assert.That(u2, Is.Not.Null);
                Assert.That(u3, Is.Not.Null);
                Assert.That(u1.Xp, Is.EqualTo(2));
                Assert.That(u2.Xp, Is.EqualTo(9));
                Assert.That(u3.Xp, Is.EqualTo(1));
                return(Task.CompletedTask);
            }
                );
        }
        public async Task SetGuildLocaleAsyncTests()
        {
            await TestDbProvider.AlterAndVerifyAsync(
                alter : async db => {
                this.Configs.LoadData();
                this.Service.LoadData(this.ValidTestDataPath);
                Assert.That(await this.Service.SetGuildLocaleAsync(MockData.Ids[0], this.EnLocale), Is.True);
            },
                verify : db => {
                Assert.That(db.Configs.Find((long)MockData.Ids[0]).Locale, Is.EqualTo(this.EnLocale));
                return(Task.CompletedTask);
            }
                );

            await TestDbProvider.SetupAlterAndVerifyAsync(
                setup : db => {
                GuildConfig gcfg = db.Configs.Find((long)MockData.Ids[0]);
                gcfg.Locale      = this.EnLocale;
                db.Configs.Update(gcfg);
                return(db.SaveChangesAsync());
            },
                alter : async db => {
                this.Configs.LoadData();
                this.Service.LoadData(this.ValidTestDataPath);
                Assert.That(await this.Service.SetGuildLocaleAsync(MockData.Ids[0], "non-existing-locale"), Is.False);
            },
                verify : db => {
                Assert.That(db.Configs.Find((long)MockData.Ids[0]).Locale, Is.EqualTo(this.EnLocale));
                return(Task.CompletedTask);
            }
                );
        }
        public async Task ContainsAsyncTests()
        {
            await TestDbProvider.AlterAndVerifyAsync(
                alter : _ => Task.CompletedTask,
                verify : async db => {
                foreach (ulong id in MockData.Ids)
                {
                    Assert.That(await this.Service.ContainsAsync(id), Is.False);
                }
            }
                );

            await TestDbProvider.SetupAlterAndVerifyAsync(
                setup : db => {
                this.AddMockData(db);
                return(Task.CompletedTask);
            },
                alter : _ => Task.CompletedTask,
                verify : async db => {
                Assert.That(await this.Service.ContainsAsync(MockData.Ids[0]));
                Assert.That(await this.Service.ContainsAsync(MockData.Ids[1]));
                foreach (ulong id in MockData.Ids.Skip(2))
                {
                    Assert.That(await this.Service.ContainsAsync(id), Is.False);
                }
            }
                );
        }
示例#11
0
        public void ClearAsyncTests()
        {
            TestDbProvider.Verify(
                verify: _ => {
                foreach (ulong gid in MockData.Ids)
                {
                    Assert.DoesNotThrowAsync(() => this.Service.ClearAsync(gid));
                    Assert.DoesNotThrowAsync(() => this.Service.ClearAsync(gid));
                }
            }
                );

            TestDbProvider.SetupAlterAndVerify(
                setup: db => this.AddMockRules(db),
                alter: db => Assert.DoesNotThrowAsync(() => this.Service.ClearAsync(MockData.Ids[0])),
                verify: db => {
                Assert.That(this.Service.GetRules(MockData.Ids[0]), Is.Empty);
                Assert.That(this.Service.GetRules(MockData.Ids[1]), Is.Not.Empty);
                Assert.That(this.Service.GetRules(MockData.Ids[2]), Is.Not.Empty);
            }
                );

            TestDbProvider.SetupAlterAndVerify(
                setup: db => this.AddMockRules(db),
                alter: db => {
                foreach (ulong gid in MockData.Ids)
                {
                    Assert.DoesNotThrowAsync(() => this.Service.ClearAsync(gid));
                    Assert.DoesNotThrowAsync(() => this.Service.ClearAsync(gid));
                }
            },
                verify: db => Assert.That(db.CommandRules, Is.Empty)
                );
        }
示例#12
0
 public async Task GetBlockedAsyncTests()
 {
     await TestDbProvider.SetupAlterAndVerifyAsync(
         setup : db => {
         this.AddMockData(db);
         return(Task.CompletedTask);
     },
         alter : db => {
         this.Service.LoadData();
         return(Task.CompletedTask);
     },
         verify : async db => {
         ulong[] bcExpected = new[] { MockData.Ids[0], MockData.Ids[1], MockData.Ids[2] };
         ulong[] buExpected = new[] { MockData.Ids[0], MockData.Ids[4], MockData.Ids[5] };
         Assert.That(this.Service.BlockedChannels, Is.EquivalentTo(bcExpected));
         Assert.That(this.Service.BlockedUsers, Is.EquivalentTo(buExpected));
         IReadOnlyList <BlockedChannel> bchns = await this.Service.GetBlockedChannelsAsync();
         IReadOnlyList <BlockedUser> busrs    = await this.Service.GetBlockedUsersAsync();
         Assert.That(bchns.Select(c => c.Id), Is.EquivalentTo(bcExpected));
         Assert.That(busrs.Select(u => u.Id), Is.EquivalentTo(buExpected));
         Assert.That(bchns.Select(c => c.Reason), Is.EquivalentTo(new[] { "chn 1", "chn 1", "chn 2" }));
         Assert.That(busrs.Select(u => u.Reason), Is.EquivalentTo(new[] { "usr 1", "usr 1", "usr 2" }));
     }
         );
 }
 public async Task FilledDatabaseSyncTests()
 {
     await TestDbProvider.SetupAlterAndVerifyAsync(
         setup : db => {
         db.XpCounts.AddRange(new[] {
             new XpCount {
                 Xp      = 5,
                 GuildId = MockData.Ids[0],
                 UserId  = MockData.Ids[0]
             },
             new XpCount {
                 Xp      = 5,
                 GuildId = MockData.Ids[0],
                 UserId  = MockData.Ids[1]
             },
             new XpCount {
                 Xp      = 1,
                 GuildId = MockData.Ids[1],
                 UserId  = MockData.Ids[1]
             },
         });
         db.SaveChanges();
         this.Service.LoadData();
         return(Task.CompletedTask);
     },
         alter : db => {
         this.Service.ChangeXp(MockData.Ids[0], MockData.Ids[1]);
         this.Service.ChangeXp(MockData.Ids[1], MockData.Ids[1]);
         this.Service.ChangeXp(MockData.Ids[2], MockData.Ids[1]);
         this.Service.ChangeXp(MockData.Ids[0], MockData.Ids[2]);
         return(this.Service.Sync());
     },
         verify : db => {
         Assert.That(db.XpCounts, Has.Exactly(5).Items);
         XpCount u00 = db.XpCounts.Find((long)MockData.Ids[0], (long)MockData.Ids[0]);
         XpCount u01 = db.XpCounts.Find((long)MockData.Ids[0], (long)MockData.Ids[1]);
         XpCount u11 = db.XpCounts.Find((long)MockData.Ids[1], (long)MockData.Ids[1]);
         XpCount u21 = db.XpCounts.Find((long)MockData.Ids[2], (long)MockData.Ids[1]);
         XpCount u02 = db.XpCounts.Find((long)MockData.Ids[0], (long)MockData.Ids[2]);
         Assert.That(db.XpCounts.Find((long)MockData.Ids[0], 123451234512345), Is.Null);
         Assert.That(u00, Is.Not.Null);
         Assert.That(u01, Is.Not.Null);
         Assert.That(u11, Is.Not.Null);
         Assert.That(u21, Is.Not.Null);
         Assert.That(u02, Is.Not.Null);
         Assert.That(u00.Xp, Is.EqualTo(5));
         Assert.That(u01.Xp, Is.EqualTo(6));
         Assert.That(u11.Xp, Is.EqualTo(2));
         Assert.That(u21.Xp, Is.EqualTo(1));
         Assert.That(u02.Xp, Is.EqualTo(1));
         Assert.That(this.Service.GetUserXp(MockData.Ids[0], MockData.Ids[0]), Is.EqualTo(5));
         Assert.That(this.Service.GetUserXp(MockData.Ids[0], MockData.Ids[1]), Is.EqualTo(6));
         Assert.That(this.Service.GetUserXp(MockData.Ids[1], MockData.Ids[1]), Is.EqualTo(2));
         Assert.That(this.Service.GetUserXp(MockData.Ids[2], MockData.Ids[1]), Is.EqualTo(1));
         Assert.That(this.Service.GetUserXp(MockData.Ids[0], MockData.Ids[2]), Is.EqualTo(1));
         return(Task.CompletedTask);
     }
         );
 }
        public void IsChannelExemptedTests()
        {
            TestDbProvider.SetupAlterAndVerify(
                setup: db => {
                db.ExemptsLogging.Add(new ExemptedLoggingEntity {
                    GuildId = MockData.Ids[0], Id = MockData.Ids[0], Type = ExemptedEntityType.Channel
                });
                db.ExemptsLogging.Add(new ExemptedLoggingEntity {
                    GuildId = MockData.Ids[1], Id = MockData.Ids[0], Type = ExemptedEntityType.Channel
                });
                db.ExemptsLogging.Add(new ExemptedLoggingEntity {
                    GuildId = MockData.Ids[2], Id = MockData.Ids[1], Type = ExemptedEntityType.Channel
                });
                db.ExemptsLogging.Add(new ExemptedLoggingEntity {
                    GuildId = MockData.Ids[3], Id = MockData.Ids[2], Type = ExemptedEntityType.Channel
                });
            },
                alter: db => this.Service.LoadData(),
                verify: db => {
                Assert.That(this.Service.IsChannelExempted(gid: MockData.Ids[0], cid: MockData.Ids[0]), Is.True);
                Assert.That(this.Service.IsChannelExempted(gid: MockData.Ids[1], cid: MockData.Ids[0]), Is.True);
                Assert.That(this.Service.IsChannelExempted(gid: MockData.Ids[2], cid: MockData.Ids[1]), Is.True);
                Assert.That(this.Service.IsChannelExempted(gid: MockData.Ids[3], cid: MockData.Ids[2]), Is.True);
                Assert.That(this.Service.IsChannelExempted(gid: MockData.Ids[0], cid: MockData.Ids[1]), Is.False);
                Assert.That(this.Service.IsChannelExempted(gid: MockData.Ids[1], cid: MockData.Ids[1]), Is.False);
                Assert.That(this.Service.IsChannelExempted(gid: MockData.Ids[2], cid: MockData.Ids[2]), Is.False);
                Assert.That(this.Service.IsChannelExempted(gid: MockData.Ids[3], cid: MockData.Ids[3]), Is.False);
            }
                );

            TestDbProvider.SetupAlterAndVerify(
                setup: db => {
                db.ExemptsLogging.Add(new ExemptedLoggingEntity {
                    GuildId = MockData.Ids[0], Id = MockData.Ids[0], Type = ExemptedEntityType.Channel
                });
                db.ExemptsLogging.Add(new ExemptedLoggingEntity {
                    GuildId = MockData.Ids[1], Id = MockData.Ids[0], Type = ExemptedEntityType.Role
                });
                db.ExemptsLogging.Add(new ExemptedLoggingEntity {
                    GuildId = MockData.Ids[2], Id = MockData.Ids[1], Type = ExemptedEntityType.Member
                });
            },
                alter: db => this.Service.LoadData(),
                verify: db => {
                Assert.That(this.Service.IsChannelExempted(gid: MockData.Ids[0], cid: MockData.Ids[0]), Is.True);
                Assert.That(this.Service.IsChannelExempted(gid: MockData.Ids[1], cid: MockData.Ids[0]), Is.False);
                Assert.That(this.Service.IsChannelExempted(gid: MockData.Ids[2], cid: MockData.Ids[1]), Is.False);
                Assert.That(this.Service.IsChannelExempted(gid: MockData.Ids[3], cid: MockData.Ids[2]), Is.False);
                Assert.That(this.Service.IsChannelExempted(gid: MockData.Ids[0], cid: MockData.Ids[1]), Is.False);
                Assert.That(this.Service.IsChannelExempted(gid: MockData.Ids[1], cid: MockData.Ids[1]), Is.False);
                Assert.That(this.Service.IsChannelExempted(gid: MockData.Ids[2], cid: MockData.Ids[2]), Is.False);
                Assert.That(this.Service.IsChannelExempted(gid: MockData.Ids[3], cid: MockData.Ids[3]), Is.False);
            }
                );
        }
示例#15
0
        public void TextContainsFilterTests()
        {
            TestDbProvider.Verify(db => Assert.That(this.Service.TextContainsFilter(MockData.Ids[0], "cat", out _), Is.False));

            TestDbProvider.SetupAlterAndVerify(
                setup: db => this.AddMockFilters(db),
                alter: db => this.Service.LoadData(),
                verify: db => {
                ContainsFilter(MockData.Ids[0], "cat", true);
                ContainsFilter(MockData.Ids[0], "doG.", true);
                ContainsFilter(MockData.Ids[0], "what a nice Cat, indeed.", true);
                ContainsFilter(MockData.Ids[0], "a fiSh?? and a cAt???", true);
                ContainsFilter(MockData.Ids[0], "i can haz spaces :)", true);
                ContainsFilter(MockData.Ids[0], "what a cute doge!", true);
                ContainsFilter(MockData.Ids[0], "doggy dooby doo", true);
                ContainsFilter(MockData.Ids[0], "fapfapfapfap", true);
                ContainsFilter(MockData.Ids[1], "cat", true);
                ContainsFilter(MockData.Ids[1], "*****@*****.**", true);
                ContainsFilter(MockData.Ids[1], "a nice Doge", true);
                ContainsFilter(MockData.Ids[1], "whyyyYyyyyyyyy", true);
                ContainsFilter(MockData.Ids[2], "[email protected]!", true);
                ContainsFilter(MockData.Ids[2], "help.me.pls.dot.com?abc", true);
                ContainsFilter(MockData.Ids[2], "no-way i will do that!", true);
                ContainsFilter(MockData.Ids[2], "spam @every1", true);

                ContainsFilter(MockData.Ids[0], "caat", false);
                ContainsFilter(MockData.Ids[0], "c4tz", false);
                ContainsFilter(MockData.Ids[0], "i like c@t.", false);
                ContainsFilter(MockData.Ids[0], "i like d0ges.", false);
                ContainsFilter(MockData.Ids[0], "so fisshy...", false);
                ContainsFilter(MockData.Ids[0], "dooggggy", false);
                ContainsFilter(MockData.Ids[1], "whhy", false);
                ContainsFilter(MockData.Ids[2], "[email protected]=com!", false);
                ContainsFilter(MockData.Ids[2], "help.me.pls.dot&com?abc", false);
                ContainsFilter(MockData.Ids[2], "no--way i will do that!", false);
                ContainsFilter(MockData.Ids[2], "spam every1", false);
            }
                );


            void ContainsFilter(ulong gid, string text, bool filtered)
            {
                Assert.That(this.Service.TextContainsFilter(gid, text, out Filter? filter), Is.EqualTo(filtered));
                if (filtered)
                {
                    Assert.That(filter, Is.Not.Null);
                    Assert.That(filter !.Regex.IsMatch(text));
                }
                else
                {
                    Assert.That(filter, Is.Null);
                }
            }
        }
        public TestDapperPlus()
        {
            var opts = Options.Create(new TestConnectionOptions
            {
                Test = TestDataConnection.TestConnecttion
            });
            var provider = new TestDbProvider(opts);

            _userRepo        = new TestUserDapperPlusRepository(provider);
            _userMessageRepo = new TestUserMesasgeDapperPlusRepository(provider);
        }
示例#17
0
        public void TextContainsForbiddenNameTests()
        {
            TestDbProvider.Verify(db => Assert.That(this.Service.IsNameForbidden(MockData.Ids[0], "cat", out _), Is.False));

            TestDbProvider.SetupAndVerify(
                setup: db => this.AddMockForbiddenNames(db),
                verify: db => {
                IsForbidden(MockData.Ids[0], "cat", true);
                IsForbidden(MockData.Ids[0], "doG.", true);
                IsForbidden(MockData.Ids[0], "what a nice Cat, indeed.", true);
                IsForbidden(MockData.Ids[0], "a fiSh?? and a cAt???", true);
                IsForbidden(MockData.Ids[0], "i can haz spaces :)", true);
                IsForbidden(MockData.Ids[0], "what a cute doge!", true);
                IsForbidden(MockData.Ids[0], "doggy dooby doo", true);
                IsForbidden(MockData.Ids[0], "fapfapfapfap", true);
                IsForbidden(MockData.Ids[1], "cat", true);
                IsForbidden(MockData.Ids[1], "*****@*****.**", true);
                IsForbidden(MockData.Ids[1], "a nice Doge", true);
                IsForbidden(MockData.Ids[1], "whyyyYyyyyyyyy", true);
                IsForbidden(MockData.Ids[2], "[email protected]!", true);
                IsForbidden(MockData.Ids[2], "help.me.pls.dot.com?abc", true);
                IsForbidden(MockData.Ids[2], "no-way i will do that!", true);
                IsForbidden(MockData.Ids[2], "spam @every1", true);

                IsForbidden(MockData.Ids[0], "caat", false);
                IsForbidden(MockData.Ids[0], "c4tz", false);
                IsForbidden(MockData.Ids[0], "i like c@t.", false);
                IsForbidden(MockData.Ids[0], "i like d0ges.", false);
                IsForbidden(MockData.Ids[0], "so fisshy...", false);
                IsForbidden(MockData.Ids[0], "dooggggy", false);
                IsForbidden(MockData.Ids[1], "whhy", false);
                IsForbidden(MockData.Ids[2], "[email protected]=com!", false);
                IsForbidden(MockData.Ids[2], "help.me.pls.dot&com?abc", false);
                IsForbidden(MockData.Ids[2], "no--way i will do that!", false);
                IsForbidden(MockData.Ids[2], "spam every1", false);
            }
                );


            void IsForbidden(ulong gid, string name, bool forbidden)
            {
                Assert.That(this.Service.IsNameForbidden(gid, name, out ForbiddenName? fname), Is.EqualTo(forbidden));
                if (forbidden)
                {
                    Assert.That(fname, Is.Not.Null);
                    Assert.That(fname !.Regex.IsMatch(name));
                }
                else
                {
                    Assert.That(fname, Is.Null);
                }
            }
        }
        public async Task GuildHasTextReactionTests()
        {
            TestDbProvider.SetupAlterAndVerify(
                setup: db => this.AddMockReactions(db),
                alter: db => this.Service.LoadData(),
                verify: db => {
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[0], "abc"), Is.True);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[0], "test"), Is.True);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[0], "trigger me"), Is.True);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[0], "y u DO dis"), Is.True);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[0], "pls"), Is.True);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[1], "y u do dis"), Is.True);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[1], "rIck"), Is.True);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[1], "astLey"), Is.True);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[3], "test"), Is.True);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[3], "test(ing)?"), Is.True);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[0], "asstley"), Is.False);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[0], "abcd"), Is.False);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[0], "ABCCC"), Is.False);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[1], "RICKY"), Is.False);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[2], "Ha"), Is.False);
            }
                );

            TestDbProvider.AlterAndVerify(
                alter: db => this.Service.LoadData(),
                verify: db => {
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[0], "abc"), Is.False);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[0], "test"), Is.False);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[0], "trigger me"), Is.False);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[0], "y u DO dis"), Is.False);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[0], "pls"), Is.False);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[1], "y u do dis"), Is.False);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[1], "rIck"), Is.False);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[1], "astLey"), Is.False);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[0], "asstley"), Is.False);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[0], "abcd"), Is.False);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[0], "ABCCC"), Is.False);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[1], "RICK"), Is.False);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[2], "Ha"), Is.False);
            }
                );

            await TestDbProvider.AlterAndVerifyAsync(
                alter : db => this.Service.AddTextReactionAsync(MockData.Ids[0], "test", "response", false),
                verify : db => {
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[0], "test"), Is.True);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[0], "teSt"), Is.True);
                Assert.That(this.Service.GuildHasTextReaction(MockData.Ids[0], "test"), Is.True);
                return(Task.CompletedTask);
            }
                );
        }
 public void GetCachedConfigTests()
 {
     TestDbProvider.SetupAlterAndVerify(
         setup: db => this.SetMockGuildConfig(db),
         alter: db => this.Service.LoadData(),
         verify: db => {
         Assert.That(HaveSamePropertyValues(this.Service.GetCachedConfig(1), new CachedGuildConfig()));
         Assert.That(HaveSamePropertyValues(this.gcfg[MockData.Ids[0]].CachedConfig, this.Service.GetCachedConfig(MockData.Ids[0])));
         Assert.That(HaveSamePropertyValues(this.gcfg[MockData.Ids[1]].CachedConfig, this.Service.GetCachedConfig(MockData.Ids[1])));
     }
         );
 }
示例#20
0
        public void IsBlockedTests()
        {
            TestDbProvider.Verify(
                verify: db => {
                foreach (ulong gid in MockData.Ids)
                {
                    foreach (ulong id in MockData.Ids)
                    {
                        Assert.That(this.Service.IsBlocked("a", gid, id, null), Is.False);
                        Assert.That(this.Service.IsBlocked("a", gid, id, MockData.Ids[0]), Is.False);
                    }
                }
            }
                );

            TestDbProvider.SetupAndVerify(
                setup: db => this.AddMockRules(db),
                verify: db => {
                this.AssertIsBlocked(MockData.Ids[0], "a", blocked: new[] { MockData.Ids[0], MockData.Ids[2] });
                this.AssertIsBlocked(MockData.Ids[0], "b", blocked: MockData.Ids);
                this.AssertIsBlocked(MockData.Ids[0], "c", allowed: new[] { MockData.Ids[0] });
                this.AssertIsBlocked(MockData.Ids[0], "d", blocked: new[] { MockData.Ids[1] });
                this.AssertIsBlocked(MockData.Ids[0], "e", allowed: new[] { MockData.Ids[1] });
                this.AssertIsBlocked(MockData.Ids[0], "f", allowed: new[] { MockData.Ids[3] }, blocked: new[] { MockData.Ids[1] });
                this.AssertIsBlocked(MockData.Ids[0], "x", allowed: MockData.Ids);

                this.AssertIsBlocked(MockData.Ids[1], "a", blocked: new[] { MockData.Ids[0], MockData.Ids[2] });
                this.AssertIsBlocked(MockData.Ids[1], "a b", blocked: new[] { MockData.Ids[0] });
                this.AssertIsBlocked(MockData.Ids[1], "b", blocked: MockData.Ids);
                this.AssertIsBlocked(MockData.Ids[1], "b a", allowed: MockData.Ids);
                this.AssertIsBlocked(MockData.Ids[1], "b a c", blocked: MockData.Ids);
                this.AssertIsBlocked(MockData.Ids[1], "c", allowed: new[] { MockData.Ids[0] });
                this.AssertIsBlocked(MockData.Ids[1], "c d", blocked: MockData.Ids);
                this.AssertIsBlocked(MockData.Ids[1], "d", blocked: new[] { MockData.Ids[1] });
                this.AssertIsBlocked(MockData.Ids[1], "d e", allowed: MockData.Ids);
                this.AssertIsBlocked(MockData.Ids[1], "e", allowed: new[] { MockData.Ids[1] });
                this.AssertIsBlocked(MockData.Ids[1], "e f", blocked: MockData.Ids);
                this.AssertIsBlocked(MockData.Ids[1], "f", allowed: new[] { MockData.Ids[3] }, blocked: new[] { MockData.Ids[1] });
                this.AssertIsBlocked(MockData.Ids[1], "f g", blocked: new[] { MockData.Ids[1], MockData.Ids[3] });
                this.AssertIsBlocked(MockData.Ids[1], "g", allowed: new[] { MockData.Ids[1] });
                this.AssertIsBlocked(MockData.Ids[1], "g h", allowed: new[] { MockData.Ids[1] });
                this.AssertIsBlocked(MockData.Ids[1], "g h j", allowed: new[] { MockData.Ids[1], MockData.Ids[3] });
                this.AssertIsBlocked(MockData.Ids[1], "x", allowed: MockData.Ids);

                this.AssertIsBlocked(MockData.Ids[2], "a", blocked: MockData.Ids);
                this.AssertIsBlocked(MockData.Ids[2], "aaa", blocked: new[] { MockData.Ids[1] });
                this.AssertIsBlocked(MockData.Ids[2], "x", allowed: MockData.Ids);

                this.AssertIsBlocked(MockData.Ids[3], "x", allowed: MockData.Ids);
            }
                );
        }
        public void GetGuildPrefixTests()
        {
            string defPrefix = new BotConfig().Prefix;

            TestDbProvider.SetupAlterAndVerify(
                setup: db => this.SetMockGuildConfig(db),
                alter: db => this.Service.LoadData(),
                verify: db => {
                Assert.That(this.Service.GetGuildPrefix(MockData.Ids[0]), Is.EqualTo(this.gcfg[MockData.Ids[0]].Prefix));
                Assert.That(this.Service.GetGuildPrefix(MockData.Ids[1]), Is.EqualTo(defPrefix));
                Assert.That(this.Service.GetGuildPrefix(MockData.Ids[2]), Is.EqualTo(defPrefix));
                Assert.That(this.Service.GetGuildPrefix(1), Is.EqualTo(defPrefix));
            }
                );
        }
示例#22
0
        public void GetCommandUsageExamplesTests()
        {
            TestDbProvider.SetupAlterAndVerify(
                setup: db => {
                GuildConfig gcfg = db.Configs.Find((long)MockData.Ids[0]);
                gcfg.Locale      = this.EnLocale;
                db.Configs.Update(gcfg);
            },
                alter: db => {
                this.Configs.LoadData();
                this.Localization.LoadData(this.ValidTestDataPath);
                this.Service.LoadData(this.ValidTestDataPath);
            },
                verify: db => {
                Assert.That(this.Service.GetCommandUsageExamples(MockData.Ids[0], "cmd1"), Is.EqualTo(new[] { "!cmd1", "!cmd1 @User" }));
                Assert.That(this.Service.GetCommandUsageExamples(MockData.Ids[0], "cmd2"), Is.EqualTo(new[] { "!cmd2", "!cmd2 @Member Reason reason" }));
                Assert.That(this.Service.GetCommandUsageExamples(MockData.Ids[0], "cmd1 subcommand"), Is.EqualTo(new[] { "!cmd1 subcommand", "!cmd1 subcommand @User" }));
                Assert.That(() => this.Service.GetCommandUsageExamples(MockData.Ids[0], "does not exist"), Throws.InstanceOf <KeyNotFoundException>());
                Assert.That(this.Service.GetCommandUsageExamples(MockData.Ids[1], "cmd1"), Is.EqualTo(new[] { "!cmd1", "!cmd1 @User" }));
                Assert.That(this.Service.GetCommandUsageExamples(MockData.Ids[1], "cmd2"), Is.EqualTo(new[] { "!cmd2", "!cmd2 @Member Reason reason" }));
                Assert.That(this.Service.GetCommandUsageExamples(MockData.Ids[1], "cmd1 subcommand"), Is.EqualTo(new[] { "!cmd1 subcommand", "!cmd1 subcommand @User" }));
                Assert.That(() => this.Service.GetCommandUsageExamples(MockData.Ids[1], "does not exist"), Throws.InstanceOf <KeyNotFoundException>());
            }
                );

            TestDbProvider.SetupAlterAndVerify(
                setup: db => {
                GuildConfig gcfg = db.Configs.Find((long)MockData.Ids[1]);
                gcfg.Locale      = this.SrLocale;
                db.Configs.Update(gcfg);
            },
                alter: db => {
                this.Configs.LoadData();
                this.Localization.LoadData(this.ValidTestDataPath);
                this.Service.LoadData(this.ValidTestDataPath);
            },
                verify: db => {
                Assert.That(this.Service.GetCommandUsageExamples(MockData.Ids[0], "cmd1"), Is.EqualTo(new[] { "!cmd1", "!cmd1 @User" }));
                Assert.That(this.Service.GetCommandUsageExamples(MockData.Ids[0], "cmd2"), Is.EqualTo(new[] { "!cmd2", "!cmd2 @Member Reason reason" }));
                Assert.That(this.Service.GetCommandUsageExamples(MockData.Ids[0], "cmd1 subcommand"), Is.EqualTo(new[] { "!cmd1 subcommand", "!cmd1 subcommand @User" }));
                Assert.That(() => this.Service.GetCommandUsageExamples(MockData.Ids[0], "does not exist"), Throws.InstanceOf <KeyNotFoundException>());
                Assert.That(this.Service.GetCommandUsageExamples(MockData.Ids[1], "cmd1"), Is.EqualTo(new[] { "!cmd1", "!cmd1 @Korisnik" }));
                Assert.That(this.Service.GetCommandUsageExamples(MockData.Ids[1], "cmd2"), Is.EqualTo(new[] { "!cmd2", "!cmd2 @Clan Razlog razlog" }));
                Assert.That(this.Service.GetCommandUsageExamples(MockData.Ids[1], "cmd1 subcommand"), Is.EqualTo(new[] { "!cmd1 subcommand", "!cmd1 subcommand @Korisnik" }));
                Assert.That(() => this.Service.GetCommandUsageExamples(MockData.Ids[1], "does not exist"), Throws.InstanceOf <KeyNotFoundException>());
            }
                );
        }
        public async Task ClearAsyncTests()
        {
            await TestDbProvider.SetupAlterAndVerifyAsync(
                setup : db => {
                this.AddMockData(db);
                return(Task.CompletedTask);
            },
                alter : db => this.Service.ClearAsync(MockData.Ids[0]),
                verify : db => {
                IReadOnlyList <ulong> all = this.Service.GetIds(MockData.Ids[0]);
                Assert.That(all, Is.Empty);
                Assert.That(this.Service.GroupSelector(db.AutoRoles, MockData.Ids[0]), Is.Empty);
                IReadOnlyList <ulong> gid1 = this.Service.GetIds(MockData.Ids[1]);
                Assert.That(gid1, Is.EqualTo(new[] { MockData.Ids[2] }));
                Assert.That(this.GetGuildRoles(db, MockData.Ids[1]), Is.EquivalentTo(new[] { MockData.Ids[2] }));
                return(Task.CompletedTask);
            }
                );

            int bef = 0;
            await TestDbProvider.SetupAlterAndVerifyAsync(
                setup : db => {
                this.AddMockData(db);
                return(Task.CompletedTask);
            },
                alter : async db => {
                bef = db.AutoRoles.Count();
                await this.Service.ClearAsync(MockData.Ids[3]);
            },
                verify : db => {
                Assert.That(db.AutoRoles, Has.Exactly(bef).Items);
                return(Task.CompletedTask);
            }
                );

            await TestDbProvider.SetupAlterAndVerifyAsync(
                setup : db => Task.CompletedTask,
                alter : db => this.Service.ClearAsync(MockData.Ids[0]),
                verify : db => {
                foreach (ulong id in MockData.Ids)
                {
                    IReadOnlyList <ulong> all = this.Service.GetIds(id);
                    Assert.That(all, Is.Empty);
                }
                return(Task.CompletedTask);
            }
                );
        }
        public void GetGuildEmojiReactionsTests()
        {
            Assert.That(this.Service.GetGuildEmojiReactions(MockData.Ids[0]), Is.Empty);

            TestDbProvider.AlterAndVerify(
                alter: db => this.Service.LoadData(),
                verify: db => {
                for (int i = 0; i < MockData.Ids.Count; i++)
                {
                    AssertGuildReactionCount(i, 0);
                }
            }
                );

            TestDbProvider.SetupAlterAndVerify(
                setup: db => this.AddMockReactions(db),
                alter: db => {
                this.UpdateEmojiReactionCount(db);
                this.Service.LoadData();
            },
                verify: db => {
                for (int i = 0; i < MockData.Ids.Count; i++)
                {
                    AssertGuildReactionCount(i, this.erCount[i]);
                }
                IReadOnlyCollection <EmojiReaction> ers = this.Service.GetGuildEmojiReactions(MockData.Ids[1]);
                Assert.That(ers.Single(er => er.Response == Emojis.Cake.GetDiscordName() && er.Triggers.Single() == "abc"), Is.Not.Null);
                Assert.That(ers.Single(er => er.Response == Emojis.ArrowUp.GetDiscordName() && er.Triggers.Single() == "abc"), Is.Not.Null);
                Assert.That(ers.Single(er => er.Response == Emojis.ArrowDown.GetDiscordName() && er.Triggers.Single() == "abc"), Is.Not.Null);
            }
                );


            void AssertGuildReactionCount(int id, int count)
            {
                IReadOnlyCollection <EmojiReaction> ers = this.Service.GetGuildEmojiReactions(MockData.Ids[id]);

                Assert.That(ers, Has.Exactly(count).Items);
                Assert.That(ers.Select(er => er.Id), Is.Unique);
                foreach (IEnumerable <string> triggers in ers.Select(er => er.Triggers))
                {
                    Assert.That(triggers, Is.Not.Empty);
                }
            }
        }
        public void GetGuildTextReactionsTests()
        {
            Assert.That(this.Service.GetGuildTextReactions(MockData.Ids[0]), Is.Empty);

            TestDbProvider.AlterAndVerify(
                alter: db => this.Service.LoadData(),
                verify: db => {
                for (int i = 0; i < MockData.Ids.Count; i++)
                {
                    AssertGuildReactionCount(i, 0);
                }
            }
                );

            TestDbProvider.SetupAlterAndVerify(
                setup: db => this.AddMockReactions(db),
                alter: db => {
                this.UpdateTextReactionCount(db);
                this.Service.LoadData();
            },
                verify: db => {
                for (int i = 0; i < MockData.Ids.Count; i++)
                {
                    AssertGuildReactionCount(i, this.trCount[i]);
                }
                IReadOnlyCollection <TextReaction> trs = this.Service.GetGuildTextReactions(MockData.Ids[1]);
                Assert.That(trs.Single(tr => tr.Response == "response12" && tr.Triggers.Single() == "y u do dis"), Is.Not.Null);
                Assert.That(trs.Single(tr => tr.Response == "response23" && tr.Triggers.Single() == "rick"), Is.Not.Null);
                Assert.That(trs.Single(tr => tr.Response == "response34" && tr.Triggers.Single() == "astley"), Is.Not.Null);
            }
                );


            void AssertGuildReactionCount(int id, int count)
            {
                IReadOnlyCollection <TextReaction> trs = this.Service.GetGuildTextReactions(MockData.Ids[id]);

                Assert.That(trs, Has.Exactly(count).Items);
                Assert.That(trs.Select(tr => tr.Id), Is.Unique);
                foreach (IEnumerable <string> triggers in trs.Select(tr => tr.Triggers))
                {
                    Assert.That(triggers, Is.Not.Empty);
                }
            }
        }
        public void GetTests()
        {
            TestDbProvider.AlterAndVerify(
                alter: _ => { },
                verify: db => {
                IReadOnlyList <ulong> all = this.Service.GetIds();
                Assert.That(all, Is.Empty);
            }
                );

            TestDbProvider.SetupAlterAndVerify(
                setup: db => this.AddMockData(db),
                alter: _ => { },
                verify: db => {
                IReadOnlyList <ulong> all = this.Service.GetIds();
                Assert.That(all, Is.EqualTo(new[] { MockData.Ids[0], MockData.Ids[1] }));
            }
                );
        }
 public void GetGuildLocaleTests()
 {
     TestDbProvider.SetupAlterAndVerify(
         setup: db => {
         GuildConfig gcfg = db.Configs.Find((long)MockData.Ids[1]);
         gcfg.Locale      = this.SrLocale;
         db.Configs.Update(gcfg);
     },
         alter: db => {
         this.Configs.LoadData();
         this.Service.LoadData(this.ValidTestDataPath);
     },
         verify: db => {
         Assert.That(this.Service.GetGuildLocale(MockData.Ids[0]), Is.EqualTo(this.EnLocale));
         Assert.That(this.Service.GetGuildLocale(MockData.Ids[1]), Is.EqualTo(this.SrLocale));
         Assert.That(this.Service.GetGuildLocale(1), Is.EqualTo(this.EnLocale));
     }
         );
 }
示例#28
0
        public async Task AddAsyncTests()
        {
            await TestDbProvider.AlterAndVerifyAsync(
                alter : _ => this.Service.AddRuleAsync(MockData.Ids[0], "a", false, MockData.Ids[1]),
                verify : _ => {
                this.AssertIsBlocked(MockData.Ids[0], "a", blocked: new[] { MockData.Ids[1] });
                return(Task.CompletedTask);
            }
                );

            await TestDbProvider.AlterAndVerifyAsync(
                alter : _ => this.Service.AddRuleAsync(MockData.Ids[0], "a", true, MockData.Ids[1]),
                verify : db => {
                this.AssertIsBlocked(MockData.Ids[0], "a", allowed: new[] { MockData.Ids[1] });
                return(Task.CompletedTask);
            }
                );

            // TODO
        }
示例#29
0
        public void GetGuildForbiddenNamesTests()
        {
            TestDbProvider.Verify(
                db => {
                foreach (ulong id in MockData.Ids)
                {
                    Assert.That(this.Service.GetGuildForbiddenNames(id), Is.Empty);
                }
            }
                );

            TestDbProvider.Verify(
                db => {
                for (int i = 0; i < MockData.Ids.Count; i++)
                {
                    this.AssertGuildForbiddenNameCount(db, i, 0);
                }
            }
                );

            TestDbProvider.SetupAndVerify(
                setup: db => this.AddMockForbiddenNames(db),
                verify: db => {
                this.AssertGuildForbiddenNameCount(db, 0, 5);
                this.AssertGuildForbiddenNameCount(db, 1, 3);
                this.AssertGuildForbiddenNameCount(db, 2, 3);
                this.AssertGuildForbiddenNameCount(db, 3, 0);

                this.AssertSingleAndTest(db, 0, regex: "fish", match: true, "fish", "this is just a fish", "my name is mr.Fishy, and I swim.");
                this.AssertSingleAndTest(db, 0, regex: "fish", match: false, "fi sh", "f1sh");
                this.AssertSingleAndTest(db, 0, regex: "dog(e|gy)?", match: true, "doge", "what a cute doggy you have", "your DoGs bite?");
                this.AssertSingleAndTest(db, 0, regex: "dog(e|gy)?", match: false, "does your D0Gge bite?");
                this.AssertSingleAndTest(db, 1, regex: "cat", match: true, "cat", "a CaT abc", "play with my Cat.", "cat-dog");
                this.AssertSingleAndTest(db, 1, regex: "cat", match: false, "do you have any c@ts");
                this.AssertSingleAndTest(db, 2, regex: "no-way", match: true, "no-way", "there can be No-way!", "oh no-way-!");
                this.AssertSingleAndTest(db, 2, regex: "no-way", match: false, "nope-way", "no way");
                this.AssertSingleAndTest(db, 2, regex: @"dot\.com", match: true, "*****@*****.**", "dot.dot.coms", "dot.com.com", "dot-me-dot.com");
                this.AssertSingleAndTest(db, 2, regex: @"dot\.com", match: false, "dot-com");
            }
                );
        }
 public async Task RemoveAllEmojiReactionsTests()
 {
     await TestDbProvider.SetupAlterAndVerifyAsync(
         setup : db => {
         this.AddMockReactions(db);
         return(Task.CompletedTask);
     },
         alter : async db => {
         this.UpdateEmojiReactionCount(db);
         this.Service.LoadData();
         Assert.That(await this.Service.RemoveEmojiReactionsAsync(MockData.Ids[1]), Is.EqualTo(3));
         Assert.That(await this.Service.RemoveEmojiReactionsAsync(MockData.Ids[1]), Is.EqualTo(0));
     },
         verify : db => {
         Assert.That(db.EmojiReactions, Has.Exactly(this.erCount.Sum(kvp => kvp.Value) - 3).Items);
         Assert.That(this.Service.GetGuildEmojiReactions(MockData.Ids[0]), Has.Exactly(this.erCount[0]).Items);
         Assert.That(this.Service.GetGuildEmojiReactions(MockData.Ids[1]), Is.Empty);
         Assert.That(db.EmojiReactions.Select(tr => tr.GuildId), Does.Not.Contain(MockData.Ids[1]));
         return(Task.CompletedTask);
     }
         );
 }