Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions contracts/tholos-v2/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1354,6 +1354,13 @@ impl TholosV2 {
position.revealed = true;
position.agrees_with_outcome = Some(agrees_with_asserter);
Self::set_position(env, id, fixed_voter, &position, &assertion.policy);

Revealed {
id,
voter: fixed_voter.clone(),
choice: agrees_with_asserter,
}
.publish(env);
}

Self::set_resolution(env, id, &resolution, &assertion.policy);
Expand Down
21 changes: 20 additions & 1 deletion contracts/tholos-v2/src/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

use super::*;
use soroban_sdk::testutils::storage::Persistent as _;
use soroban_sdk::testutils::{Address as _, Ledger};
use soroban_sdk::testutils::{Address as _, Events, Ledger};
use soroban_sdk::xdr;

const DEFAULT_BOND: i128 = 100;
const DEFAULT_CHALLENGE_WINDOW: u64 = 3600;
Expand Down Expand Up @@ -1444,6 +1445,24 @@ fn test_reveal_opens_phase_counts_fixed_positions_and_verifies_commitment() {
f.advance_past_registration_deadline(id);
f.client.reveal(&voter, &id, &true, &s);

// Auto-reveal of the asserter and disputer fixed positions must each emit
// a Revealed event, in addition to the explicit Revealed event from the
// external voter's reveal() call.
let contract_events = f.env.events().all();
let all_events = contract_events.events();
let mut revealed_count: u32 = 0;
for event in all_events.iter() {
let xdr::ContractEventBody::V0(event_data) = &event.body;
if event_data.topics.len() == 2 {
if let xdr::ScVal::Symbol(topic0) = &event_data.topics[0] {
if topic0.to_utf8_string().unwrap_or_default() == "revealed" {
revealed_count += 1;
}
}
}
}
assert_eq!(revealed_count, 3, "expected asserter, disputer, and voter Revealed events");

let assertion = f.client.get_assertion(&id);
assert_eq!(assertion.phase, PhaseV2::Reveal);

Expand Down