From e7de23aa149edda72ffb8cc2915123c1fc43bcf7 Mon Sep 17 00:00:00 2001 From: Umeokonkwo Samuel Date: Thu, 23 Jul 2026 20:47:10 +0100 Subject: [PATCH] fix: MarketResolvedEvent market_id topic --- .../src/event_management_tests.rs | 51 +++++++++++++++++++ contracts/predictify-hybrid/src/events.rs | 2 +- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/contracts/predictify-hybrid/src/event_management_tests.rs b/contracts/predictify-hybrid/src/event_management_tests.rs index bb664ef9..07550376 100644 --- a/contracts/predictify-hybrid/src/event_management_tests.rs +++ b/contracts/predictify-hybrid/src/event_management_tests.rs @@ -861,6 +861,57 @@ fn test_event_market_created_published() { assert_eq!(emitted_market_id, market_id); } +#[test] +fn test_event_market_resolved_published() { + let setup = TestSetup::new(); + let client = PredictifyHybridClient::new(&setup.env, &setup.contract_id); + + let outcomes = vec![ + &setup.env, + String::from_str(&setup.env, "Yes"), + String::from_str(&setup.env, "No"), + ]; + + let market_id = setup.create_market("Test question?", outcomes.clone(), 30); + + setup.env.ledger().with_mut(|li| { + li.timestamp = li.timestamp + (31 * 24 * 60 * 60); + }); + + let result = client.try_resolve_market_manual( + &setup.admin, + &market_id, + &String::from_str(&setup.env, "Yes"), + ); + assert!(result.is_ok()); + + // Get emitted events + let all_events = setup.env.events().all(); + let resolved_event = all_events + .iter() + .find(|e| { + e.1.get(0).and_then(|v| v.try_into_val(&setup.env).ok()) + == Some(Symbol::new(&setup.env, "mkt_res")) + }) + .expect("MarketResolvedEvent not found in emitted events"); + + assert_eq!(resolved_event.0, setup.contract_id); + let topic: Symbol = resolved_event + .1 + .get(0) + .unwrap() + .try_into_val(&setup.env) + .unwrap(); + let emitted_market_id: Symbol = resolved_event + .1 + .get(1) + .unwrap() + .try_into_val(&setup.env) + .unwrap(); + assert_eq!(topic, Symbol::new(&setup.env, "mkt_res")); + assert_eq!(emitted_market_id, market_id); +} + #[cfg(any())] #[test] fn test_event_vote_cast_published() { diff --git a/contracts/predictify-hybrid/src/events.rs b/contracts/predictify-hybrid/src/events.rs index e0daa171..be1847ca 100644 --- a/contracts/predictify-hybrid/src/events.rs +++ b/contracts/predictify-hybrid/src/events.rs @@ -2629,7 +2629,7 @@ impl EventEmitter { timestamp: env.ledger().timestamp(), }; - Self::store_event(env, &symbol_short!("mkt_res"), &event); + env.storage().persistent().set(&symbol_short!("mkt_res"), &event); env.events().publish( ( symbol_short!("mkt_res"),