Skip to content
Merged
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
14 changes: 7 additions & 7 deletions contracts/src/escrow/escrow.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ pub mod Escrow {
use starknet::storage::{
StoragePointerReadAccess, StoragePointerWriteAccess, StoragePathEntry, Map
};
use starknet::{ContractAddress, get_contract_address, get_caller_address};
use starknet::{ContractAddress, get_contract_address};
use openzeppelin::introspection::src5::SRC5Component;
use openzeppelin_access::accesscontrol::{AccessControlComponent};
use openzeppelin_access::ownable::OwnableComponent;
Expand Down Expand Up @@ -32,7 +32,7 @@ pub mod Escrow {

#[storage]
struct Storage {
strk_dispatcher: IERC20Dispatcher,
strk_address: ContractAddress,
user_balance: Map::<ContractAddress, u256>,
wager_stake: Map::<u64, u256>, // wager_id -> total stake
#[substorage(v0)]
Expand Down Expand Up @@ -89,9 +89,9 @@ pub mod Escrow {

#[constructor]
fn constructor(
ref self: ContractState, strk_dispatcher: IERC20Dispatcher, wager_contract: ContractAddress
ref self: ContractState, strk_address: ContractAddress, wager_contract: ContractAddress
) {
self.strk_dispatcher.write(strk_dispatcher);
self.strk_address.write(strk_address);
self.accesscontrol.initializer();
self.accesscontrol._grant_role(WAGER_ROLE, wager_contract);
}
Expand All @@ -101,12 +101,12 @@ pub mod Escrow {
fn deposit_to_wallet(ref self: ContractState, from: ContractAddress, amount: u256) {
self.accesscontrol.assert_only_role(WAGER_ROLE);

let strk_dispatcher = IERC20Dispatcher { contract_address: self.strk_address.read() };

// Validate input
assert(!from.is_zero(), 'Invalid address');
assert(amount > 0, 'Amount must be positive');

let strk_dispatcher = self.strk_dispatcher.read();

// transfers funds to escrow
assert(strk_dispatcher.balance_of(from) >= amount, 'Insufficient balance');
self.user_balance.entry(from).write(amount + self.get_balance(from));
Expand All @@ -116,7 +116,7 @@ pub mod Escrow {

fn withdraw_from_wallet(ref self: ContractState, to: ContractAddress, amount: u256) {
self.accesscontrol.assert_only_role(WAGER_ROLE);
let strk_dispatcher = self.strk_dispatcher.read();
let strk_dispatcher = IERC20Dispatcher { contract_address: self.strk_address.read() };

// Validate recipient address
assert(!to.is_zero(), 'Invalid address');
Expand Down
12 changes: 4 additions & 8 deletions contracts/src/tests/test_escrow.cairo
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
use starknet::ContractAddress;
use starknet::{testing, contract_address_const};

use openzeppelin::token::erc20::interface::{IERC20Dispatcher, IERC20DispatcherTrait};

use contracts::escrow::interface::{IEscrowDispatcher, IEscrowDispatcherTrait};
use contracts::tests::utils::{OWNER, BOB, deploy_escrow, setup, create_head_to_head_wager, ADMIN};

use openzeppelin::token::erc20::interface::{IERC20DispatcherTrait};
use contracts::tests::utils::{OWNER, BOB, setup};
use snforge_std::{start_cheat_caller_address, stop_cheat_caller_address,};
use contracts::escrow::interface::{IEscrowDispatcherTrait};


#[test]
#[should_panic(expected: ('Caller is missing role',))]
Expand Down
19 changes: 7 additions & 12 deletions contracts/src/tests/test_integration.cairo
Original file line number Diff line number Diff line change
@@ -1,20 +1,15 @@
use starknet::{ContractAddress, get_block_timestamp};

use contracts::wager::wager::StrkWager;
use contracts::wager::types::{Category, Mode, Claim, WagerState};
use contracts::wager::interface::{IStrkWagerDispatcher, IStrkWagerDispatcherTrait};
use contracts::escrow::interface::IEscrowDispatcherTrait;
use contracts::tests::utils::{OWNER, ADMIN, ALICE, BOB, setup, create_head_to_head_wager};
use openzeppelin::token::erc20::interface::IERC20DispatcherTrait;
use contracts::tests::utils::{ADMIN, setup, create_head_to_head_wager};
use contracts::wager::interface::{IStrkWagerDispatcherTrait};


use snforge_std::{
EventSpyAssertionsTrait, start_cheat_caller_address, stop_cheat_caller_address, spy_events,
};
use snforge_std::{start_cheat_caller_address, stop_cheat_caller_address,};

#[test]
#[should_panic(expected: ('Invalid winner address',))]
fn test_distribute_funds_invalid_winner_address() {
let (wager, escrow, strk_dispatcher) = setup();
let (wager, escrow, _) = setup();

start_cheat_caller_address(escrow.contract_address, wager.contract_address);
escrow.distribute_funds(1, 0.try_into().unwrap());
Expand All @@ -23,7 +18,7 @@ fn test_distribute_funds_invalid_winner_address() {
#[test]
#[should_panic(expected: ('No funds in wager',))]
fn test_distribute_funds_no_funds() {
let (wager, escrow, strk_dispatcher) = setup();
let (wager, escrow, _) = setup();

start_cheat_caller_address(escrow.contract_address, wager.contract_address);
escrow.distribute_funds(1, 1.try_into().unwrap());
Expand Down Expand Up @@ -57,7 +52,7 @@ fn test_distribute_funds_ok() {
#[test]
#[should_panic(expected: ('No funds in wager',))]
fn test_refund_wager_no_funds_in_wager() {
let (wager, escrow, strk_dispatcher) = setup();
let (wager, escrow, _) = setup();
let john: ContractAddress = 'john'.try_into().unwrap();

start_cheat_caller_address(escrow.contract_address, wager.contract_address);
Expand Down
3 changes: 0 additions & 3 deletions contracts/src/tests/test_wager.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -1097,8 +1097,6 @@ fn test_cancel_wager() {
"Wager should be in Pending state after creation"
);

let participants = wager.get_wager_participants(wager_id);

// cancel a wager
wager.cancel_wager(wager_id);
let created_wager = wager.get_wager(wager_id);
Expand Down Expand Up @@ -1322,7 +1320,6 @@ fn test_submit_outcome_before_resolution_time() {
wager, escrow, strk_dispatcher, deposit, stake, resolution_time
);

let owner = OWNER();
let bob = BOB();

// Mint tokens for BOB
Expand Down
4 changes: 2 additions & 2 deletions contracts/src/tests/utils.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use snforge_std::{
use contracts::wager::wager::StrkWager;
use contracts::wager::types::{Mode, Category, Claim, WagerState};

use contracts::escrow::interface::{IEscrowDispatcher, IEscrowDispatcherTrait};
use contracts::escrow::interface::{IEscrowDispatcher};
use contracts::wager::interface::{IStrkWagerDispatcher, IStrkWagerDispatcherTrait};

pub fn OWNER() -> ContractAddress {
Expand Down Expand Up @@ -49,7 +49,7 @@ pub fn deploy_escrow(
let contract = declare("Escrow").unwrap().contract_class();

let mut calldata = array![];
strk_dispatcher.serialize(ref calldata);
strk_dispatcher.contract_address.serialize(ref calldata);
wager_address.serialize(ref calldata);

let (contract_address, _) = contract.deploy(@calldata).unwrap();
Expand Down