diff options
| author | Austin Hellyer <[email protected]> | 2016-12-17 11:06:23 -0800 |
|---|---|---|
| committer | Austin Hellyer <[email protected]> | 2016-12-17 11:06:23 -0800 |
| commit | 933ee8914509e52c5119ced9f5d9d8f9644cfa63 (patch) | |
| tree | 6455269b1e763e74e8273613afce5fe14b69789e | |
| parent | Remove cache feature dependency for framework (diff) | |
| download | serenity-933ee8914509e52c5119ced9f5d9d8f9644cfa63.tar.xz serenity-933ee8914509e52c5119ced9f5d9d8f9644cfa63.zip | |
Make Id displays format u64 instead of a mention
Instead of mentioning the channel, role, or user on an Id display
format, format its inner u64 instead. Instead, use `Id::mention()` to
accomplish the equivilant.
| -rw-r--r-- | src/model/id.rs | 6 | ||||
| -rw-r--r-- | src/utils/message_builder.rs | 6 | ||||
| -rw-r--r-- | tests/test_formatters.rs | 69 |
3 files changed, 70 insertions, 11 deletions
diff --git a/src/model/id.rs b/src/model/id.rs index 0d337fb..04c15f7 100644 --- a/src/model/id.rs +++ b/src/model/id.rs @@ -203,19 +203,19 @@ impl From<User> for UserId { impl fmt::Display for UserId { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - fmt::Display::fmt(&self.mention(), f) + fmt::Display::fmt(&self.0, f) } } impl fmt::Display for RoleId { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - fmt::Display::fmt(&self.mention(), f) + fmt::Display::fmt(&self.0, f) } } impl fmt::Display for ChannelId { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - fmt::Display::fmt(&self.mention(), f) + fmt::Display::fmt(&self.0, f) } } diff --git a/src/utils/message_builder.rs b/src/utils/message_builder.rs index 5eadd19..a93468e 100644 --- a/src/utils/message_builder.rs +++ b/src/utils/message_builder.rs @@ -65,7 +65,7 @@ impl MessageBuilder { /// [`GuildChannel`]: ../model/struct.GuildChannel.html /// [Display implementation]: ../model/struct.ChannelId.html#method.fmt-1 pub fn channel<C: Into<ChannelId>>(mut self, channel: C) -> Self { - let _ = write!(self.0, "{}", channel.into()); + let _ = write!(self.0, "{}", channel.into().mention()); self } @@ -261,7 +261,7 @@ impl MessageBuilder { /// [`RoleId`]: ../model/struct.RoleId.html /// [Display implementation]: ../model/struct.RoleId.html#method.fmt-1 pub fn role<R: Into<RoleId>>(mut self, role: R) -> Self { - let _ = write!(self.0, "{}", role.into()); + let _ = write!(self.0, "{}", role.into().mention()); self } @@ -278,7 +278,7 @@ impl MessageBuilder { /// [`UserId`]: ../model/struct.UserId.html /// [Display implementation]: ../model/struct.UserId.html#method.fmt-1 pub fn user<U: Into<UserId>>(mut self, user: U) -> Self { - let _ = write!(self.0, "{}", user.into()); + let _ = write!(self.0, "{}", user.into().mention()); self } diff --git a/tests/test_formatters.rs b/tests/test_formatters.rs index 922fb41..91eb0f0 100644 --- a/tests/test_formatters.rs +++ b/tests/test_formatters.rs @@ -1,12 +1,71 @@ extern crate serenity; use serenity::model::*; +use serenity::utils::Colour; #[test] fn test_formatters() { - assert_eq!(format!("{}", ChannelId(1)), "<#1>"); - assert_eq!(format!("{}", EmojiId(2)), "2"); - assert_eq!(format!("{}", GuildId(3)), "3"); - assert_eq!(format!("{}", RoleId(4)), "<@&4>"); - assert_eq!(format!("{}", UserId(5)), "<@5>"); + assert_eq!(ChannelId(1).to_string(), "1"); + assert_eq!(EmojiId(2).to_string(), "2"); + assert_eq!(GuildId(3).to_string(), "3"); + assert_eq!(RoleId(4).to_string(), "4"); + assert_eq!(UserId(5).to_string(), "5"); +} + +#[test] +fn test_mention() { + let channel = Channel::Guild(GuildChannel { + bitrate: None, + guild_id: GuildId(1), + kind: ChannelType::Text, + id: ChannelId(4), + last_message_id: None, + last_pin_timestamp: None, + name: "a".to_owned(), + permission_overwrites: vec![], + position: 1, + topic: None, + user_limit: None, + }); + let emoji = Emoji { + id: EmojiId(5), + name: "a".to_owned(), + managed: true, + require_colons: true, + roles: vec![], + }; + let role = Role { + id: RoleId(2), + colour: Colour::rosewater(), + hoist: false, + managed: false, + mentionable: false, + name: "fake role".to_owned(), + permissions: Permissions::empty(), + position: 1, + }; + let user = User { + id: UserId(6), + avatar: None, + bot: false, + discriminator: "4132".to_owned(), + name: "fake".to_owned(), + }; + let member = Member { + deaf: false, + joined_at: "fake".to_owned(), + mute: false, + nick: None, + roles: vec![], + user: user.clone(), + }; + + assert_eq!(ChannelId(1).mention(), "<#1>"); + assert_eq!(channel.mention(), "<#4>"); + assert_eq!(emoji.mention(), "<:a:5>"); + assert_eq!(member.mention(), "<@6>"); + assert_eq!(role.mention(), "<@&2>"); + assert_eq!(role.id.mention(), "<@&2>"); + assert_eq!(user.mention(), "<@6>"); + assert_eq!(user.id.mention(), "<@6>"); } |