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
20#[cfg(test)]
21mod tests {
22    use super::*;
23
24    #[test]
25    fn test_final_transaction_statuses_contains_expected_values() {
26        assert_eq!(FINAL_TRANSACTION_STATUSES.len(), 4);
27        assert!(FINAL_TRANSACTION_STATUSES.contains(&TransactionStatus::Canceled));
28        assert!(FINAL_TRANSACTION_STATUSES.contains(&TransactionStatus::Confirmed));
29        assert!(FINAL_TRANSACTION_STATUSES.contains(&TransactionStatus::Failed));
30        assert!(FINAL_TRANSACTION_STATUSES.contains(&TransactionStatus::Expired));
31    }
32
33    #[test]
34    fn test_final_transaction_statuses_excludes_non_final_states() {
35        assert!(!FINAL_TRANSACTION_STATUSES.contains(&TransactionStatus::Pending));
36        assert!(!FINAL_TRANSACTION_STATUSES.contains(&TransactionStatus::Sent));
37        assert!(!FINAL_TRANSACTION_STATUSES.contains(&TransactionStatus::Submitted));
38        assert!(!FINAL_TRANSACTION_STATUSES.contains(&TransactionStatus::Mined));
39    }
40}