using Discord.Rest; using System.Linq; using System.Threading.Tasks; using Xunit; namespace Discord { public partial class Tests { internal static async Task Migration_CreateTextChannels(DiscordRestClient client, RestGuild guild) { var text1 = await guild.GetDefaultChannelAsync(); var text2 = await guild.CreateTextChannelAsync("text2"); var text3 = await guild.CreateTextChannelAsync("text3"); var text4 = await guild.CreateTextChannelAsync("text4"); var text5 = await guild.CreateTextChannelAsync("text5"); //Modify #general await text1.ModifyAsync(x => { x.Name = "text1"; x.Position = 1; x.Topic = "Topic1"; }); await text2.ModifyAsync(x => { x.Position = 2; }); await text3.ModifyAsync(x => { x.Topic = "Topic2"; }); await text4.ModifyAsync(x => { x.Position = 3; x.Topic = "Topic2"; }); await text5.ModifyAsync(x => { }); CheckTextChannels(guild, text1, text2, text3, text4, text5); } [Fact] public async Task TestTextChannels() { CheckTextChannels(_guild, (await _guild.GetTextChannelsAsync()).ToArray()); } private static void CheckTextChannels(RestGuild guild, params RestTextChannel[] textChannels) { Assert.Equal(textChannels.Length, 5); Assert.All(textChannels, x => { Assert.NotNull(x); Assert.NotEqual(x.Id, 0UL); Assert.True(x.Position >= 0); }); var text1 = textChannels.Where(x => x.Name == "text1").FirstOrDefault(); var text2 = textChannels.Where(x => x.Name == "text2").FirstOrDefault(); var text3 = textChannels.Where(x => x.Name == "text3").FirstOrDefault(); var text4 = textChannels.Where(x => x.Name == "text4").FirstOrDefault(); var text5 = textChannels.Where(x => x.Name == "text5").FirstOrDefault(); Assert.NotNull(text1); //Assert.True(text1.Id == guild.DefaultChannelId); Assert.Equal(text1.Position, 1); Assert.Equal(text1.Topic, "Topic1"); Assert.NotNull(text2); Assert.Equal(text2.Position, 2); Assert.Null(text2.Topic); Assert.NotNull(text3); Assert.Equal(text3.Topic, "Topic2"); Assert.NotNull(text4); Assert.Equal(text4.Position, 3); Assert.Equal(text4.Topic, "Topic2"); Assert.NotNull(text5); Assert.Null(text5.Topic); } internal static async Task Migration_CreateVoiceChannels(DiscordRestClient client, RestGuild guild) { var voice1 = await guild.CreateVoiceChannelAsync("voice1"); var voice2 = await guild.CreateVoiceChannelAsync("voice2"); var voice3 = await guild.CreateVoiceChannelAsync("voice3"); await voice1.ModifyAsync(x => { x.Bitrate = 96000; x.Position = 1; }); await voice2.ModifyAsync(x => { x.UserLimit = null; }); await voice3.ModifyAsync(x => { x.Bitrate = 8000; x.Position = 1; x.UserLimit = 16; }); CheckVoiceChannels(voice1, voice2, voice3); } [Fact] public async Task TestVoiceChannels() { CheckVoiceChannels((await _guild.GetVoiceChannelsAsync()).ToArray()); } private static void CheckVoiceChannels(params RestVoiceChannel[] voiceChannels) { Assert.Equal(voiceChannels.Length, 3); Assert.All(voiceChannels, x => { Assert.NotNull(x); Assert.NotEqual(x.Id, 0UL); Assert.NotEqual(x.UserLimit, 0); Assert.True(x.Bitrate > 0); Assert.True(x.Position >= 0); }); var voice1 = voiceChannels.Where(x => x.Name == "voice1").FirstOrDefault(); var voice2 = voiceChannels.Where(x => x.Name == "voice2").FirstOrDefault(); var voice3 = voiceChannels.Where(x => x.Name == "voice3").FirstOrDefault(); Assert.NotNull(voice1); Assert.Equal(voice1.Bitrate, 96000); Assert.Equal(voice1.Position, 1); Assert.NotNull(voice2); Assert.Equal(voice2.UserLimit, null); Assert.NotNull(voice3); Assert.Equal(voice3.Bitrate, 8000); Assert.Equal(voice3.Position, 1); Assert.Equal(voice3.UserLimit, 16); } } }