Skip to content

Commit

Permalink
added vote_cast & vote_tally certs to sender
Browse files Browse the repository at this point in the history
  • Loading branch information
dkijania committed Sep 23, 2020
1 parent 034718a commit 37cd602
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 6 deletions.
20 changes: 16 additions & 4 deletions testing/jormungandr-testing-utils/src/testing/fragments/mod.rs
Expand Up @@ -12,13 +12,13 @@ pub use self::{
};
use crate::{stake_pool::StakePool, wallet::Wallet};
use chain_impl_mockchain::{
certificate::{PoolId, VotePlan},
certificate::{PoolId, VotePlan, VoteCast, Proposal, VoteTally},
fee::LinearFee,
fragment::Fragment,
testing::{
data::{StakePool as StakePoolLib, Wallet as WalletLib},
scenario::FragmentFactory,
},
}, vote::{Choice, Payload},
};
use jormungandr_lib::{
crypto::hash::Hash,
Expand Down Expand Up @@ -174,8 +174,20 @@ impl FragmentBuilder {
)
}

pub fn vote_plan(&self, wallet: &Wallet, vote_plan: VotePlan) -> Fragment {
pub fn vote_plan(&self, wallet: &Wallet, vote_plan: &VotePlan) -> Fragment {
let inner_wallet = wallet.clone().into();
self.fragment_factory().vote_plan(&inner_wallet, vote_plan.clone())
}

pub fn vote_cast(&self, wallet: &Wallet, vote_plan: &VotePlan, proposal_index: u8, choice: &Choice) -> Fragment {
let inner_wallet = wallet.clone().into();
let vote_cast = VoteCast::new(vote_plan.to_id(), proposal_index as u8, Payload::public(choice.clone()));
self.fragment_factory().vote_cast(&inner_wallet, vote_cast)
}

pub fn vote_tally(&self, wallet: &Wallet, vote_plan: &VotePlan) -> Fragment {
let inner_wallet = wallet.clone().into();
self.fragment_factory().vote_plan(&inner_wallet, vote_plan)
let vote_tally = VoteTally::new_public(vote_plan.to_id());
self.fragment_factory().vote_tally(&inner_wallet, vote_tally)
}
}
Expand Up @@ -9,7 +9,7 @@ use crate::{
wallet::Wallet,
};
use chain_core::property::Fragment as _;
use chain_impl_mockchain::{fee::LinearFee, fragment::Fragment};
use chain_impl_mockchain::{fee::LinearFee, fragment::Fragment, vote::Choice, certificate::{VotePlan, Proposal}};
use jormungandr_lib::interfaces::Address;
use jormungandr_lib::{
crypto::hash::Hash,
Expand Down Expand Up @@ -186,6 +186,41 @@ impl<'a> FragmentSender<'a> {
self.send_fragment(from, fragment, via)
}

pub fn send_vote_plan<A: FragmentNode + SyncNode + Sized + Sync + Send>(
&self,
from: &mut Wallet,
vote_plan: &VotePlan,
via: &A,
) -> Result<MemPoolCheck, FragmentSenderError> {
let fragment = from.issue_vote_plan_cert(&self.block0_hash, &self.fees, vote_plan)?;
self.dump_fragment_if_enabled(from, &fragment, via)?;
self.send_fragment(from, fragment, via)
}

pub fn send_vote_cast<A: FragmentNode + SyncNode + Sized + Sync + Send>(
&self,
from: &mut Wallet,
vote_plan: &VotePlan,
proposal_index: u8,
choice: &Choice,
via: &A,
) -> Result<MemPoolCheck, FragmentSenderError> {
let fragment = from.issue_vote_cast_cert(&self.block0_hash, &self.fees, vote_plan, proposal_index, choice)?;
self.dump_fragment_if_enabled(from, &fragment, via)?;
self.send_fragment(from, fragment, via)
}

pub fn send_vote_tally<A: FragmentNode + SyncNode + Sized + Sync + Send>(
&self,
from: &mut Wallet,
vote_plan: &VotePlan,
via: &A,
) -> Result<MemPoolCheck, FragmentSenderError> {
let fragment = from.issue_vote_tally_cert(&self.block0_hash, &self.fees, vote_plan)?;
self.dump_fragment_if_enabled(from, &fragment, via)?;
self.send_fragment(from, fragment, via)
}

pub fn send_transactions<A: FragmentNode + SyncNode + Sized + Sync + Send>(
&self,
n: u32,
Expand Down
32 changes: 31 additions & 1 deletion testing/jormungandr-testing-utils/src/wallet/mod.rs
Expand Up @@ -14,7 +14,7 @@ use chain_impl_mockchain::{
InputOutputBuilder, Payload, PayloadSlice, TransactionBindingAuthDataPhantom,
TransactionSignDataHash, Witness,
},
value::Value as ValueLib,
value::Value as ValueLib, certificate::{Proposal, VotePlan}, vote::Choice,
};
use jormungandr_lib::{
crypto::{account::Identifier as AccountIdentifier, hash::Hash, key::Identifier},
Expand Down Expand Up @@ -291,6 +291,36 @@ impl Wallet {
) -> Result<Fragment, WalletError> {
Ok(FragmentBuilder::new(block0_hash, fees).delegation_remove(&self))
}

pub fn issue_vote_plan_cert(
&mut self,
block0_hash: &Hash,
fees: &LinearFee,
vote_plan: &VotePlan
) -> Result<Fragment, WalletError> {
Ok(FragmentBuilder::new(block0_hash, fees).vote_plan(&self, vote_plan))
}

pub fn issue_vote_cast_cert(
&mut self,
block0_hash: &Hash,
fees: &LinearFee,
vote_plan: &VotePlan,
proposal_index: u8,
choice: &Choice
) -> Result<Fragment, WalletError> {
Ok(FragmentBuilder::new(block0_hash, fees).vote_cast(&self,vote_plan,proposal_index,choice))
}

pub fn issue_vote_tally_cert(
&mut self,
block0_hash: &Hash,
fees: &LinearFee,
vote_plan: &VotePlan,
) -> Result<Fragment, WalletError> {
Ok(FragmentBuilder::new(block0_hash, fees).vote_tally(&self,vote_plan))
}

}

impl Into<WalletLib> for Wallet {
Expand Down

0 comments on commit 37cd602

Please sign in to comment.