Skip to content

Commit

Permalink
fix(cache): update User on MemberUpdate (#2417)
Browse files Browse the repository at this point in the history
Closes: #2416
  • Loading branch information
itohatweb authored Feb 7, 2025
1 parent 4507b77 commit a216837
Showing 1 changed file with 51 additions and 1 deletion.
52 changes: 51 additions & 1 deletion twilight-cache-inmemory/src/event/member.rs
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ impl<CacheModels: CacheableModels> UpdateCache<CacheModels> for MemberUpdate {

if let Some(mut member) = cache.members.get_mut(&key) {
member.update_with_member_update(self);
cache.cache_user(Cow::Borrowed(&self.user), Some(self.guild_id));
}
}
}
Expand All @@ -182,7 +183,11 @@ impl<CacheModels: CacheableModels> UpdateCache<CacheModels> for MemberUpdate {
mod tests {
use crate::{test, DefaultInMemoryCache};
use std::borrow::Cow;
use twilight_model::{gateway::payload::incoming::MemberRemove, id::Id};
use twilight_model::{
gateway::payload::incoming::{MemberRemove, MemberUpdate},
guild::{Member, MemberFlags},
id::Id,
};

#[test]
fn cache_guild_member() {
Expand Down Expand Up @@ -284,4 +289,49 @@ mod tests {
});
assert!(!cache.users.contains_key(&user_id));
}

#[test]
fn member_update_updates_user() {
let user_id = Id::new(2);
let guild_id = Id::new(3);
let cache = DefaultInMemoryCache::new();

let member = Member {
avatar: None,
communication_disabled_until: None,
deaf: false,
flags: MemberFlags::empty(),
joined_at: None,
mute: false,
nick: None,
pending: false,
premium_since: None,
roles: Vec::new(),
user: test::user(user_id),
};

cache.cache_member(guild_id, member);

let mut updated_user = test::user(user_id);
updated_user.name = String::from("updated_username");

// Test that a member update also updates the user.
cache.update(&MemberUpdate {
avatar: None,
communication_disabled_until: None,
guild_id,
flags: None,
deaf: None,
joined_at: None,
mute: None,
nick: None,
pending: false,
premium_since: None,
roles: Vec::new(),
user: updated_user.clone(),
});

let cached_user = cache.user(user_id).unwrap();
assert_eq!(cached_user.value(), &updated_user);
}
}

0 comments on commit a216837

Please sign in to comment.