@@ -420,4 +420,67 @@ mod tests {
420420
421421 Ok ( ( ) )
422422 }
423+
424+ #[ tokio:: test]
425+ async fn test_same_tx_deltas_sums_totals_in_volatile ( ) -> Result < ( ) > {
426+ let _ = tracing_subscriber:: fmt:: try_init ( ) ;
427+
428+ let mut state = setup_state_and_store ( ) . await ?;
429+
430+ let addr = dummy_address ( ) ;
431+ let delta_1 = UTxOIdentifier :: new ( 0 , 1 , 0 ) ;
432+ let delta_2 = UTxOIdentifier :: new ( 0 , 1 , 1 ) ;
433+
434+ state. volatile . epoch_start_block = 1 ;
435+
436+ state. apply_address_deltas ( & [ delta ( & addr, & delta_1, 1 ) , delta ( & addr, & delta_2, 1 ) ] ) ;
437+
438+ // Verify only 1 totals entry with delta of 2
439+ let volatile = state
440+ . volatile
441+ . window
442+ . back ( )
443+ . expect ( "Window should have a delta" )
444+ . get ( & addr)
445+ . expect ( "Entry should be populated" )
446+ . totals
447+ . as_ref ( )
448+ . expect ( "Totals should be populated" ) ;
449+
450+ assert_eq ! ( volatile. len( ) , 1 ) ;
451+ assert_eq ! ( volatile. first( ) . expect( "Should be populated" ) . lovelace, 2 ) ;
452+
453+ Ok ( ( ) )
454+ }
455+
456+ #[ tokio:: test]
457+ async fn test_same_tx_deltas_prevents_duplicate_identifier_in_volatile ( ) -> Result < ( ) > {
458+ let _ = tracing_subscriber:: fmt:: try_init ( ) ;
459+
460+ let mut state = setup_state_and_store ( ) . await ?;
461+
462+ let addr = dummy_address ( ) ;
463+ let delta_1 = UTxOIdentifier :: new ( 0 , 1 , 0 ) ;
464+ let delta_2 = UTxOIdentifier :: new ( 0 , 1 , 1 ) ;
465+
466+ state. volatile . epoch_start_block = 1 ;
467+
468+ state. apply_address_deltas ( & [ delta ( & addr, & delta_1, 1 ) , delta ( & addr, & delta_2, 1 ) ] ) ;
469+
470+ // Verify only 1 transactions entry
471+ let volatile = state
472+ . volatile
473+ . window
474+ . back ( )
475+ . expect ( "Window should have a delta" )
476+ . get ( & addr)
477+ . expect ( "Entry should be populated" )
478+ . transactions
479+ . as_ref ( )
480+ . expect ( "Transactions should be populated" ) ;
481+
482+ assert_eq ! ( volatile. len( ) , 1 ) ;
483+
484+ Ok ( ( ) )
485+ }
423486}
0 commit comments