use super::*;
use decdn_incentive::buyer_pool_redb::RedbBuyerPoolStore;
#[test]
fn cached_pool_token_uses_persisted_row_and_skips_rpc() -> anyhow::Result<()> {
let dir = tempfile::tempdir()?;
let store = RedbBuyerPoolStore::open(&dir.path().join("data"))?;
let owner = Address::repeat_byte(0x11);
let token = Address::repeat_byte(0x22);
let deployment = Deployment {
chain_id: 421_614,
payment_pool: Address::repeat_byte(0x9c),
};
assert_eq!(cached_pool_token(&store, owner, deployment)?, None);
let state = BuyerPoolState::new(
B256::repeat_byte(0xAB),
deployment,
owner,
token,
U256::from(1_000u64),
);
store.record(&state)?;
assert_eq!(cached_pool_token(&store, owner, deployment)?, Some(token));
assert_eq!(
cached_pool_token(&store, Address::repeat_byte(0x33), deployment)?,
None
);
let other_address = Deployment {
payment_pool: Address::repeat_byte(0xDE),
..deployment
};
let other_chain = Deployment {
chain_id: 1,
..deployment
};
for foreign in [other_address, other_chain] {
assert_eq!(
cached_pool_token(&store, owner, foreign)?,
None,
"a row from another PaymentPool deployment must not seed the token cache \
({foreign:?})"
);
}
Ok(())
}