drive/state_transition_action/identity/identity_credit_transfer/
mod.rs1pub mod transformer;
3pub mod v0;
5
6use crate::state_transition_action::identity::identity_credit_transfer::v0::IdentityCreditTransferTransitionActionV0;
7use derive_more::From;
8use dpp::fee::Credits;
9use dpp::platform_value::Identifier;
10use dpp::prelude::{IdentityNonce, UserFeeIncrease};
11
12#[derive(Debug, Clone, From)]
14pub enum IdentityCreditTransferTransitionAction {
15 V0(IdentityCreditTransferTransitionActionV0),
17}
18
19impl IdentityCreditTransferTransitionAction {
20 pub fn nonce(&self) -> IdentityNonce {
22 match self {
23 IdentityCreditTransferTransitionAction::V0(transition) => transition.nonce,
24 }
25 }
26
27 pub fn transfer_amount(&self) -> Credits {
29 match self {
30 IdentityCreditTransferTransitionAction::V0(transition) => transition.transfer_amount,
31 }
32 }
33
34 pub fn identity_id(&self) -> Identifier {
36 match self {
37 IdentityCreditTransferTransitionAction::V0(transition) => transition.identity_id,
38 }
39 }
40
41 pub fn recipient_id(&self) -> Identifier {
43 match self {
44 IdentityCreditTransferTransitionAction::V0(transition) => transition.recipient_id,
45 }
46 }
47
48 pub fn user_fee_increase(&self) -> UserFeeIncrease {
50 match self {
51 IdentityCreditTransferTransitionAction::V0(transition) => transition.user_fee_increase,
52 }
53 }
54}
55
56#[cfg(test)]
57mod tests {
58 use super::*;
59 use crate::state_transition_action::identity::identity_credit_transfer::v0::IdentityCreditTransferTransitionActionV0;
60
61 fn make_v0() -> IdentityCreditTransferTransitionActionV0 {
62 IdentityCreditTransferTransitionActionV0 {
63 transfer_amount: 5000,
64 recipient_id: Identifier::from([0xBB; 32]),
65 identity_id: Identifier::from([0xAA; 32]),
66 nonce: 42,
67 user_fee_increase: 3,
68 }
69 }
70
71 #[test]
72 fn test_from_v0() {
73 let v0 = make_v0();
74 let action: IdentityCreditTransferTransitionAction = v0.into();
75 assert!(matches!(
76 action,
77 IdentityCreditTransferTransitionAction::V0(_)
78 ));
79 }
80
81 #[test]
82 fn test_nonce() {
83 let action = IdentityCreditTransferTransitionAction::V0(make_v0());
84 assert_eq!(action.nonce(), 42);
85 }
86
87 #[test]
88 fn test_transfer_amount() {
89 let action = IdentityCreditTransferTransitionAction::V0(make_v0());
90 assert_eq!(action.transfer_amount(), 5000);
91 }
92
93 #[test]
94 fn test_identity_id() {
95 let action = IdentityCreditTransferTransitionAction::V0(make_v0());
96 assert_eq!(action.identity_id(), Identifier::from([0xAA; 32]));
97 }
98
99 #[test]
100 fn test_recipient_id() {
101 let action = IdentityCreditTransferTransitionAction::V0(make_v0());
102 assert_eq!(action.recipient_id(), Identifier::from([0xBB; 32]));
103 }
104
105 #[test]
106 fn test_user_fee_increase() {
107 let action = IdentityCreditTransferTransitionAction::V0(make_v0());
108 assert_eq!(action.user_fee_increase(), 3);
109 }
110}