This PR addresses four issues related to event emissions and public getters across the escrow and oracle contracts. Each issue is implemented as a separate, focused commit for clarity and reviewability.
- Issue:
DataKey::MatchTimeoutwas used internally byexpire_matchbut had no public getter - Changes:
- Added
MatchTimeoutvariant toDataKeyenum intypes.rs - Implemented
pub fn get_match_timeout(env: Env) -> u32that returns the stored value orMATCH_TTL_LEDGERSas default - Added test
test_get_match_timeout_returns_default()verifying it returns the default value before any admin sets it
- Added
- Issue:
EscrowContract::initializeset oracle and admin silently with no on-chain event - Changes:
- Added event emission in
initialize():env.events().publish(("escrow", "initialized"), (oracle, admin)) - Added test
test_initialize_emits_event()asserting the event is emitted with correct oracle and admin addresses
- Added event emission in
- Issue:
OracleContract::initializeset admin silently with no on-chain event - Changes:
- Added event emission in
initialize():env.events().publish(("oracle", "initialized"), admin) - Added test
test_initialize_emits_event()asserting the event is emitted with correct admin address
- Added event emission in
- Issue:
OracleContract::unpausedid not emit an event unlike the escrow contract's unpause. A test should document whether this is intentional. - Changes:
- Added
pub fn unpause(env: Env) -> Result<(), Error>to oracle contract (admin-only, no event emission) - Added test
test_unpause_emits_no_event()asserting unpause does not emit any events, documenting this as intentional behavior
- Added
28a1d81 test(#340): Add test verifying oracle unpause emits no event
4d2f56f fix(#338): Add initialize event to oracle contract
d8a839b fix(#339): Add initialize event to escrow contract
02854d2 fix(#341): Add get_match_timeout getter to escrow contract
All changes include corresponding tests:
test_get_match_timeout_returns_default()- Verifies default timeout gettertest_initialize_emits_event()(escrow) - Verifies escrow initialization eventtest_initialize_emits_event()(oracle) - Verifies oracle initialization eventtest_unpause_emits_no_event()- Verifies oracle unpause intentionally emits no event
- Escrow Contract: New public getter for match timeout; initialization now emits event
- Oracle Contract: Initialization now emits event; new unpause function with documented no-event behavior
- Backwards Compatibility: All changes are additive; no breaking changes to existing functionality