From 98631721fa94e4cfcd14f0d8de30694a618d4536 Mon Sep 17 00:00:00 2001 From: Sergio Chouhy Date: Tue, 22 Jul 2025 12:27:42 -0300 Subject: [PATCH] add test --- Cargo.lock | 1 + common/src/transaction.rs | 4 +- sequencer_core/Cargo.toml | 1 + .../src/sequencer_store/block_store.rs | 58 +++++++++++++++++++ 4 files changed, 62 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 78c4c62..e837cb3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4359,6 +4359,7 @@ dependencies = [ "serde", "serde_json", "storage", + "tempfile", ] [[package]] diff --git a/common/src/transaction.rs b/common/src/transaction.rs index 3f2dcb2..3d16fcd 100644 --- a/common/src/transaction.rs +++ b/common/src/transaction.rs @@ -15,7 +15,7 @@ pub type CipherText = Vec; pub type Nonce = GenericArray, B1>, B0>, B0>>; pub type Tag = u8; -#[derive(Debug, Serialize, Deserialize, Clone, Copy)] +#[derive(Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq)] pub enum TxKind { Public, Private, @@ -23,7 +23,7 @@ pub enum TxKind { Deshielded, } -#[derive(Debug, Serialize, Deserialize, Clone)] +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)] ///General transaction object pub struct Transaction { pub tx_kind: TxKind, diff --git a/sequencer_core/Cargo.toml b/sequencer_core/Cargo.toml index 14c047c..ebe3984 100644 --- a/sequencer_core/Cargo.toml +++ b/sequencer_core/Cargo.toml @@ -13,6 +13,7 @@ serde.workspace = true rand.workspace = true elliptic-curve.workspace = true k256.workspace = true +tempfile.workspace = true [dependencies.storage] path = "../storage" diff --git a/sequencer_core/src/sequencer_store/block_store.rs b/sequencer_core/src/sequencer_store/block_store.rs index e4611c5..1bd2bfd 100644 --- a/sequencer_core/src/sequencer_store/block_store.rs +++ b/sequencer_core/src/sequencer_store/block_store.rs @@ -70,3 +70,61 @@ fn block_to_transactions_map(block: &Block) -> HashMap { .map(|transaction| (transaction.hash(), block.block_id)) .collect() } + +#[cfg(test)] +mod tests { + use super::*; + use tempfile::tempdir; + + fn create_genesis_block_with_transaction() -> (Block, Transaction) { + let tx = Transaction { + tx_kind: common::transaction::TxKind::Public, + execution_input: Default::default(), + execution_output: Default::default(), + utxo_commitments_spent_hashes: Default::default(), + utxo_commitments_created_hashes: Default::default(), + nullifier_created_hashes: Default::default(), + execution_proof_private: Default::default(), + encoded_data: Default::default(), + ephemeral_pub_key: Default::default(), + commitment: Default::default(), + tweak: Default::default(), + secret_r: Default::default(), + sc_addr: Default::default(), + state_changes: Default::default(), + }; + ( + Block { + block_id: 0, + prev_block_id: 0, + prev_block_hash: [0; 32], + hash: [1; 32], + transactions: vec![tx.clone()], + data: vec![], + }, + tx, + ) + } + + #[test] + fn test_get_transaction_by_hash_for_existing_transaction() { + let temp_dir = tempdir().unwrap(); + let path = temp_dir.path(); + + let (block, tx) = create_genesis_block_with_transaction(); + let node_store = SequecerBlockStore::open_db_with_genesis(path, Some(block)).unwrap(); + let retrieved_tx = node_store.get_transaction_by_hash(tx.hash()); + assert_eq!(Some(tx), retrieved_tx); + } + + #[test] + fn test_get_transaction_by_hash_for_non_existent_transaction() { + let temp_dir = tempdir().unwrap(); + let path = temp_dir.path(); + + let (block, tx) = create_genesis_block_with_transaction(); + let node_store = SequecerBlockStore::open_db_with_genesis(path, Some(block)).unwrap(); + let retrieved_tx = node_store.get_transaction_by_hash([0; 32]); + assert_eq!(None, retrieved_tx); + } +}