Skip to content

Commit bdb71d9

Browse files
committed
tests: add regression test
1 parent c4d7bd2 commit bdb71d9

File tree

1 file changed

+124
-0
lines changed

1 file changed

+124
-0
lines changed

DisCatSharp.Tests/DisCatSharp.CopilotTests/Store/StoreGatewayDispatchFollowupRegressionTests.cs

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,130 @@ public async Task ThreadCreateEvent_MissingGuildCache_DoesNotThrowAndStillRaises
494494
Assert.False(client.GuildsInternal.ContainsKey(thread.GuildId.GetValueOrDefault()));
495495
}
496496

497+
[Fact]
498+
public async Task GuildCreateEvent_PopulatesGuildChannelCache()
499+
{
500+
var client = CreateClient();
501+
const ulong guildId = 804032421678153819;
502+
const ulong channelId = 9001;
503+
504+
var guild = new DiscordGuild
505+
{
506+
Id = guildId,
507+
Discord = client,
508+
MemberCount = 0
509+
};
510+
guild.ChannelsInternal[channelId] = new DiscordChannel
511+
{
512+
Id = channelId,
513+
GuildId = guildId,
514+
Name = "appeals-queue",
515+
Type = ChannelType.Text
516+
};
517+
518+
await client.OnGuildCreateEventAsync(guild, new JArray(), null);
519+
520+
var cachedGuild = client.GuildsInternal[guildId];
521+
var cachedChannel = cachedGuild.GetChannel(channelId);
522+
523+
Assert.NotNull(cachedChannel);
524+
Assert.Equal(guildId, cachedChannel!.GuildId);
525+
Assert.Same(client, cachedChannel.Discord);
526+
}
527+
528+
[Fact]
529+
public async Task GuildUpdateEvent_PreservesExistingGuildChannelCacheWhenPayloadOmitsChannels()
530+
{
531+
var client = CreateClient();
532+
const ulong guildId = 804032421678153819;
533+
const ulong channelId = 9001;
534+
535+
var guild = new DiscordGuild
536+
{
537+
Id = guildId,
538+
Discord = client,
539+
Name = "old-name"
540+
};
541+
guild.ChannelsInternal[channelId] = new DiscordChannel
542+
{
543+
Id = channelId,
544+
GuildId = guildId,
545+
Name = "appeals-queue",
546+
Type = ChannelType.Text,
547+
Discord = client
548+
};
549+
client.GuildsInternal[guildId] = guild;
550+
551+
var updatedGuild = new DiscordGuild
552+
{
553+
Id = guildId,
554+
Name = "new-name"
555+
};
556+
557+
await client.OnGuildUpdateEventAsync(updatedGuild, new JArray());
558+
559+
var cachedGuild = client.GuildsInternal[guildId];
560+
var cachedChannel = cachedGuild.GetChannel(channelId);
561+
562+
Assert.NotNull(cachedChannel);
563+
Assert.Equal("appeals-queue", cachedChannel!.Name);
564+
}
565+
566+
[Fact]
567+
public async Task ChannelCreateEvent_AddsChannelToCachedGuildChannelCache()
568+
{
569+
var client = CreateClient();
570+
const ulong guildId = 804032421678153819;
571+
const ulong channelId = 9001;
572+
573+
var guild = new DiscordGuild
574+
{
575+
Id = guildId,
576+
Discord = client
577+
};
578+
client.GuildsInternal[guildId] = guild;
579+
580+
var channel = new DiscordChannel
581+
{
582+
Id = channelId,
583+
GuildId = guildId,
584+
Name = "appeals-queue",
585+
Type = ChannelType.Text
586+
};
587+
588+
await client.OnChannelCreateEventAsync(channel);
589+
590+
Assert.Same(channel, guild.GetChannel(channelId));
591+
}
592+
593+
[Fact]
594+
public async Task ChannelDeleteEvent_RemovesChannelFromCachedGuildChannelCache()
595+
{
596+
var client = CreateClient();
597+
const ulong guildId = 804032421678153819;
598+
const ulong channelId = 9001;
599+
600+
var guild = new DiscordGuild
601+
{
602+
Id = guildId,
603+
Discord = client
604+
};
605+
var channel = new DiscordChannel
606+
{
607+
Id = channelId,
608+
GuildId = guildId,
609+
Name = "appeals-queue",
610+
Type = ChannelType.Text,
611+
Discord = client
612+
};
613+
guild.ChannelsInternal[channelId] = channel;
614+
client.GuildsInternal[guildId] = guild;
615+
616+
await client.OnChannelDeleteEventAsync(channel);
617+
618+
Assert.Null(guild.GetChannel(channelId));
619+
}
620+
497621
[Fact]
498622
public async Task ChannelCreate_MissingGuildCache_DoesNotThrowAndStillRaisesEvent()
499623
{

0 commit comments

Comments
 (0)