-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
10 changed files
with
154 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
66 changes: 66 additions & 0 deletions
66
token/src/components/tests/mocks/erc721/erc721_metadata_hooks_mock.cairo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
#[dojo::contract] | ||
mod erc721_metadata_hooks_mock { | ||
use token::components::token::erc721::erc721_approval::erc721_approval_component; | ||
use token::components::token::erc721::erc721_balance::erc721_balance_component; | ||
use token::components::token::erc721::erc721_metadata::erc721_metadata_component; | ||
use token::components::token::erc721::erc721_mintable::erc721_mintable_component; | ||
use token::components::token::erc721::erc721_owner::erc721_owner_component; | ||
// use super::ERC721MetadataHooksImpl; | ||
|
||
component!( | ||
path: erc721_approval_component, storage: erc721_approval, event: ERC721ApprovalEvent | ||
); | ||
component!(path: erc721_balance_component, storage: erc721_balance, event: ERC721BalanceEvent); | ||
component!( | ||
path: erc721_metadata_component, storage: erc721_metadata, event: ERC721MetadataEvent | ||
); | ||
component!( | ||
path: erc721_mintable_component, storage: erc721_mintable, event: ERC721MintableEvent | ||
); | ||
component!(path: erc721_owner_component, storage: erc721_owner, event: ERC721OwnerEvent); | ||
|
||
#[abi(embed_v0)] | ||
impl ERC721MetadataImpl = | ||
erc721_metadata_component::ERC721MetadataImpl<ContractState>; | ||
|
||
impl ERC721ApprovalInternalImpl = erc721_approval_component::InternalImpl<ContractState>; | ||
impl ERC721BalanceInternalImpl = erc721_balance_component::InternalImpl<ContractState>; | ||
impl ERC721MetadataInternalImpl = erc721_metadata_component::InternalImpl<ContractState>; | ||
impl ERC721MintableInternalImpl = erc721_mintable_component::InternalImpl<ContractState>; | ||
impl ERC721OwnerInternalImpl = erc721_owner_component::InternalImpl<ContractState>; | ||
|
||
#[storage] | ||
struct Storage { | ||
#[substorage(v0)] | ||
erc721_approval: erc721_approval_component::Storage, | ||
#[substorage(v0)] | ||
erc721_balance: erc721_balance_component::Storage, | ||
#[substorage(v0)] | ||
erc721_metadata: erc721_metadata_component::Storage, | ||
#[substorage(v0)] | ||
erc721_mintable: erc721_mintable_component::Storage, | ||
#[substorage(v0)] | ||
erc721_owner: erc721_owner_component::Storage, | ||
} | ||
|
||
#[event] | ||
#[derive(Drop, starknet::Event)] | ||
enum Event { | ||
ERC721ApprovalEvent: erc721_approval_component::Event, | ||
ERC721BalanceEvent: erc721_balance_component::Event, | ||
ERC721MetadataEvent: erc721_metadata_component::Event, | ||
ERC721MintableEvent: erc721_mintable_component::Event, | ||
ERC721OwnerEvent: erc721_owner_component::Event | ||
} | ||
|
||
impl ERC721MetadataHooksImpl<TContractState> of erc721_metadata_component::ERC721MetadataHooksTrait<TContractState> { | ||
fn custom_uri( | ||
self: @erc721_metadata_component::ComponentState<TContractState>, | ||
// world: @IWorldDispatcher, | ||
base_uri: @ByteArray, | ||
token_id: u256, | ||
) -> ByteArray { | ||
format!("CUSTOM{}{}", base_uri, token_id) | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
41 changes: 41 additions & 0 deletions
41
token/src/components/tests/token/erc721/test_erc721_metadata_hooks.cairo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
use integer::BoundedInt; | ||
use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; | ||
use dojo::test_utils::spawn_test_world; | ||
use token::tests::constants::{OWNER}; | ||
|
||
use token::components::token::erc721::erc721_metadata::{erc_721_meta_model, ERC721MetaModel,}; | ||
use token::components::token::erc721::erc721_metadata::erc721_metadata_component::{ | ||
ERC721MetadataImpl, ERC721MetadataCamelImpl, InternalImpl | ||
}; | ||
use token::components::token::erc721::erc721_mintable::erc721_mintable_component::InternalImpl as ERC721MintableInternalImpl; | ||
|
||
use token::components::tests::mocks::erc721::erc721_metadata_hooks_mock::erc721_metadata_hooks_mock; | ||
use starknet::storage::{StorageMemberAccessTrait}; | ||
|
||
|
||
fn STATE() -> (IWorldDispatcher, erc721_metadata_hooks_mock::ContractState) { | ||
let world = spawn_test_world(array![erc_721_meta_model::TEST_CLASS_HASH,]); | ||
|
||
let mut state = erc721_metadata_hooks_mock::contract_state_for_testing(); | ||
state.world_dispatcher.write(world); | ||
|
||
(world, state) | ||
} | ||
|
||
#[test] | ||
fn test_erc721_metadata_hooks_initialize() { | ||
let (_world, mut state) = STATE(); | ||
|
||
let NAME: ByteArray = "NAME"; | ||
let SYMBOL: ByteArray = "SYMBOL"; | ||
let URI: ByteArray = "URI"; | ||
|
||
state.erc721_metadata.initialize(NAME, SYMBOL, URI); | ||
|
||
assert(state.erc721_metadata.name() == "NAME", 'Should be NAME'); | ||
assert(state.erc721_metadata.symbol() == "SYMBOL", 'Should be SYMBOL'); | ||
|
||
state.erc721_mintable.mint(OWNER(), 1); | ||
assert(state.erc721_metadata.token_uri(1) == "CUSTOMURI1", 'Should be CUSTOMURI1'); | ||
assert(state.erc721_metadata.tokenURI(1) == "CUSTOMURI1", 'Should be CUSTOMURI1'); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
20 changes: 20 additions & 0 deletions
20
token/src/components/token/erc721/erc721_metadata_hooks.cairo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
|
||
/// | ||
/// An empty implementation of the ERC721MetadataHooksTrait | ||
/// Import this trait component... | ||
/// use token::components::token::erc721::erc721_metadata_hooks::ERC721MetadataHooksEmptyImpl; | ||
/// | ||
/// .. or implement your own (see erc721_metadata_hooks_mock.cairo) | ||
/// | ||
|
||
// use dojo::world::{IWorldDispatcher, IWorldDispatcherTrait}; | ||
use token::components::token::erc721::erc721_metadata::erc721_metadata_component; | ||
|
||
impl ERC721MetadataHooksEmptyImpl<TContractState> of erc721_metadata_component::ERC721MetadataHooksTrait<TContractState> { | ||
fn custom_uri( | ||
self: @erc721_metadata_component::ComponentState<TContractState>, | ||
// world: @IWorldDispatcher, | ||
base_uri: @ByteArray, | ||
token_id: u256, | ||
) -> ByteArray { "" } | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters