Skip to content

Commit f035970

Browse files
committed
test: add tests for summing same tx totals and preventing duplicate tx entries
Signed-off-by: William Hankins <[email protected]>
1 parent 62b90dd commit f035970

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

modules/address_state/src/state.rs

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)