diff --git a/tests/lib.cairo b/tests/lib.cairo index b489c87..efe0168 100644 --- a/tests/lib.cairo +++ b/tests/lib.cairo @@ -662,163 +662,3 @@ fn test_minter_is_operator_check() { !tokenized_bond.minter_is_operator(TOKEN_ID(), NOT_MINTER()), 'Non-minter not be operator', ); } - -#[test] -fn test_check_owner_and_operator_success() { - let (tokenized_bond, minter) = setup_contract_with_minter(); - start_cheat_caller_address(tokenized_bond.contract_address, minter); - - let transfer_destination = array![ - TokenizedBond::TransferDestination { - receiver: OWNER(), amount: TRANSFER_AMOUNT(), token_id: TOKEN_ID(), - }, - ]; - - let transfers = array![TokenizedBond::TransferParam { from: minter, to: transfer_destination }]; - - assert(tokenized_bond.check_owner_and_operator(transfers.clone()), 'Owner check should pass'); - start_cheat_caller_address(tokenized_bond.contract_address, OWNER()); - tokenized_bond.set_minter_as_operator(TOKEN_ID()); - - start_cheat_caller_address(tokenized_bond.contract_address, minter); - assert( - tokenized_bond.check_owner_and_operator(transfers.clone()), 'Operator check should pass', - ); -} - -#[test] -fn test_check_owner_and_operator_multiple_destinations() { - let (tokenized_bond, minter) = setup_contract_with_minter(); - let receiver1 = setup_receiver(); - let receiver2 = setup_receiver(); - - let multiple_destinations = array![ - TokenizedBond::TransferDestination { - receiver: receiver1, amount: TRANSFER_AMOUNT(), token_id: TOKEN_ID(), - }, - TokenizedBond::TransferDestination { - receiver: receiver2, amount: TRANSFER_AMOUNT(), token_id: TOKEN_ID(), - }, - ]; - - let transfer_with_multiple_destinations = array![ - TokenizedBond::TransferParam { from: minter, to: multiple_destinations }, - ]; - - start_cheat_caller_address(tokenized_bond.contract_address, minter); - assert( - tokenized_bond.check_owner_and_operator(transfer_with_multiple_destinations), - 'Failed for multiple destination', - ); -} - -#[test] -fn test_check_owner_and_operator_empty_transfers() { - let (tokenized_bond, _minter) = setup_contract_with_minter(); - let transfers = array![]; - start_cheat_caller_address(tokenized_bond.contract_address, NOT_MINTER()); - assert(!tokenized_bond.check_owner_and_operator(transfers), 'Empty transfers check failed'); -} - -#[test] -fn test_check_owner_and_operator_as_token_owner() { - let (tokenized_bond, minter) = setup_contract_with_minter(); - let receiver1 = setup_receiver(); - - let transfer_destination = array![ - TokenizedBond::TransferDestination { - receiver: receiver1, amount: TRANSFER_AMOUNT(), token_id: TOKEN_ID(), - }, - ]; - - let transfers = array![TokenizedBond::TransferParam { from: minter, to: transfer_destination }]; - - start_cheat_caller_address(tokenized_bond.contract_address, minter); - assert(tokenized_bond.check_owner_and_operator(transfers), 'Should pass as token owner'); -} - -#[test] -fn test_check_owner_and_operator_as_operator() { - let (tokenized_bond, minter) = setup_contract_with_minter(); - let receiver1 = setup_receiver(); - - let transfer_destination = array![ - TokenizedBond::TransferDestination { - receiver: receiver1, amount: TRANSFER_AMOUNT(), token_id: TOKEN_ID(), - }, - ]; - - let transfers = array![TokenizedBond::TransferParam { from: minter, to: transfer_destination }]; - - start_cheat_caller_address(tokenized_bond.contract_address, OWNER()); - tokenized_bond.set_minter_as_operator(TOKEN_ID()); - - start_cheat_caller_address(tokenized_bond.contract_address, minter); - assert(tokenized_bond.check_owner_and_operator(transfers), 'Should pass as operator'); -} - -#[test] -fn test_check_owner_and_operator_zero_balance() { - let (tokenized_bond, minter) = setup_contract_with_minter(); - let receiver1 = setup_receiver(); - let other_account = setup_receiver(); - - start_cheat_caller_address(tokenized_bond.contract_address, OWNER()); - tokenized_bond.add_minter(other_account); - - start_cheat_caller_address(tokenized_bond.contract_address, other_account); - - let zero_balance_destination = array![ - TokenizedBond::TransferDestination { - receiver: receiver1, amount: TRANSFER_AMOUNT(), token_id: TOKEN_ID(), - }, - ]; - - let zero_balance_transfers = array![ - TokenizedBond::TransferParam { from: minter, to: zero_balance_destination }, - ]; - - assert( - !tokenized_bond.check_owner_and_operator(zero_balance_transfers), - 'Should fail for zero balance', - ); -} /// this test case doesn't make any sense as of now as there is not checking point of zero balance on main check_operator func and tranfer function // remove this - -#[test] -fn test_check_owner_and_operator_multiple_transfers() { - let (tokenized_bond, minter) = setup_contract_with_minter(); - let receiver1 = setup_receiver(); - let receiver2 = setup_receiver(); - let transfers = array![ - TokenizedBond::TransferParam { - from: minter, - to: array![ - TokenizedBond::TransferDestination { - receiver: receiver1, amount: TRANSFER_AMOUNT(), token_id: TOKEN_ID(), - }, - ], - }, - TokenizedBond::TransferParam { - from: minter, - to: array![ - TokenizedBond::TransferDestination { - receiver: receiver2, amount: TRANSFER_AMOUNT(), token_id: TOKEN_ID(), - }, - ], - }, - ]; - - start_cheat_caller_address(tokenized_bond.contract_address, minter); - assert(tokenized_bond.check_owner_and_operator(transfers.clone()), 'Should pass as minter'); - - start_cheat_caller_address(tokenized_bond.contract_address, OWNER()); - tokenized_bond.set_minter_as_operator(TOKEN_ID()); - start_cheat_caller_address(tokenized_bond.contract_address, minter); - assert(tokenized_bond.check_owner_and_operator(transfers.clone()), 'Should pass as operator'); - - start_cheat_caller_address(tokenized_bond.contract_address, NOT_MINTER()); - assert( - !tokenized_bond.check_owner_and_operator(transfers.clone()), - 'Should fail as non-operator' // TODO: fix this test by adding non-owner - ); -}