Skip to content

Commit

Permalink
added test for transfer selector nft
Browse files Browse the repository at this point in the history
  • Loading branch information
ametel01 committed Jan 11, 2024
1 parent 9d84269 commit 8753bbc
Show file tree
Hide file tree
Showing 5 changed files with 92 additions and 40 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on: [push, pull_request]

env:
SCARB_VERSION: 2.4.0
SNFORGE_VERSION: 0.13.0
SNFORGE_VERSION: 0.13.1

jobs:
check:
Expand Down
3 changes: 2 additions & 1 deletion flex_marketplace/src/lib.cairo
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
use core::fmt::{Display, Error, Formatter, Debug};
use starknet::contract_address_to_felt252;

impl DisplayContractAddress of Display<starknet::ContractAddress> {
fn fmt(self: @starknet::ContractAddress, ref f: Formatter) -> Result<(), Error> {
write!(f, "{}", *self)
write!(f, "{}", contract_address_to_felt252(*self))
}
}

Expand Down
5 changes: 4 additions & 1 deletion flex_marketplace/src/marketplace/transfer_selector_NFT.cairo
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use starknet::ContractAddress;


#[starknet::interface]
trait ITransferSelectorNFT<TState> {
fn initializer(
Expand Down Expand Up @@ -123,7 +124,7 @@ mod TransferSelectorNFT {
let transfer_manager = self.transfer_manager_selector_for_collection.read(collection);
assert!(
!transfer_manager.is_zero(),
"TransferSelectorNFT: invalid transfer manager {}",
"TransferSelectorNFT: tried to remove an invalid transfer manager: {}",
transfer_manager
);
self
Expand All @@ -138,10 +139,12 @@ mod TransferSelectorNFT {
}

fn update_TRANSFER_MANAGER_ERC721(ref self: ContractState, manager: ContractAddress) {
self.ownable.assert_only_owner();
self.TRANSFER_MANAGER_ERC721.write(manager);
}

fn update_TRANSFER_MANAGER_ERC1155(ref self: ContractState, manager: ContractAddress) {
self.ownable.assert_only_owner();
self.TRANSFER_MANAGER_ERC1155.write(manager);
}

Expand Down
115 changes: 80 additions & 35 deletions flex_marketplace/tests/transfer_selector_nft_test.cairo
Original file line number Diff line number Diff line change
@@ -1,95 +1,140 @@
use tests::utils::{setup, initialize_test};
use starknet::{ContractAddress, contract_address_const};
use snforge_std::{start_prank, CheatTarget};
use flex::marketplace::transfer_selector_NFT::{
TransferSelectorNFT, ITransferSelectorNFTDispatcher, ITransferSelectorNFTDispatcherTrait
};
use tests::utils::{setup, initialize_test, OWNER, ZERO_ADDRESS, ACCOUNT1};

fn COLLECTION() -> ContractAddress {
contract_address_const::<'COLLECTION'>()
}

#[test]
fn test_add_collection_transfer_manager_success() {
let dsp = setup();
initialize_test(dsp);
// TODO
start_prank(CheatTarget::One(dsp.transfer_selector.contract_address), OWNER());
dsp
.transfer_selector
.add_collection_transfer_manager(
COLLECTION(), dsp.transfer_manager_erc721.contract_address
);

let actual_transfer_manager = dsp
.transfer_selector
.get_transfer_manager_selector_for_collection(COLLECTION());
assert!(
actual_transfer_manager == dsp.transfer_manager_erc721.contract_address,
"Wrong transfer manager set"
);
}

#[test]
#[should_panic()]
#[should_panic(expected: ("TransferSelectorNFT: invalid collection 0",))]
fn test_add_collection_transfer_manager_fails_invalid_collection() {
let dsp = setup();
initialize_test(dsp);
assert(false, '');
// TODO

start_prank(CheatTarget::One(dsp.transfer_selector.contract_address), OWNER());
dsp
.transfer_selector
.add_collection_transfer_manager(
ZERO_ADDRESS(), dsp.transfer_manager_erc721.contract_address
);
}

#[test]
#[should_panic()]
#[should_panic(expected: ("TransferSelectorNFT: invalid transfer manager 0",))]
fn test_add_collection_transfer_manager_fails_invalid_transfer_manager() {
let dsp = setup();
initialize_test(dsp);
assert(false, '');
// TODO

start_prank(CheatTarget::One(dsp.transfer_selector.contract_address), OWNER());
dsp.transfer_selector.add_collection_transfer_manager(COLLECTION(), ZERO_ADDRESS());
}

#[test]
fn test_remove_collection_transfer_manager_success() {
let dsp = setup();
initialize_test(dsp);
// TODO

start_prank(CheatTarget::One(dsp.transfer_selector.contract_address), OWNER());
dsp
.transfer_selector
.add_collection_transfer_manager(
COLLECTION(), dsp.transfer_manager_erc721.contract_address
);

dsp.transfer_selector.remove_collection_transfer_manager(COLLECTION());
let actual_transfer_manager = dsp
.transfer_selector
.get_transfer_manager_selector_for_collection(COLLECTION());
assert!(actual_transfer_manager == ZERO_ADDRESS(), "Wrong transfer manager removed");
}

#[test]
#[should_panic()]
#[should_panic(expected: ("TransferSelectorNFT: tried to remove an invalid transfer manager: 0",))]
fn test_remove_collection_transfer_manager_fails_invalid_transfer_manager() {
let dsp = setup();
initialize_test(dsp);
assert(false, '');
// TODO

start_prank(CheatTarget::One(dsp.transfer_selector.contract_address), OWNER());
dsp.transfer_selector.remove_collection_transfer_manager(COLLECTION());
}

#[test]
fn test_update_TRANSFER_MANAGER_ERC721_success() {
let dsp = setup();
initialize_test(dsp);
// TODO

start_prank(CheatTarget::One(dsp.transfer_selector.contract_address), OWNER());
dsp.transfer_selector.update_TRANSFER_MANAGER_ERC721(ACCOUNT1());
let new_manager = dsp.transfer_selector.get_TRANSFER_MANAGER_ERC721();
assert(new_manager == ACCOUNT1(), 'wrong new manager');
}

#[test]
fn test_update_TRANSFER_MANAGER_ERC1155_success() {
let dsp = setup();
initialize_test(dsp);
// TODO

start_prank(CheatTarget::One(dsp.transfer_selector.contract_address), OWNER());
dsp.transfer_selector.update_TRANSFER_MANAGER_ERC1155(ACCOUNT1());
let new_manager = dsp.transfer_selector.get_TRANSFER_MANAGER_ERC1155();
assert(new_manager == ACCOUNT1(), 'wrong new manager');
}

// TESTS VIEWS
#[test]
fn test_get_INTERFACE_ID_ERC721() {
let dsp = setup();
initialize_test(dsp);
// TODO

assert!(dsp.transfer_selector.get_INTERFACE_ID_ERC721() == 0x80ac58cd, "wrong interface 721");
}

#[test]
fn test_get_INTERFACE_ID_ERC1155() {
let dsp = setup();
initialize_test(dsp);
// TODO
}
#[test]
fn test_get_TRANSFER_MANAGER_ERC721() {
let dsp = setup();
initialize_test(dsp);
// TODO
}
#[test]
fn test_get_TRANSFER_MANAGER_ERC1155() {
let dsp = setup();
initialize_test(dsp);
// TODO
}
#[test]
fn test_get_transfer_manager_selector_for_collection() {
let dsp = setup();
initialize_test(dsp);
// TODO

assert!(dsp.transfer_selector.get_INTERFACE_ID_ERC1155() == 0xd9b67a26, "wrong interface 1155");
}

#[test]
fn test_check_transfer_manager_for_token() {
let dsp = setup();
initialize_test(dsp);
// TODO
start_prank(CheatTarget::One(dsp.transfer_selector.contract_address), OWNER());
dsp
.transfer_selector
.add_collection_transfer_manager(
COLLECTION(), dsp.transfer_manager_erc721.contract_address
);

let actual_manager = dsp.transfer_selector.check_transfer_manager_for_token(COLLECTION());
assert(
actual_manager == dsp.transfer_manager_erc721.contract_address, 'wrong transfer manager'
);
}

7 changes: 5 additions & 2 deletions flex_marketplace/tests/utils.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@ fn ACCOUNT4() -> ContractAddress {
fn PROXY_ADMIN() -> ContractAddress {
contract_address_const::<'PROXY_ADMIN'>()
}
fn ZERO_ADDRESS() -> ContractAddress {
contract_address_const::<0>()
}

fn setup() -> Dispatchers {
let contract = declare('MarketPlace');
Expand Down Expand Up @@ -143,9 +146,9 @@ fn initialize_test(dsp: Dispatchers) {
dsp
.transfer_selector
.initializer(
PROXY_ADMIN(),
dsp.transfer_manager_erc721.contract_address,
dsp.transfer_manager_erc1155.contract_address
dsp.transfer_manager_erc1155.contract_address,
OWNER(),
);
// Initialise TransferManagerNFT
dsp
Expand Down

0 comments on commit 8753bbc

Please sign in to comment.