diff --git a/lib/tests-tools/blocks-tests-tools/src/mocks.rs b/lib/tests-tools/blocks-tests-tools/src/mocks.rs
index 12a82525ae08f220e7536cd5da7b2e99c160ed73..5b3fe2f155c83d0dcb93e8ca742fa595de58457b 100644
--- a/lib/tests-tools/blocks-tests-tools/src/mocks.rs
+++ b/lib/tests-tools/blocks-tests-tools/src/mocks.rs
@@ -15,11 +15,13 @@
 
 //! Mocks for projects use dubp-block-doc
 
+use dubp_block_doc::block::BlockDocumentTrait;
 use dubp_block_doc::{BlockDocument, BlockDocumentV10};
 use dubp_common_doc::blockstamp::Blockstamp;
 use dubp_common_doc::{BlockHash, BlockNumber};
 use dubp_currency_params::CurrencyName;
 use dup_crypto::hashs::Hash;
+use dup_crypto::keys::{PubKey, Signator};
 
 /// Generate n mock blockstamps
 pub fn generate_blockstamps(n: usize) -> Vec<Blockstamp> {
@@ -55,20 +57,48 @@ pub fn gen_empty_timed_blocks_v10(n: usize, time_step: u64) -> Vec<BlockDocument
         .collect()
 }
 
-/// Generate empty timed block document
+/// Generate empty timed and issued and hashed block document
+/// (usefull for tests that need valid hashs and issuer and signature and median_time field)
+pub fn gen_empty_timed_issued_hashed_block_v10(
+    block_number: BlockNumber,
+    time: u64,
+    previous_issuer: PubKey,
+    previous_hash: Hash,
+    signator: &dup_crypto::keys::SignatorEnum,
+) -> BlockDocumentV10 {
+    let mut block = gen_empty_block_v10(block_number);
+    block.time = time;
+    block.issuers = vec![signator.public_key()];
+    block.previous_issuer = Some(previous_issuer);
+    block.previous_hash = Some(previous_hash);
+    block.inner_hash = Some(block.compute_inner_hash());
+    block.sign(signator);
+    block.hash = Some(block.compute_hash());
+    block
+}
+
+/// Generate empty timed block document with provided hashs
 /// (usefull for tests that only need blockstamp and median_time fields)
 pub fn gen_empty_timed_block_v10(
     blockstamp: Blockstamp,
     time: u64,
     previous_hash: Hash,
 ) -> BlockDocumentV10 {
+    let mut block = gen_empty_block_v10(blockstamp.id);
+    block.median_time = time;
+    block.previous_hash = Some(previous_hash);
+    block.hash = Some(blockstamp.hash);
+    block
+}
+
+fn gen_empty_block_v10(block_number: BlockNumber) -> BlockDocumentV10 {
     BlockDocumentV10 {
         version: 10,
         nonce: 0,
-        number: blockstamp.id,
+        number: block_number,
         pow_min: 0,
         time: 0,
-        median_time: time,
+        median_time: 0,
         members_count: 0,
         monetary_mass: 0,
         unit_base: 0,
@@ -78,9 +108,9 @@ pub fn gen_empty_timed_block_v10(
         currency: CurrencyName("test_currency".to_owned()),
         issuers: vec![],
         signatures: vec![],
-        hash: Some(blockstamp.hash),
+        hash: None,
         parameters: None,
-        previous_hash: Some(previous_hash),
+        previous_hash: None,
         previous_issuer: None,
         dividend: None,
         identities: vec![],