openzeppelin_relayer/constants/
transactions.rs

1//! Transaction-related constants
2//!
3//! This module contains generic transaction constants that apply across all chain types.
4//! Chain-specific constants are defined in their respective modules:
5//! - EVM constants: `crate::constants::evm_transaction`
6//! - Stellar constants: `crate::constants::stellar_transaction`
7
8use crate::models::TransactionStatus;
9
10/// Transaction statuses that are considered final states.
11/// These states indicate that a transaction has reached its terminal state
12/// and will not be processed further.
13pub const FINAL_TRANSACTION_STATUSES: &[TransactionStatus] = &[
14    TransactionStatus::Canceled,
15    TransactionStatus::Confirmed,
16    TransactionStatus::Failed,
17    TransactionStatus::Expired,
18];
19
20pub const PENDING_TRANSACTION_STATUSES: &[TransactionStatus] = &[
21    TransactionStatus::Pending,
22    TransactionStatus::Sent,
23    TransactionStatus::Submitted,
24];
25
26#[cfg(test)]
27mod tests {
28    use super::*;
29
30    #[test]
31    fn test_final_transaction_statuses_contains_expected_values() {
32        assert_eq!(FINAL_TRANSACTION_STATUSES.len(), 4);
33        assert!(FINAL_TRANSACTION_STATUSES.contains(&TransactionStatus::Canceled));
34        assert!(FINAL_TRANSACTION_STATUSES.contains(&TransactionStatus::Confirmed));
35        assert!(FINAL_TRANSACTION_STATUSES.contains(&TransactionStatus::Failed));
36        assert!(FINAL_TRANSACTION_STATUSES.contains(&TransactionStatus::Expired));
37    }
38
39    #[test]
40    fn test_final_transaction_statuses_excludes_non_final_states() {
41        assert!(!FINAL_TRANSACTION_STATUSES.contains(&TransactionStatus::Pending));
42        assert!(!FINAL_TRANSACTION_STATUSES.contains(&TransactionStatus::Sent));
43        assert!(!FINAL_TRANSACTION_STATUSES.contains(&TransactionStatus::Submitted));
44        assert!(!FINAL_TRANSACTION_STATUSES.contains(&TransactionStatus::Mined));
45    }
46
47    #[test]
48    fn test_pending_transaction_statuses_contains_expected_values() {
49        assert_eq!(PENDING_TRANSACTION_STATUSES.len(), 3);
50        assert!(PENDING_TRANSACTION_STATUSES.contains(&TransactionStatus::Pending));
51        assert!(PENDING_TRANSACTION_STATUSES.contains(&TransactionStatus::Sent));
52        assert!(PENDING_TRANSACTION_STATUSES.contains(&TransactionStatus::Submitted));
53    }
54
55    #[test]
56    fn test_pending_transaction_statuses_excludes_final_states() {
57        assert!(!PENDING_TRANSACTION_STATUSES.contains(&TransactionStatus::Canceled));
58        assert!(!PENDING_TRANSACTION_STATUSES.contains(&TransactionStatus::Confirmed));
59        assert!(!PENDING_TRANSACTION_STATUSES.contains(&TransactionStatus::Failed));
60        assert!(!PENDING_TRANSACTION_STATUSES.contains(&TransactionStatus::Expired));
61        assert!(!PENDING_TRANSACTION_STATUSES.contains(&TransactionStatus::Mined));
62    }
63}