twilight_model/guild/audit_log/
change_key.rs

1use serde::{Deserialize, Serialize};
2use std::fmt::{Display, Formatter, Result as FmtResult};
3
4/// Type of [`AuditLogChange`].
5///
6/// For additional information refer to [Discord Docs/Audit Log Change Key][1].
7///
8/// [`AuditLogChange`]: super::AuditLogChange
9/// [1]: https://discord.com/developers/docs/resources/audit-log#audit-log-change-object-audit-log-change-key
10#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
11#[non_exhaustive]
12#[serde(rename_all = "snake_case")]
13pub enum AuditLogChangeKey {
14    /// AFK voice channel for a guild.
15    AfkChannelId,
16    /// Timeout to cause a user to be moved to an AFK voice channel.
17    AfkTimeout,
18    /// Allowed permissions of a permission overwrite target.
19    Allow,
20    /// ID of an application.
21    ApplicationId,
22    /// Thread was archived or unarchived.
23    Archived,
24    /// Asset of a sticker.
25    ///
26    /// Empty string.
27    Asset,
28    /// Auto archive duration of a thread.
29    AutoArchiveDuration,
30    /// Availability of a sticker.
31    Available,
32    /// Hash of an avatar.
33    AvatarHash,
34    /// Hash of a guild banner.
35    BannerHash,
36    /// Bitrate of an audio channel.
37    Bitrate,
38    /// Channel for an invite code.
39    ChannelId,
40    /// Code of an invite.
41    Code,
42    /// Color of a role.
43    Color,
44    /// Permissions for a command were updated.
45    CommandId,
46    /// Member timeout state changed.
47    CommunicationDisabledUntil,
48    /// Whether a user is guild deafened.
49    Deaf,
50    /// Default auto archive duration for new threads.
51    DefaultAutoArchiveDuration,
52    /// Default message notification level for a guild.
53    DefaultMessageNotifications,
54    /// Denied permissions of a permission overwrite target.
55    Deny,
56    /// Description of a guild.
57    Description,
58    /// Hash of a guild's discovery splash.
59    DiscoverySplashHash,
60    /// Whether emoticons are enabled.
61    EnableEmoticons,
62    /// Entity type of guild scheduled event was changed.
63    EntityType,
64    /// Behavior of the expiration of an integration.
65    ExpireBehavior,
66    /// Grace period of the expiration of an integration.
67    ExpireGracePeriod,
68    /// Explicit content filter level of a guild.
69    ExplicitContentFilter,
70    /// Format type of a sticker.
71    FormatType,
72    /// Guild that a sticker is in.
73    GuildId,
74    /// Whether a role is hoisted.
75    Hoist,
76    /// Hash of a guild icon.
77    IconHash,
78    /// ID of an entity.
79    Id,
80    /// Hash of a guild scheduled event cover.
81    ImageHash,
82    /// Invitable state of a private thread.
83    Invitable,
84    /// ID of the user who created an invite.
85    InviterId,
86    /// Channel ID for a scheduled event changed.
87    Location,
88    /// Thread was locked or unlocked.
89    Locked,
90    /// Maximum age of an invite.
91    MaxAge,
92    /// Maximum uses of an invite.
93    MaxUses,
94    /// Whether a role can be mentioned in a message.
95    Mentionable,
96    /// Multi-Factor Authentication level required of a guild's moderators.
97    MfaLevel,
98    /// Whether a user is guild muted.
99    Mute,
100    /// Name of an entity such as a channel or role.
101    Name,
102    /// Nickname of a member.
103    Nick,
104    /// Whether a channel is NSFW.
105    Nsfw,
106    /// NSFW level of a guild.
107    NsfwLevel,
108    /// ID of the owner of a guild.
109    OwnerId,
110    /// Permission overwrites on a channel changed.
111    PermissionOverwrites,
112    /// Default permissions of a role.
113    Permissions,
114    /// Position of an entity such as a channel or role.
115    Position,
116    /// Preferred locale of a guild.
117    PreferredLocale,
118    /// Privacy level of a stage instance.
119    PrivacyLevel,
120    /// Number of days' worth of inactivity for a guild prune.
121    PruneDeleteDays,
122    /// ID of a guild's public updates channel.
123    PublicUpdatesChannelId,
124    /// Ratelimit per user in a textual channel.
125    RateLimitPerUser,
126    /// Region of a guild changed.
127    Region,
128    /// Role added to a user.
129    #[serde(rename = "$add")]
130    RoleAdded,
131    /// Role removed from a user.
132    #[serde(rename = "$remove")]
133    RoleRemoved,
134    /// ID of a guild's rules channel.
135    RulesChannelId,
136    /// Hash of a guild's splash.
137    SplashHash,
138    /// Status of guild scheduled event was changed.
139    Status,
140    /// ID of a guild's system channel.
141    SystemChannelId,
142    /// Related emoji of a sticker.
143    Tags,
144    /// Whether an invite is temporary.
145    Temporary,
146    /// Topic of a textual channel.
147    Topic,
148    /// Type of a created entity.
149    Type,
150    /// Role unicode emoji.
151    UnicodeEmoji,
152    /// Maximum number of users in a voice channel.
153    UserLimit,
154    /// Number of uses of an invite.
155    Uses,
156    /// Code of a guild's vanity invite.
157    VanityUrlCode,
158    /// Required verification level of new members in a guild.
159    VerificationLevel,
160    /// Channel ID of a widget.
161    WidgetChannelId,
162    /// Whether a widget is enabled.
163    WidgetEnabled,
164}
165
166impl AuditLogChangeKey {
167    /// Raw name of the key.
168    ///
169    /// The raw names of keys are in `snake_case` form.
170    ///
171    /// # Examples
172    ///
173    /// Check the names of the [`Allow`] and [`BannerHash`] keys:
174    ///
175    /// ```
176    /// use twilight_model::guild::audit_log::AuditLogChangeKey;
177    ///
178    /// assert_eq!("allow", AuditLogChangeKey::Allow.name());
179    /// assert_eq!("banner_hash", AuditLogChangeKey::BannerHash.name());
180    /// ```
181    ///
182    /// [`Allow`]: Self::Allow
183    /// [`BannerHash`]: Self::BannerHash
184    pub const fn name(self) -> &'static str {
185        match self {
186            Self::AfkChannelId => "afk_channel_id",
187            Self::AfkTimeout => "afk_timeout",
188            Self::Allow => "allow",
189            Self::ApplicationId => "application_id",
190            Self::Archived => "archived",
191            Self::Asset => "asset",
192            Self::AutoArchiveDuration => "auto_archive_duration",
193            Self::Available => "available",
194            Self::AvatarHash => "avatar_hash",
195            Self::BannerHash => "banner_hash",
196            Self::Bitrate => "bitrate",
197            Self::ChannelId => "channel_id",
198            Self::Code => "code",
199            Self::Color => "color",
200            Self::CommandId => "command_id",
201            Self::CommunicationDisabledUntil => "communication_disabled_until",
202            Self::Deaf => "deaf",
203            Self::DefaultAutoArchiveDuration => "default_auto_archive_duration",
204            Self::DefaultMessageNotifications => "default_message_notifications",
205            Self::Deny => "deny",
206            Self::Description => "description",
207            Self::DiscoverySplashHash => "discovery_splash_hash",
208            Self::EnableEmoticons => "enable_emoticons",
209            Self::EntityType => "entity_type",
210            Self::ExpireBehavior => "expire_behavior",
211            Self::ExpireGracePeriod => "expire_grace_period",
212            Self::ExplicitContentFilter => "explicit_content_filter",
213            Self::FormatType => "format_type",
214            Self::GuildId => "guild_id",
215            Self::Hoist => "hoist",
216            Self::IconHash => "icon_hash",
217            Self::Id => "id",
218            Self::ImageHash => "image_hash",
219            Self::Invitable => "invitable",
220            Self::InviterId => "inviter_id",
221            Self::Location => "location",
222            Self::Locked => "locked",
223            Self::MaxAge => "max_age",
224            Self::MaxUses => "max_uses",
225            Self::Mentionable => "mentionable",
226            Self::MfaLevel => "mfa_level",
227            Self::Mute => "mute",
228            Self::Name => "name",
229            Self::Nick => "nick",
230            Self::Nsfw => "nsfw",
231            Self::NsfwLevel => "nsfw_level",
232            Self::OwnerId => "owner_id",
233            Self::PermissionOverwrites => "permission_overwrites",
234            Self::Permissions => "permissions",
235            Self::Position => "position",
236            Self::PreferredLocale => "preferred_locale",
237            Self::PrivacyLevel => "privacy_level",
238            Self::PruneDeleteDays => "prune_delete_days",
239            Self::PublicUpdatesChannelId => "public_updates_channel_id",
240            Self::RateLimitPerUser => "rate_limit_per_user",
241            Self::Region => "region",
242            Self::RoleAdded => "$add",
243            Self::RoleRemoved => "$remove",
244            Self::RulesChannelId => "rules_channel_id",
245            Self::SplashHash => "splash_hash",
246            Self::Status => "status",
247            Self::SystemChannelId => "system_channel_id",
248            Self::Tags => "tags",
249            Self::Temporary => "temporary",
250            Self::Topic => "topic",
251            Self::Type => "type",
252            Self::UnicodeEmoji => "unicode_emoji",
253            Self::UserLimit => "user_limit",
254            Self::Uses => "uses",
255            Self::VanityUrlCode => "vanity_url_code",
256            Self::VerificationLevel => "verification_level",
257            Self::WidgetChannelId => "widget_channel_id",
258            Self::WidgetEnabled => "widget_enabled",
259        }
260    }
261}
262
263impl Display for AuditLogChangeKey {
264    fn fmt(&self, f: &mut Formatter<'_>) -> FmtResult {
265        f.write_str(self.name())
266    }
267}
268
269#[cfg(test)]
270mod tests {
271    use super::AuditLogChangeKey;
272    use serde::{Deserialize, Serialize};
273    use serde_test::Token;
274    use static_assertions::assert_impl_all;
275    use std::{
276        fmt::{Debug, Display},
277        hash::Hash,
278    };
279
280    assert_impl_all!(
281        AuditLogChangeKey: Clone,
282        Copy,
283        Debug,
284        Deserialize<'static>,
285        Display,
286        Eq,
287        Hash,
288        PartialEq,
289        Send,
290        Serialize,
291        Sync
292    );
293
294    #[test]
295    fn name() {
296        assert_eq!("afk_channel_id", AuditLogChangeKey::AfkChannelId.name());
297        assert_eq!("afk_timeout", AuditLogChangeKey::AfkTimeout.name());
298        assert_eq!("allow", AuditLogChangeKey::Allow.name());
299        assert_eq!("application_id", AuditLogChangeKey::ApplicationId.name());
300        assert_eq!("avatar_hash", AuditLogChangeKey::AvatarHash.name());
301        assert_eq!("banner_hash", AuditLogChangeKey::BannerHash.name());
302        assert_eq!("bitrate", AuditLogChangeKey::Bitrate.name());
303        assert_eq!("channel_id", AuditLogChangeKey::ChannelId.name());
304        assert_eq!("code", AuditLogChangeKey::Code.name());
305        assert_eq!("color", AuditLogChangeKey::Color.name());
306        assert_eq!("command_id", AuditLogChangeKey::CommandId.name());
307        assert_eq!(
308            "communication_disabled_until",
309            AuditLogChangeKey::CommunicationDisabledUntil.name()
310        );
311        assert_eq!("deaf", AuditLogChangeKey::Deaf.name());
312        assert_eq!(
313            "default_message_notifications",
314            AuditLogChangeKey::DefaultMessageNotifications.name()
315        );
316        assert_eq!("deny", AuditLogChangeKey::Deny.name());
317        assert_eq!("description", AuditLogChangeKey::Description.name());
318        assert_eq!(
319            "discovery_splash_hash",
320            AuditLogChangeKey::DiscoverySplashHash.name()
321        );
322        assert_eq!(
323            "enable_emoticons",
324            AuditLogChangeKey::EnableEmoticons.name()
325        );
326        assert_eq!("expire_behavior", AuditLogChangeKey::ExpireBehavior.name());
327        assert_eq!(
328            "expire_grace_period",
329            AuditLogChangeKey::ExpireGracePeriod.name()
330        );
331        assert_eq!(
332            "explicit_content_filter",
333            AuditLogChangeKey::ExplicitContentFilter.name()
334        );
335        assert_eq!("hoist", AuditLogChangeKey::Hoist.name());
336        assert_eq!("icon_hash", AuditLogChangeKey::IconHash.name());
337        assert_eq!("id", AuditLogChangeKey::Id.name());
338        assert_eq!("image_hash", AuditLogChangeKey::ImageHash.name());
339        assert_eq!("invitable", AuditLogChangeKey::Invitable.name());
340        assert_eq!("inviter_id", AuditLogChangeKey::InviterId.name());
341        assert_eq!("max_age", AuditLogChangeKey::MaxAge.name());
342        assert_eq!("max_uses", AuditLogChangeKey::MaxUses.name());
343        assert_eq!("mentionable", AuditLogChangeKey::Mentionable.name());
344        assert_eq!("mfa_level", AuditLogChangeKey::MfaLevel.name());
345        assert_eq!("mute", AuditLogChangeKey::Mute.name());
346        assert_eq!("name", AuditLogChangeKey::Name.name());
347        assert_eq!("nick", AuditLogChangeKey::Nick.name());
348        assert_eq!("nsfw_level", AuditLogChangeKey::NsfwLevel.name());
349        assert_eq!("owner_id", AuditLogChangeKey::OwnerId.name());
350        assert_eq!("permissions", AuditLogChangeKey::Permissions.name());
351        assert_eq!("position", AuditLogChangeKey::Position.name());
352        assert_eq!(
353            "preferred_locale",
354            AuditLogChangeKey::PreferredLocale.name()
355        );
356        assert_eq!("privacy_level", AuditLogChangeKey::PrivacyLevel.name());
357        assert_eq!(
358            "prune_delete_days",
359            AuditLogChangeKey::PruneDeleteDays.name()
360        );
361        assert_eq!(
362            "public_updates_channel_id",
363            AuditLogChangeKey::PublicUpdatesChannelId.name()
364        );
365        assert_eq!(
366            "rate_limit_per_user",
367            AuditLogChangeKey::RateLimitPerUser.name()
368        );
369        assert_eq!("$add", AuditLogChangeKey::RoleAdded.name());
370        assert_eq!("$remove", AuditLogChangeKey::RoleRemoved.name());
371        assert_eq!("rules_channel_id", AuditLogChangeKey::RulesChannelId.name());
372        assert_eq!("splash_hash", AuditLogChangeKey::SplashHash.name());
373        assert_eq!(
374            "system_channel_id",
375            AuditLogChangeKey::SystemChannelId.name()
376        );
377        assert_eq!("temporary", AuditLogChangeKey::Temporary.name());
378        assert_eq!("topic", AuditLogChangeKey::Topic.name());
379        assert_eq!("type", AuditLogChangeKey::Type.name());
380        assert_eq!("user_limit", AuditLogChangeKey::UserLimit.name());
381        assert_eq!("uses", AuditLogChangeKey::Uses.name());
382        assert_eq!("vanity_url_code", AuditLogChangeKey::VanityUrlCode.name());
383        assert_eq!(
384            "verification_level",
385            AuditLogChangeKey::VerificationLevel.name()
386        );
387        assert_eq!(
388            "widget_channel_id",
389            AuditLogChangeKey::WidgetChannelId.name()
390        );
391        assert_eq!("widget_enabled", AuditLogChangeKey::WidgetEnabled.name());
392    }
393
394    #[allow(clippy::too_many_lines)]
395    #[test]
396    fn serde() {
397        serde_test::assert_tokens(
398            &AuditLogChangeKey::AfkChannelId,
399            &[Token::UnitVariant {
400                name: "AuditLogChangeKey",
401                variant: "afk_channel_id",
402            }],
403        );
404        serde_test::assert_tokens(
405            &AuditLogChangeKey::AfkTimeout,
406            &[Token::UnitVariant {
407                name: "AuditLogChangeKey",
408                variant: "afk_timeout",
409            }],
410        );
411        serde_test::assert_tokens(
412            &AuditLogChangeKey::Allow,
413            &[Token::UnitVariant {
414                name: "AuditLogChangeKey",
415                variant: "allow",
416            }],
417        );
418        serde_test::assert_tokens(
419            &AuditLogChangeKey::ApplicationId,
420            &[Token::UnitVariant {
421                name: "AuditLogChangeKey",
422                variant: "application_id",
423            }],
424        );
425        serde_test::assert_tokens(
426            &AuditLogChangeKey::AvatarHash,
427            &[Token::UnitVariant {
428                name: "AuditLogChangeKey",
429                variant: "avatar_hash",
430            }],
431        );
432        serde_test::assert_tokens(
433            &AuditLogChangeKey::BannerHash,
434            &[Token::UnitVariant {
435                name: "AuditLogChangeKey",
436                variant: "banner_hash",
437            }],
438        );
439        serde_test::assert_tokens(
440            &AuditLogChangeKey::Bitrate,
441            &[Token::UnitVariant {
442                name: "AuditLogChangeKey",
443                variant: "bitrate",
444            }],
445        );
446        serde_test::assert_tokens(
447            &AuditLogChangeKey::ChannelId,
448            &[Token::UnitVariant {
449                name: "AuditLogChangeKey",
450                variant: "channel_id",
451            }],
452        );
453        serde_test::assert_tokens(
454            &AuditLogChangeKey::Code,
455            &[Token::UnitVariant {
456                name: "AuditLogChangeKey",
457                variant: "code",
458            }],
459        );
460        serde_test::assert_tokens(
461            &AuditLogChangeKey::Color,
462            &[Token::UnitVariant {
463                name: "AuditLogChangeKey",
464                variant: "color",
465            }],
466        );
467        serde_test::assert_tokens(
468            &AuditLogChangeKey::CommandId,
469            &[Token::UnitVariant {
470                name: "AuditLogChangeKey",
471                variant: "command_id",
472            }],
473        );
474        serde_test::assert_tokens(
475            &AuditLogChangeKey::CommunicationDisabledUntil,
476            &[Token::UnitVariant {
477                name: "AuditLogChangeKey",
478                variant: "communication_disabled_until",
479            }],
480        );
481        serde_test::assert_tokens(
482            &AuditLogChangeKey::Deaf,
483            &[Token::UnitVariant {
484                name: "AuditLogChangeKey",
485                variant: "deaf",
486            }],
487        );
488        serde_test::assert_tokens(
489            &AuditLogChangeKey::DefaultMessageNotifications,
490            &[Token::UnitVariant {
491                name: "AuditLogChangeKey",
492                variant: "default_message_notifications",
493            }],
494        );
495        serde_test::assert_tokens(
496            &AuditLogChangeKey::Deny,
497            &[Token::UnitVariant {
498                name: "AuditLogChangeKey",
499                variant: "deny",
500            }],
501        );
502        serde_test::assert_tokens(
503            &AuditLogChangeKey::Description,
504            &[Token::UnitVariant {
505                name: "AuditLogChangeKey",
506                variant: "description",
507            }],
508        );
509        serde_test::assert_tokens(
510            &AuditLogChangeKey::DiscoverySplashHash,
511            &[Token::UnitVariant {
512                name: "AuditLogChangeKey",
513                variant: "discovery_splash_hash",
514            }],
515        );
516        serde_test::assert_tokens(
517            &AuditLogChangeKey::EnableEmoticons,
518            &[Token::UnitVariant {
519                name: "AuditLogChangeKey",
520                variant: "enable_emoticons",
521            }],
522        );
523        serde_test::assert_tokens(
524            &AuditLogChangeKey::ExpireBehavior,
525            &[Token::UnitVariant {
526                name: "AuditLogChangeKey",
527                variant: "expire_behavior",
528            }],
529        );
530        serde_test::assert_tokens(
531            &AuditLogChangeKey::ExpireGracePeriod,
532            &[Token::UnitVariant {
533                name: "AuditLogChangeKey",
534                variant: "expire_grace_period",
535            }],
536        );
537        serde_test::assert_tokens(
538            &AuditLogChangeKey::ExplicitContentFilter,
539            &[Token::UnitVariant {
540                name: "AuditLogChangeKey",
541                variant: "explicit_content_filter",
542            }],
543        );
544        serde_test::assert_tokens(
545            &AuditLogChangeKey::Hoist,
546            &[Token::UnitVariant {
547                name: "AuditLogChangeKey",
548                variant: "hoist",
549            }],
550        );
551        serde_test::assert_tokens(
552            &AuditLogChangeKey::IconHash,
553            &[Token::UnitVariant {
554                name: "AuditLogChangeKey",
555                variant: "icon_hash",
556            }],
557        );
558        serde_test::assert_tokens(
559            &AuditLogChangeKey::Id,
560            &[Token::UnitVariant {
561                name: "AuditLogChangeKey",
562                variant: "id",
563            }],
564        );
565        serde_test::assert_tokens(
566            &AuditLogChangeKey::ImageHash,
567            &[Token::UnitVariant {
568                name: "AuditLogChangeKey",
569                variant: "image_hash",
570            }],
571        );
572        serde_test::assert_tokens(
573            &AuditLogChangeKey::Invitable,
574            &[Token::UnitVariant {
575                name: "AuditLogChangeKey",
576                variant: "invitable",
577            }],
578        );
579        serde_test::assert_tokens(
580            &AuditLogChangeKey::InviterId,
581            &[Token::UnitVariant {
582                name: "AuditLogChangeKey",
583                variant: "inviter_id",
584            }],
585        );
586        serde_test::assert_tokens(
587            &AuditLogChangeKey::MaxAge,
588            &[Token::UnitVariant {
589                name: "AuditLogChangeKey",
590                variant: "max_age",
591            }],
592        );
593        serde_test::assert_tokens(
594            &AuditLogChangeKey::MaxUses,
595            &[Token::UnitVariant {
596                name: "AuditLogChangeKey",
597                variant: "max_uses",
598            }],
599        );
600        serde_test::assert_tokens(
601            &AuditLogChangeKey::Mentionable,
602            &[Token::UnitVariant {
603                name: "AuditLogChangeKey",
604                variant: "mentionable",
605            }],
606        );
607        serde_test::assert_tokens(
608            &AuditLogChangeKey::MfaLevel,
609            &[Token::UnitVariant {
610                name: "AuditLogChangeKey",
611                variant: "mfa_level",
612            }],
613        );
614        serde_test::assert_tokens(
615            &AuditLogChangeKey::Mute,
616            &[Token::UnitVariant {
617                name: "AuditLogChangeKey",
618                variant: "mute",
619            }],
620        );
621        serde_test::assert_tokens(
622            &AuditLogChangeKey::Name,
623            &[Token::UnitVariant {
624                name: "AuditLogChangeKey",
625                variant: "name",
626            }],
627        );
628        serde_test::assert_tokens(
629            &AuditLogChangeKey::Nick,
630            &[Token::UnitVariant {
631                name: "AuditLogChangeKey",
632                variant: "nick",
633            }],
634        );
635        serde_test::assert_tokens(
636            &AuditLogChangeKey::NsfwLevel,
637            &[Token::UnitVariant {
638                name: "AuditLogChangeKey",
639                variant: "nsfw_level",
640            }],
641        );
642        serde_test::assert_tokens(
643            &AuditLogChangeKey::OwnerId,
644            &[Token::UnitVariant {
645                name: "AuditLogChangeKey",
646                variant: "owner_id",
647            }],
648        );
649        serde_test::assert_tokens(
650            &AuditLogChangeKey::Permissions,
651            &[Token::UnitVariant {
652                name: "AuditLogChangeKey",
653                variant: "permissions",
654            }],
655        );
656        serde_test::assert_tokens(
657            &AuditLogChangeKey::Position,
658            &[Token::UnitVariant {
659                name: "AuditLogChangeKey",
660                variant: "position",
661            }],
662        );
663        serde_test::assert_tokens(
664            &AuditLogChangeKey::PreferredLocale,
665            &[Token::UnitVariant {
666                name: "AuditLogChangeKey",
667                variant: "preferred_locale",
668            }],
669        );
670        serde_test::assert_tokens(
671            &AuditLogChangeKey::PrivacyLevel,
672            &[Token::UnitVariant {
673                name: "AuditLogChangeKey",
674                variant: "privacy_level",
675            }],
676        );
677        serde_test::assert_tokens(
678            &AuditLogChangeKey::PruneDeleteDays,
679            &[Token::UnitVariant {
680                name: "AuditLogChangeKey",
681                variant: "prune_delete_days",
682            }],
683        );
684        serde_test::assert_tokens(
685            &AuditLogChangeKey::PublicUpdatesChannelId,
686            &[Token::UnitVariant {
687                name: "AuditLogChangeKey",
688                variant: "public_updates_channel_id",
689            }],
690        );
691        serde_test::assert_tokens(
692            &AuditLogChangeKey::RateLimitPerUser,
693            &[Token::UnitVariant {
694                name: "AuditLogChangeKey",
695                variant: "rate_limit_per_user",
696            }],
697        );
698        serde_test::assert_tokens(
699            &AuditLogChangeKey::RoleAdded,
700            &[Token::UnitVariant {
701                name: "AuditLogChangeKey",
702                variant: "$add",
703            }],
704        );
705        serde_test::assert_tokens(
706            &AuditLogChangeKey::RoleRemoved,
707            &[Token::UnitVariant {
708                name: "AuditLogChangeKey",
709                variant: "$remove",
710            }],
711        );
712        serde_test::assert_tokens(
713            &AuditLogChangeKey::RulesChannelId,
714            &[Token::UnitVariant {
715                name: "AuditLogChangeKey",
716                variant: "rules_channel_id",
717            }],
718        );
719        serde_test::assert_tokens(
720            &AuditLogChangeKey::SplashHash,
721            &[Token::UnitVariant {
722                name: "AuditLogChangeKey",
723                variant: "splash_hash",
724            }],
725        );
726        serde_test::assert_tokens(
727            &AuditLogChangeKey::SystemChannelId,
728            &[Token::UnitVariant {
729                name: "AuditLogChangeKey",
730                variant: "system_channel_id",
731            }],
732        );
733        serde_test::assert_tokens(
734            &AuditLogChangeKey::Temporary,
735            &[Token::UnitVariant {
736                name: "AuditLogChangeKey",
737                variant: "temporary",
738            }],
739        );
740        serde_test::assert_tokens(
741            &AuditLogChangeKey::Topic,
742            &[Token::UnitVariant {
743                name: "AuditLogChangeKey",
744                variant: "topic",
745            }],
746        );
747        serde_test::assert_tokens(
748            &AuditLogChangeKey::Type,
749            &[Token::UnitVariant {
750                name: "AuditLogChangeKey",
751                variant: "type",
752            }],
753        );
754        serde_test::assert_tokens(
755            &AuditLogChangeKey::UserLimit,
756            &[Token::UnitVariant {
757                name: "AuditLogChangeKey",
758                variant: "user_limit",
759            }],
760        );
761        serde_test::assert_tokens(
762            &AuditLogChangeKey::Uses,
763            &[Token::UnitVariant {
764                name: "AuditLogChangeKey",
765                variant: "uses",
766            }],
767        );
768        serde_test::assert_tokens(
769            &AuditLogChangeKey::VanityUrlCode,
770            &[Token::UnitVariant {
771                name: "AuditLogChangeKey",
772                variant: "vanity_url_code",
773            }],
774        );
775        serde_test::assert_tokens(
776            &AuditLogChangeKey::VerificationLevel,
777            &[Token::UnitVariant {
778                name: "AuditLogChangeKey",
779                variant: "verification_level",
780            }],
781        );
782        serde_test::assert_tokens(
783            &AuditLogChangeKey::WidgetChannelId,
784            &[Token::UnitVariant {
785                name: "AuditLogChangeKey",
786                variant: "widget_channel_id",
787            }],
788        );
789        serde_test::assert_tokens(
790            &AuditLogChangeKey::WidgetEnabled,
791            &[Token::UnitVariant {
792                name: "AuditLogChangeKey",
793                variant: "widget_enabled",
794            }],
795        );
796    }
797}