private static TestContext CreateContext() { var connection = new SqliteConnection("DataSource=:memory:"); connection.Open(); var services = new ServiceCollection(); var user = new TestUser { Username = "******", Discriminator = "0001" }; var channel = new TestGuildTextChannel { Name = "general" }; var role = new TestRole(); var guild = new TestGuild { Channels = { channel }, Roles = { role } }; var guildUser = guild.AddMember(user); var data = new TestBotData { Users = { user }, Guilds = { guild } }; services.AddLocalizations(); services.AddCommand(builder => { builder.AddModule <FooModule>(); }); services.AddCommandEfCoreRepositories <TestDbContext>(); services.AddSingleton <IMessageContextAccessor, MessageContextAccessor>(); services.AddDbContext <TestDbContext>(builder => { builder.UseSqlite(connection); }); var provider = services.BuildTestServiceProvider(data); provider.GetRequiredService <TestDbContext>().Database.EnsureCreated(); return(new TestContext(connection) { PermissionManager = provider.GetRequiredService <IPermissionManager>(), Guild = guild, Channel = channel, User = guildUser, Role = role }); }
private static TestContext CreateContext() { var connection = new SqliteConnection("DataSource=:memory:"); connection.Open(); var services = new ServiceCollection(); var channel = new TestGuildTextChannel { Name = "general" }; var role = new TestRole(); var guild = new TestGuild { Channels = { channel }, Roles = { role } }; var data = new TestBotData { Guilds = { guild } }; services.AddLocalizations(); services.AddCommandEfCoreRepositories <TestDbContext>(); services.AddSingleton <IMessageContextAccessor, MessageContextAccessor>(); services.AddCommand(builder => { builder.AddModule <FooModule>(); builder.AddModule <CoreModule>(); builder.AddModule <DefaultModule>(); }); services.AddDbContext <TestDbContext>(builder => { builder.UseSqlite(connection); }); var provider = services.BuildTestServiceProvider(data); provider.GetRequiredService <TestDbContext>().Database.EnsureCreated(); return(new TestContext(connection) { ModuleManager = provider.GetRequiredService <IModuleManager>(), Channel = channel, Guild = guild }); }
public async Task ReadTypesAsync() { var user = new TestUser { Username = "******", Discriminator = "0001" }; var ambiguousUser1 = new TestUser { Username = "******", Discriminator = "0001" }; var ambiguousUser2 = new TestUser { Username = "******", Discriminator = "0002" }; var channel = new TestGuildTextChannel(); var role = new TestRole(); var guild = new TestGuild { Channels = { channel }, Roles = { role }, Members = { user, ambiguousUser1, ambiguousUser2 } }; var data = new TestBotData { Users = { user, ambiguousUser1, ambiguousUser2 }, Guilds = { guild } }; var collection = new ServiceCollection(); collection.AddArgumentWithParsers(); await using var provider = collection.BuildTestServiceProvider(data); var factory = provider.GetRequiredService <IArgumentReaderFactory>(); var reader = factory.Create($"Foo 'Foo Bar' <@{user.Id}> <#{channel.Id}> <@&{role.Id}> -100 100 Test Foo Bar Baz", guild.Id); Assert.Null(await reader.ReadUserMentionAsync()); Assert.Equal("Foo", reader.ReadUnsafeString()); Assert.Equal("Foo Bar", reader.ReadUnsafeString()); Assert.Equal(user, await reader.ReadUserMentionAsync()); Assert.Equal(channel, await reader.ReadGuildChannelAsync()); Assert.Equal(role, await reader.ReadRoleMentionAsync()); Assert.Equal(-100, reader.ReadInt64()); Assert.Equal(100u, reader.ReadUInt64()); Assert.Equal(user, await reader.ReadUserMentionAsync()); Assert.Equal("Foo Bar Baz", await reader.ReadRemainingAsync()); Assert.Null(reader.ReadUnsafeString()); reader.Reset(); Assert.Equal("Foo", reader.ReadUnsafeString()); reader = factory.Create("DuplicateName", guild.Id); await Assert.ThrowsAsync <AmbiguousArgumentMatchException>(async() => await reader.ReadUserMentionAsync()); }