From bf7c4dc8a721339e910a28c1c6532e73b1e77f19 Mon Sep 17 00:00:00 2001 From: Chris Johnston Date: Thu, 29 Mar 2018 20:20:11 -0700 Subject: [PATCH] rewrite channel category tests to work with existing pattern --- test/Discord.Net.Tests/Tests.Channels.cs | 87 ++++++++++++++++-------- 1 file changed, 57 insertions(+), 30 deletions(-) diff --git a/test/Discord.Net.Tests/Tests.Channels.cs b/test/Discord.Net.Tests/Tests.Channels.cs index 407241f8c..46a3a8181 100644 --- a/test/Discord.Net.Tests/Tests.Channels.cs +++ b/test/Discord.Net.Tests/Tests.Channels.cs @@ -16,17 +16,28 @@ namespace Discord var text4 = await guild.CreateTextChannelAsync("text4"); var text5 = await guild.CreateTextChannelAsync("text5"); + // create a channel category + var cat1 = await guild.CreateCategoryChannelAsync("cat1"); + + if (text1 == null) + { + // the guild did not have a default channel, so make a new one + text1 = await guild.CreateTextChannelAsync("default"); + } + //Modify #general await text1.ModifyAsync(x => { x.Name = "text1"; x.Position = 1; x.Topic = "Topic1"; + x.CategoryId = cat1.Id; }); await text2.ModifyAsync(x => { x.Position = 2; + x.CategoryId = cat1.Id; }); await text3.ModifyAsync(x => { @@ -90,10 +101,13 @@ namespace Discord var voice2 = await guild.CreateVoiceChannelAsync("voice2"); var voice3 = await guild.CreateVoiceChannelAsync("voice3"); + var cat2 = await guild.CreateCategoryChannelAsync("cat2"); + await voice1.ModifyAsync(x => { x.Bitrate = 96000; x.Position = 1; + x.CategoryId = cat2.Id; }); await voice2.ModifyAsync(x => { @@ -104,6 +118,7 @@ namespace Discord x.Bitrate = 8000; x.Position = 1; x.UserLimit = 16; + x.CategoryId = cat2.Id; }); CheckVoiceChannels(voice1, voice2, voice3); @@ -143,49 +158,61 @@ namespace Discord } [Fact] - public Task TestChannelCategories() + public async Task TestChannelCategories() { - CheckChannelCategories(_client, _guild); + // (await _guild.GetVoiceChannelsAsync()).ToArray() + var channels = await _guild.GetCategoryChannelsAsync(); - return Task.CompletedTask; + await CheckChannelCategories(channels.ToArray(), (await _guild.GetChannelsAsync()).ToArray()); } - private async static void CheckChannelCategories(DiscordRestClient client, RestGuild guild) + private async Task CheckChannelCategories(RestCategoryChannel[] categories, RestGuildChannel[] allChannels) { - // create some channel categories - var cat1 = await guild.CreateCategoryChannelAsync("Cat1"); - var cat2 = await guild.CreateCategoryChannelAsync("Cat2"); + // 2 categories + Assert.Equal(categories.Length, 2); - var text1 = await guild.CreateTextChannelAsync("nestedText1"); - var voice1 = await guild.CreateVoiceChannelAsync("nestedVoice1"); - // set the text channel parent to Cat 1 - await text1.ModifyAsync(x => - { - x.CategoryId = cat1.Id; - }); + var cat1 = categories.Where(x => x.Name == "cat1").FirstOrDefault(); + var cat2 = categories.Where(x => x.Name == "cat2").FirstOrDefault(); - await voice1.ModifyAsync(x => - { - x.CategoryId = cat2.Id; - }); + Assert.NotNull(cat1); + Assert.NotNull(cat2); - // these shouldn't throw because they are not channel categories + // get text1, text2, ensure they have category id == cat1 + var text1 = allChannels.Where(x => x.Name == "text1").FirstOrDefault() as RestTextChannel; + var text2 = allChannels.Where(x => x.Name == "text2").FirstOrDefault() as RestTextChannel; - // assert that CategoryId works for text channels - Assert.Equal(text1.CategoryId, cat1.Id); - Assert.True(text1 is INestedChannel); - Assert.Equal((await (text1 as INestedChannel).GetCategoryAsync()).Id, cat1.Id); - Assert.Equal((await text1.GetCategoryAsync()).Id, cat1.Id); + Assert.NotNull(text1); + Assert.NotNull(text2); + + // check that CategoryID and .GetCategoryAsync work correctly + // for both of the text channels Assert.Equal(text1.CategoryId, cat1.Id); + var text1Cat = await text1.GetCategoryAsync(); + Assert.Equal(text1Cat.Id, cat1.Id); + Assert.Equal(text1Cat.Name, cat1.Name); + + Assert.Equal(text2.CategoryId, cat1.Id); + var text2Cat = await text2.GetCategoryAsync(); + Assert.Equal(text2Cat.Id, cat1.Id); + Assert.Equal(text2Cat.Name, cat1.Name); + + // do the same for the voice channels + var voice1 = allChannels.Where(x => x.Name == "voice1").FirstOrDefault() as RestVoiceChannel; + var voice3 = allChannels.Where(x => x.Name == "voice3").FirstOrDefault() as RestVoiceChannel; - // and for voice channels + Assert.NotNull(voice1); + Assert.NotNull(voice3); + Assert.Equal(voice1.CategoryId, cat2.Id); - Assert.True(voice1 is INestedChannel); - Assert.Equal((await (voice1 as INestedChannel).GetCategoryAsync()).Id, cat2.Id); - Assert.Equal((await voice1.GetCategoryAsync()).Id, cat2.Id); - Assert.Equal(voice1.CategoryId, cat1.Id); + var voice1Cat = await voice1.GetCategoryAsync(); + Assert.Equal(voice1Cat.Id, cat2.Id); + Assert.Equal(voice1Cat.Name, cat2.Name); + + Assert.Equal(voice3.CategoryId, cat2.Id); + var voice3Cat = await voice3.GetCategoryAsync(); + Assert.Equal(voice3Cat.Id, cat2.Id); + Assert.Equal(voice3Cat.Name, cat2.Name); - // incomplete test, could use more coverage of other methods } } }