@@ -125,6 +125,11 @@ impl<N: Network> EventScanner<LatestEvents, N> {
125125
126126#[ cfg( test) ]
127127mod tests {
128+ use crate :: {
129+ block_range_scanner:: DEFAULT_BLOCK_CONFIRMATIONS ,
130+ event_scanner:: scanner:: DEFAULT_MAX_CONCURRENT_FETCHES ,
131+ } ;
132+
128133 use super :: * ;
129134 use alloy:: {
130135 eips:: BlockNumberOrTag ,
@@ -141,26 +146,26 @@ mod tests {
141146 . max_block_range ( 25 )
142147 . block_confirmations ( 5 )
143148 . from_block ( BlockNumberOrTag :: Number ( 50 ) )
144- . to_block ( BlockNumberOrTag :: Number ( 150 ) ) ;
149+ . to_block ( BlockNumberOrTag :: Number ( 150 ) )
150+ . max_concurrent_fetches ( 10 ) ;
145151
146152 assert_eq ! ( builder. block_range_scanner. max_block_range, 25 ) ;
147153 assert_eq ! ( builder. config. block_confirmations, 5 ) ;
154+ assert_eq ! ( builder. config. max_concurrent_fetches, 10 ) ;
148155 assert_eq ! ( builder. config. count, 3 ) ;
149156 assert_eq ! ( builder. config. from_block, BlockNumberOrTag :: Number ( 50 ) . into( ) ) ;
150157 assert_eq ! ( builder. config. to_block, BlockNumberOrTag :: Number ( 150 ) . into( ) ) ;
151158 }
152159
153160 #[ test]
154- fn test_latest_scanner_builder_with_different_block_types ( ) {
155- let builder = EventScannerBuilder :: latest ( 10 )
156- . from_block ( BlockNumberOrTag :: Earliest )
157- . to_block ( BlockNumberOrTag :: Latest )
158- . block_confirmations ( 20 ) ;
159-
160- assert_eq ! ( builder. config. from_block, BlockNumberOrTag :: Earliest . into( ) ) ;
161- assert_eq ! ( builder. config. to_block, BlockNumberOrTag :: Latest . into( ) ) ;
161+ fn test_latest_scanner_builder_with_default_values ( ) {
162+ let builder = EventScannerBuilder :: latest ( 10 ) ;
163+
164+ assert_eq ! ( builder. config. from_block, BlockNumberOrTag :: Latest . into( ) ) ;
165+ assert_eq ! ( builder. config. to_block, BlockNumberOrTag :: Earliest . into( ) ) ;
162166 assert_eq ! ( builder. config. count, 10 ) ;
163- assert_eq ! ( builder. config. block_confirmations, 20 ) ;
167+ assert_eq ! ( builder. config. max_concurrent_fetches, DEFAULT_MAX_CONCURRENT_FETCHES ) ;
168+ assert_eq ! ( builder. config. block_confirmations, DEFAULT_BLOCK_CONFIRMATIONS ) ;
164169 }
165170
166171 #[ test]
@@ -173,12 +178,15 @@ mod tests {
173178 . block_confirmations ( 5 )
174179 . block_confirmations ( 7 )
175180 . max_block_range ( 50 )
176- . max_block_range ( 60 ) ;
181+ . max_block_range ( 60 )
182+ . max_concurrent_fetches ( 10 )
183+ . max_concurrent_fetches ( 20 ) ;
177184
178185 assert_eq ! ( builder. config. count, 3 ) ;
179186 assert_eq ! ( builder. config. from_block, BlockNumberOrTag :: Number ( 20 ) . into( ) ) ;
180187 assert_eq ! ( builder. config. to_block, BlockNumberOrTag :: Number ( 200 ) . into( ) ) ;
181188 assert_eq ! ( builder. config. block_confirmations, 7 ) ;
189+ assert_eq ! ( builder. config. max_concurrent_fetches, 20 ) ;
182190 assert_eq ! ( builder. block_range_scanner. max_block_range, 60 ) ;
183191 }
184192
@@ -204,6 +212,15 @@ mod tests {
204212 }
205213 }
206214
215+ #[ tokio:: test]
216+ async fn returns_error_with_zero_max_concurrent_fetches ( ) {
217+ let provider = RootProvider :: < Ethereum > :: new ( RpcClient :: mocked ( Asserter :: new ( ) ) ) ;
218+ let result =
219+ EventScannerBuilder :: latest ( 10 ) . max_concurrent_fetches ( 0 ) . connect ( provider) . await ;
220+
221+ assert ! ( matches!( result, Err ( ScannerError :: InvalidMaxConcurrentFetches ) ) ) ;
222+ }
223+
207224 #[ tokio:: test]
208225 async fn test_latest_scanner_with_valid_block_hash ( ) {
209226 let anvil = Anvil :: new ( ) . try_spawn ( ) . unwrap ( ) ;
@@ -283,6 +300,17 @@ mod tests {
283300 }
284301 }
285302
303+ #[ tokio:: test]
304+ async fn accepts_zero_confirmations ( ) -> anyhow:: Result < ( ) > {
305+ let provider = RootProvider :: < Ethereum > :: new ( RpcClient :: mocked ( Asserter :: new ( ) ) ) ;
306+ let scanner =
307+ EventScannerBuilder :: latest ( 1 ) . block_confirmations ( 0 ) . connect ( provider) . await ?;
308+
309+ assert_eq ! ( scanner. config. block_confirmations, 0 ) ;
310+
311+ Ok ( ( ) )
312+ }
313+
286314 #[ tokio:: test]
287315 async fn test_latest_scanner_with_mixed_block_types ( ) {
288316 let anvil = Anvil :: new ( ) . try_spawn ( ) . unwrap ( ) ;
0 commit comments