diff --git a/src/extensions/slotapprovable/module.cairo b/src/extensions/slotapprovable/module.cairo index aef0fdc..cc35d98 100644 --- a/src/extensions/slotapprovable/module.cairo +++ b/src/extensions/slotapprovable/module.cairo @@ -15,7 +15,7 @@ mod ERC3525SlotApprovableComponent { use openzeppelin::introspection::src5::SRC5Component; use openzeppelin::token::erc721::erc721::ERC721Component::InternalTrait as ERC721InternalTrait; - use openzeppelin::token::erc721::erc721::ERC721Component::ERC721; // TODO remove all unused imports + use openzeppelin::token::erc721::erc721::ERC721Component::ERC721; use openzeppelin::token::erc721::erc721::ERC721Component; // Local deps @@ -180,24 +180,23 @@ mod ERC3525SlotApprovableComponent { // [Effect] Transfer value to address let mut erc3525_comp = get_dep_component_mut!(ref self, ERC3525Comp); - match to_token_id.try_into() { // TODO maybe if let + if let Option::Some(token_id) = to_token_id.try_into() { // Into felt252 works - Option::Some(token_id) => { - match token_id { - // If token_id is zero, transfer value to address - 0 => erc3525_comp._transfer_value_to( - from_token_id, to, value - ), - // Otherwise, transfer value to token - _ => erc3525_comp._transfer_value_to_token( - from_token_id, to_token_id, value - ), - } - }, + match token_id { + // If token_id is zero, transfer value to address + 0 => erc3525_comp._transfer_value_to( + from_token_id, to, value + ), + // Otherwise, transfer value to token + _ => erc3525_comp._transfer_value_to_token( + from_token_id, to_token_id, value + ), + } + } else { // Into felt252 fails, so token_id is not zero - Option::None(()) => erc3525_comp._transfer_value_to_token( + erc3525_comp._transfer_value_to_token( from_token_id, to_token_id, value - ), + ) } } } @@ -211,7 +210,7 @@ mod ERC3525SlotApprovableComponent { impl SRC5: SRC5Component::HasComponent, impl ERC721Comp: ERC721Component::HasComponent > of InternalTrait { - fn initializer(ref self: ComponentState) { // TODO initializable + fn initializer(ref self: ComponentState) { // [Effect] Register interfaces let mut src5_comp = get_dep_component_mut!(ref self, SRC5); src5_comp.register_interface(IERC3525_SLOT_APPROVABLE_ID); diff --git a/src/extensions/slotenumerable/module.cairo b/src/extensions/slotenumerable/module.cairo index 8f9d44c..c62ee73 100644 --- a/src/extensions/slotenumerable/module.cairo +++ b/src/extensions/slotenumerable/module.cairo @@ -10,11 +10,8 @@ mod ERC3525SlotEnumerableComponent { // External deps use openzeppelin::introspection::src5::SRC5Component::InternalTrait as SRC5InternalTrait; - use openzeppelin::introspection::src5::SRC5Component::{SRC5, SRC5Camel}; use openzeppelin::introspection::src5::SRC5Component; - use openzeppelin::token::erc721::erc721::ERC721Component::InternalTrait as ERC721InternalTrait; - use openzeppelin::token::erc721::erc721::ERC721Component::ERC721; // TODO remove all unused imports use openzeppelin::token::erc721::erc721::ERC721Component; // Local deps diff --git a/src/module.cairo b/src/module.cairo index e2012cb..9d6dd57 100644 --- a/src/module.cairo +++ b/src/module.cairo @@ -16,13 +16,13 @@ mod ERC3525Component { use openzeppelin::introspection::src5::SRC5Component; use openzeppelin::introspection::interface::{ISRC5Dispatcher, ISRC5DispatcherTrait}; use openzeppelin::token::erc721::erc721::ERC721Component::InternalTrait as ERC721InternalTrait; - use openzeppelin::token::erc721::erc721::ERC721Component::ERC721; // TODO remove all unused imports + use openzeppelin::token::erc721::erc721::ERC721Component::ERC721; use openzeppelin::token::erc721::erc721::ERC721Component; use openzeppelin::account::interface::ISRC6_ID; // Local deps use cairo_erc_3525::interface::{ - IERC3525_ID, IERC3525_RECEIVER_ID, IERC3525, IERC3525ReceiverDispatcher, + IERC3525_ID, IERC3525_RECEIVER_ID, IERC3525, IERC3525CamelOnly, IERC3525ReceiverDispatcher, IERC3525ReceiverDispatcherTrait }; @@ -95,7 +95,7 @@ mod ERC3525Component { +HasComponent, +Drop, impl SRC5: SRC5Component::HasComponent, - impl ERC721Comp: ERC721Component::HasComponent + impl ERC721: ERC721Component::HasComponent > of IERC3525> { fn value_decimals(self: @ComponentState) -> u8 { // [Compute] Value decimals @@ -125,7 +125,7 @@ mod ERC3525Component { assert(!operator.is_zero(), Errors::INVALID_OPERATOR); // [Check] Operator is not owner and caller is approved or owner - let erc721_comp = get_dep_component!(@self, ERC721Comp); + let erc721_comp = get_dep_component!(@self, ERC721); let owner = erc721_comp.owner_of(token_id); assert(owner != operator, Errors::APPROVAL_TO_OWNER); assert( @@ -139,7 +139,7 @@ mod ERC3525Component { fn allowance(self: @ComponentState, token_id: u256, operator: ContractAddress) -> u256 { // [Check] - let erc721_comp = get_dep_component!(self, ERC721Comp); + let erc721_comp = get_dep_component!(self, ERC721); let owner = erc721_comp.owner_of(token_id); self._erc3525_approved_values.read((owner, token_id, operator)) } @@ -182,13 +182,46 @@ mod ERC3525Component { } } + #[embeddable_as(ERC3525CamelOnlyImpl)] + impl ERC3525CamelOnly< + TContractState, + +HasComponent, + +Drop, + impl SRC5: SRC5Component::HasComponent, + impl ERC721: ERC721Component::HasComponent + > of IERC3525CamelOnly> { + fn valueDecimals(self: @ComponentState) -> u8 { + ERC3525::value_decimals(self) + } + fn valueOf(self: @ComponentState, tokenId: u256) -> u256 { + ERC3525::value_of(self, tokenId) + } + fn slotOf(self: @ComponentState, tokenId: u256) -> u256 { + ERC3525::slot_of(self, tokenId) + } + fn approveValue( + ref self: ComponentState, tokenId: u256, operator: ContractAddress, value: u256 + ) { + ERC3525::approve_value(ref self, tokenId, operator, value) + } + fn transferValueFrom( + ref self: ComponentState, + fromTokenId: u256, + toTokenId: u256, + to: ContractAddress, + value: u256 + ) -> u256 { + ERC3525::transfer_value_from(ref self, fromTokenId, toTokenId, to, value) + } + } + #[generate_trait] impl InternalImpl< TContractState, +HasComponent, +Drop, impl SRC5: SRC5Component::HasComponent, - impl ERC721Comp: ERC721Component::HasComponent + impl ERC721: ERC721Component::HasComponent > of InternalTrait { fn initializer(ref self: ComponentState, value_decimals: u8) { // [Effect] Store value decimals @@ -211,7 +244,7 @@ mod ERC3525Component { ref self: ComponentState, token_id: u256, operator: ContractAddress, value: u256 ) { // [Effect] Store approved value - let erc721_comp = get_dep_component!(@self, ERC721Comp); + let erc721_comp = get_dep_component!(@self, ERC721); let owner = erc721_comp.owner_of(token_id); self._erc3525_approved_values.write((owner, token_id, operator), value); @@ -242,7 +275,7 @@ mod ERC3525Component { ref self: ComponentState, spender: ContractAddress, token_id: u256, value: u256 ) { // [Compute] Spender allowance - let erc721_comp = get_dep_component!(@self, ERC721Comp); + let erc721_comp = get_dep_component!(@self, ERC721); let owner = erc721_comp.owner_of(token_id); let current_allowance = self._erc3525_approved_values.read((owner, token_id, spender)); let infinity: u256 = BoundedInt::max(); @@ -286,7 +319,7 @@ mod ERC3525Component { fn _mint_token(ref self: ComponentState, to: ContractAddress, token_id: u256, slot: u256) { // [Effect] Mint a new enumerable token if supported, standard token otherwise - let mut erc721_comp = get_dep_component_mut!(ref self, ERC721Comp); + let mut erc721_comp = get_dep_component_mut!(ref self, ERC721); erc721_comp._mint(to, token_id); // [Effect] Store slot @@ -356,7 +389,7 @@ mod ERC3525Component { self._assert_minted(token_id); // [Effect] Burn token - let mut erc721_comp = get_dep_component_mut!(ref self, ERC721Comp); + let mut erc721_comp = get_dep_component_mut!(ref self, ERC721); erc721_comp._burn(token_id); // [Effect] Update token and total value @@ -439,7 +472,7 @@ mod ERC3525Component { // [Effect] Update token and total value let slot = self._erc3525_slots.read(token_id); - let erc721_comp = get_dep_component!(@self, ERC721Comp); + let erc721_comp = get_dep_component!(@self, ERC721); let owner = erc721_comp.owner_of(token_id); self._erc3525_values.write(token_id, balance - total_amount); @@ -463,7 +496,7 @@ mod ERC3525Component { assert(token_ids.len() > 1, Errors::INVALID_TOKEN_IDS); // [Effect] Merge token values - let erc721_comp = get_dep_component!(@self, ERC721Comp); + let erc721_comp = get_dep_component!(@self, ERC721); let mut index = 0; loop { if index + 1 >= token_ids.len() { @@ -500,16 +533,16 @@ mod ERC3525Component { +HasComponent, +Drop, impl SRC5: SRC5Component::HasComponent, - impl ERC721Comp: ERC721Component::HasComponent // TODO + impl ERC721: ERC721Component::HasComponent > of AssertTrait { fn _assert_minted(self: @ComponentState, token_id: u256) { - let erc721_comp = get_dep_component!(self, ERC721Comp); + let erc721_comp = get_dep_component!(self, ERC721); let exists = erc721_comp._exists(token_id); assert(exists, Errors::TOKEN_NOT_MINTED); } fn _assert_not_minted(self: @ComponentState, token_id: u256) { - let erc721_comp = get_dep_component!(self, ERC721Comp); + let erc721_comp = get_dep_component!(self, ERC721); let exists = erc721_comp._exists(token_id); assert(!exists, Errors::TOKEN_ALREADY_MINTED); } diff --git a/src/presets/erc3525_mintable_burnable.cairo b/src/presets/erc3525_mintable_burnable.cairo index b8ff915..aedcebd 100644 --- a/src/presets/erc3525_mintable_burnable.cairo +++ b/src/presets/erc3525_mintable_burnable.cairo @@ -20,13 +20,9 @@ mod ERC3525MintableBurnable { // ERC721 use openzeppelin::token::erc721::erc721::ERC721Component; - use openzeppelin::token::erc721::interface::{ - IERC721, IERC721CamelOnly, IERC721Metadata, IERC721MetadataCamelOnly - }; // ERC3525 use cairo_erc_3525::module::ERC3525Component; - use cairo_erc_3525::interface::{IERC3525, IERC3525CamelOnly}; // Declare components component!(path: SRC5Component, storage: src5, event: SRC5Event); @@ -34,12 +30,13 @@ mod ERC3525MintableBurnable { component!(path: ERC3525Component, storage: erc3525, event: ERC3525Event); // Component implementations - // TODO embed missing ABIs #[abi(embed_v0)] impl ERC721MixinImpl = ERC721Component::ERC721MixinImpl; impl ERC721InternalImpl = ERC721Component::InternalImpl; #[abi(embed_v0)] impl ERC3525Impl = ERC3525Component::ERC3525Impl; + #[abi(embed_v0)] + impl ERC3525CamelOnlyImpl = ERC3525Component::ERC3525CamelOnlyImpl; impl ERC3525InternalImpl = ERC3525Component::InternalImpl; #[storage] @@ -68,12 +65,6 @@ mod ERC3525MintableBurnable { self.initializer(value_decimals); } - // TODO check support for the following impls: - // impl SRC5Impl of ISRC5 { - // impl SRC5CamelImpl of ISRC5Camel { - // impl ERC721Impl of IERC721 { - // impl ERC3525Impl of IERC3525 { - #[abi(embed_v0)] impl ExternalImpl of super::IExternal { fn total_value(self: @ContractState, slot: u256) -> u256 { diff --git a/src/presets/erc3525_mintable_burnable_metadata.cairo b/src/presets/erc3525_mintable_burnable_metadata.cairo index 1b5b895..62f0a8b 100644 --- a/src/presets/erc3525_mintable_burnable_metadata.cairo +++ b/src/presets/erc3525_mintable_burnable_metadata.cairo @@ -7,7 +7,7 @@ trait IExternal { fn mint_value(ref self: TContractState, token_id: u256, value: u256); fn burn(ref self: TContractState, token_id: u256); fn burn_value(ref self: TContractState, token_id: u256, value: u256); - fn set_token_uri(ref self: TContractState, token_id: u256, token_uri: felt252); + fn set_base_uri(ref self: TContractState, base_uri: ByteArray); fn set_contract_uri(ref self: TContractState, uri: felt252); fn set_slot_uri(ref self: TContractState, slot: u256, uri: felt252); } @@ -44,15 +44,18 @@ mod ERC3525MintableBurnableMetadata { component!(path: ERC3525MetadataComponent, storage: erc3525_metadata, event: ERC3525MetadataEvent); // Component implementations - // TODO embed missing ABIs #[abi(embed_v0)] impl ERC721MixinImpl = ERC721Component::ERC721MixinImpl; impl ERC721InternalImpl = ERC721Component::InternalImpl; #[abi(embed_v0)] impl ERC3525Impl = ERC3525Component::ERC3525Impl; + #[abi(embed_v0)] + impl ERC3525CamelOnlyImpl = ERC3525Component::ERC3525CamelOnlyImpl; impl ERC3525InternalImpl = ERC3525Component::InternalImpl; #[abi(embed_v0)] impl ERC3525MetadataImpl = ERC3525MetadataComponent::ERC3525MetadataImpl; + #[abi(embed_v0)] + impl ERC3525MetadataCamelOnlyImpl = ERC3525MetadataComponent::ERC3525MetadataCamelOnlyImpl; impl ERC3525MetadataInternalImpl = ERC3525MetadataComponent::InternalImpl; #[storage] @@ -81,25 +84,10 @@ mod ERC3525MintableBurnableMetadata { } #[constructor] - fn constructor(ref self: ContractState, name: ByteArray, symbol: ByteArray, value_decimals: u8) { - self.initializer(name, symbol, value_decimals); + fn constructor(ref self: ContractState, name: ByteArray, symbol: ByteArray, base_uri: ByteArray, value_decimals: u8) { + self.initializer(name, symbol, base_uri, value_decimals); } - // TODO check support of these implementations - // ERC721Mixin: - // impl SRC5Impl of ISRC5 { - // impl SRC5CamelImpl of ISRC5Camel { - // impl ERC721Impl of IERC721 { - // impl ERC721CamelOnlyImpl of IERC721CamelOnly { - // impl ERC721MetadataImpl of IERC721Metadata { - // impl ERC721MetadataCamelOnlyImpl of IERC721MetadataCamelOnly { - // ERC3525: - // impl ERC3525Impl of IERC3525 { - // impl ERC3525CamelOnlyImpl of IERC3525CamelOnly { - // ERC3525Metadata: - // impl ERC3525MetadataImpl of IERC3525Metadata { - // impl ERC3525MetadataCamelOnlyImpl of IERC3525MetadataCamelOnly { - #[abi(embed_v0)] impl ExternalImpl of super::IExternal { fn total_value(self: @ContractState, slot: u256) -> u256 { @@ -130,9 +118,8 @@ mod ERC3525MintableBurnableMetadata { self.erc3525._burn_value(token_id, value) } - fn set_token_uri(ref self: ContractState, token_id: u256, token_uri: felt252) { - // TODO - // self.erc721._set_token_uri(token_id, token_uri) + fn set_base_uri(ref self: ContractState, base_uri: ByteArray) { + self.erc721._set_base_uri(base_uri) } fn set_contract_uri(ref self: ContractState, uri: felt252) { @@ -147,9 +134,9 @@ mod ERC3525MintableBurnableMetadata { #[generate_trait] impl InternalImpl of InternalTrait { fn initializer( - ref self: ContractState, name: ByteArray, symbol: ByteArray, value_decimals: u8 + ref self: ContractState, name: ByteArray, symbol: ByteArray, base_uri: ByteArray, value_decimals: u8 ) { - self.erc721.initializer(name, symbol, ""); + self.erc721.initializer(name, symbol, base_uri); self.erc3525.initializer(value_decimals); self.erc3525_metadata.initializer(); } diff --git a/src/presets/erc3525_mintable_burnable_metadata_slot_approvable.cairo b/src/presets/erc3525_mintable_burnable_metadata_slot_approvable.cairo index f207e6c..b7becfb 100644 --- a/src/presets/erc3525_mintable_burnable_metadata_slot_approvable.cairo +++ b/src/presets/erc3525_mintable_burnable_metadata_slot_approvable.cairo @@ -7,7 +7,7 @@ trait IExternal { fn mint_value(ref self: TContractState, token_id: u256, value: u256); fn burn(ref self: TContractState, token_id: u256); fn burn_value(ref self: TContractState, token_id: u256, value: u256); - fn set_token_uri(ref self: TContractState, token_id: u256, token_uri: felt252); + fn set_base_uri(ref self: TContractState, base_uri: ByteArray); fn set_contract_uri(ref self: TContractState, uri: felt252); fn set_slot_uri(ref self: TContractState, slot: u256, uri: felt252); } @@ -104,8 +104,8 @@ mod ERC3525MintableBurnableMSA { } #[constructor] - fn constructor(ref self: ContractState, name: ByteArray, symbol: ByteArray, value_decimals: u8) { - self.initializer(name, symbol, value_decimals); + fn constructor(ref self: ContractState, name: ByteArray, symbol: ByteArray, base_uri: ByteArray, value_decimals: u8) { + self.initializer(name, symbol, base_uri, value_decimals); } #[abi(embed_v0)] @@ -156,7 +156,6 @@ mod ERC3525MintableBurnableMSA { } } - // TODO think about it #[abi(embed_v0)] impl ERC721CamelOnlyImpl of IERC721CamelOnly { fn balanceOf(self: @ContractState, account: ContractAddress) -> u256 { @@ -296,9 +295,8 @@ mod ERC3525MintableBurnableMSA { self.erc3525._burn_value(token_id, value) } - fn set_token_uri(ref self: ContractState, token_id: u256, token_uri: felt252) { - // TODO - // self.erc721._set_token_uri(token_id, token_uri) + fn set_base_uri(ref self: ContractState, base_uri: ByteArray) { + self.erc721._set_base_uri(base_uri) } fn set_contract_uri(ref self: ContractState, uri: felt252) { @@ -313,9 +311,9 @@ mod ERC3525MintableBurnableMSA { #[generate_trait] impl InternalImpl of InternalTrait { fn initializer( - ref self: ContractState, name: ByteArray, symbol: ByteArray, value_decimals: u8 + ref self: ContractState, name: ByteArray, symbol: ByteArray, base_uri: ByteArray, value_decimals: u8 ) { - self.erc721.initializer(name, symbol, ""); // TODO + self.erc721.initializer(name, symbol, base_uri); self.erc3525.initializer(value_decimals); self.erc3525_metadata.initializer(); self.erc3525_slot_approvable.initializer(); diff --git a/src/presets/erc3525_mintable_burnable_metadata_slot_approvable_slot_enumerable.cairo b/src/presets/erc3525_mintable_burnable_metadata_slot_approvable_slot_enumerable.cairo index 722878a..1d9cc42 100644 --- a/src/presets/erc3525_mintable_burnable_metadata_slot_approvable_slot_enumerable.cairo +++ b/src/presets/erc3525_mintable_burnable_metadata_slot_approvable_slot_enumerable.cairo @@ -7,7 +7,7 @@ trait IExternal { fn mint_value(ref self: TContractState, token_id: u256, value: u256); fn burn(ref self: TContractState, token_id: u256); fn burn_value(ref self: TContractState, token_id: u256, value: u256); - fn set_token_uri(ref self: TContractState, token_id: u256, token_uri: felt252); + fn set_base_uri(ref self: TContractState, base_uri: ByteArray); fn set_contract_uri(ref self: TContractState, uri: felt252); fn set_slot_uri(ref self: TContractState, slot: u256, uri: felt252); } @@ -58,7 +58,6 @@ mod ERC3525MintableBurnableMSASE { component!(path: ERC3525SlotEnumerableComponent, storage: erc3525_slot_enumerable, event: ERC3525SlotEnumerableEvent); // Component implementations - // TODO embed missing ABIs #[abi(embed_v0)] impl ERC721MixinImpl = ERC721Component::ERC721MixinImpl; impl ERC721InternalImpl = ERC721Component::InternalImpl; @@ -80,8 +79,6 @@ mod ERC3525MintableBurnableMSASE { impl ERC3525SlotEnumerableCamelOnlyImpl = ERC3525SlotEnumerableComponent::ERC3525SlotEnumerableCamelOnlyImpl; impl ERC3525SlotEnumerableInternalImpl = ERC3525SlotEnumerableComponent::InternalImpl; - // TODO check that mixin impl knows correct interface IDs - #[storage] struct Storage { #[substorage(v0)] @@ -117,8 +114,8 @@ mod ERC3525MintableBurnableMSASE { #[constructor] - fn constructor(ref self: ContractState, name: ByteArray, symbol: ByteArray, value_decimals: u8) { - self.initializer(name, symbol, value_decimals); + fn constructor(ref self: ContractState, name: ByteArray, symbol: ByteArray, base_uri: ByteArray, value_decimals: u8) { + self.initializer(name, symbol, base_uri, value_decimals); } #[abi(embed_v0)] @@ -222,9 +219,8 @@ mod ERC3525MintableBurnableMSASE { self.erc3525._burn_value(token_id, value) } - fn set_token_uri(ref self: ContractState, token_id: u256, token_uri: felt252) { - // TODO remove ability to set token uris or implement it outside of ERC721 - // self.erc721._set_token_uri(token_id, token_uri) + fn set_base_uri(ref self: ContractState, base_uri: ByteArray) { + self.erc721._set_base_uri(base_uri) } fn set_contract_uri(ref self: ContractState, uri: felt252) { @@ -239,9 +235,9 @@ mod ERC3525MintableBurnableMSASE { #[generate_trait] impl InternalImpl of InternalTrait { fn initializer( - ref self: ContractState, name: ByteArray, symbol: ByteArray, value_decimals: u8 + ref self: ContractState, name: ByteArray, symbol: ByteArray, base_uri: ByteArray, value_decimals: u8 ) { - self.erc721.initializer(name, symbol, ""); // TODO + self.erc721.initializer(name, symbol, base_uri); self.erc3525.initializer(value_decimals); self.erc3525_metadata.initializer(); self.erc3525_slot_approvable.initializer(); diff --git a/src/tests/integration/constants.cairo b/src/tests/integration/constants.cairo index 1f9eab7..0c11f1d 100644 --- a/src/tests/integration/constants.cairo +++ b/src/tests/integration/constants.cairo @@ -50,4 +50,8 @@ fn NAME() -> ByteArray { fn SYMBOL() -> ByteArray { "SYMBOL" +} + +fn BASE_URI() -> ByteArray { + "BASE_URI" } \ No newline at end of file diff --git a/src/tests/integration/test_metadata.cairo b/src/tests/integration/test_metadata.cairo index 7a95707..12570e3 100644 --- a/src/tests/integration/test_metadata.cairo +++ b/src/tests/integration/test_metadata.cairo @@ -35,6 +35,7 @@ fn deploy_contract(class_hash: starknet::class_hash::ClassHash) -> ContractAddre let mut calldata: Array = ArrayTrait::new(); constants::NAME().serialize(ref calldata); constants::SYMBOL().serialize(ref calldata); + constants::BASE_URI().serialize(ref calldata); constants::VALUE_DECIMALS.serialize(ref calldata); let (address, _) = starknet::deploy_syscall(class_hash, 0, calldata.span(), false).unwrap(); address diff --git a/src/tests/integration/test_slot_approvable.cairo b/src/tests/integration/test_slot_approvable.cairo index 01e6677..64bf236 100644 --- a/src/tests/integration/test_slot_approvable.cairo +++ b/src/tests/integration/test_slot_approvable.cairo @@ -34,6 +34,7 @@ fn deploy_contract(class_hash: starknet::class_hash::ClassHash) -> ContractAddre let mut calldata: Array = ArrayTrait::new(); constants::NAME().serialize(ref calldata); constants::SYMBOL().serialize(ref calldata); + constants::BASE_URI().serialize(ref calldata); constants::VALUE_DECIMALS.serialize(ref calldata); let (address, _) = starknet::deploy_syscall(class_hash, 0, calldata.span(), false) .expect('Deploy contract failed'); diff --git a/src/tests/integration/test_slot_enumerable.cairo b/src/tests/integration/test_slot_enumerable.cairo index f110a82..d24a167 100644 --- a/src/tests/integration/test_slot_enumerable.cairo +++ b/src/tests/integration/test_slot_enumerable.cairo @@ -38,6 +38,7 @@ fn deploy_contract(class_hash: starknet::class_hash::ClassHash) -> ContractAddre let mut calldata: Array = ArrayTrait::new(); constants::NAME().serialize(ref calldata); constants::SYMBOL().serialize(ref calldata); + constants::BASE_URI().serialize(ref calldata); constants::VALUE_DECIMALS.serialize(ref calldata); let (address, _) = starknet::deploy_syscall(class_hash, 0, calldata.span(), false) .expect('Deploy contract failed'); diff --git a/src/tests/mocks/contracts.cairo b/src/tests/mocks/contracts.cairo index 3247993..237f9ed 100644 --- a/src/tests/mocks/contracts.cairo +++ b/src/tests/mocks/contracts.cairo @@ -63,7 +63,6 @@ mod DualCaseERC3525Mock { ) { self.erc3525.initializer(value_decimals); self.erc721.initializer(name, symbol, base_uri); - // TODO figure out correct initial args for setting up the testing contract } } @@ -146,7 +145,6 @@ mod DualCaseERC3525MetadataMock { self.erc3525_metadata.initializer(); self.erc3525.initializer(value_decimals); self.erc721.initializer(name, symbol, base_uri); - // TODO figure out correct initial args for setting up the testing contract } } @@ -229,7 +227,6 @@ mod DualCaseERC3525SlotApprovableMock { self.erc3525_slot_approvable.initializer(); self.erc3525.initializer(value_decimals); self.erc721.initializer(name, symbol, base_uri); - // TODO figure out correct initial args for setting up the testing contract } } @@ -312,6 +309,5 @@ mod DualCaseERC3525SlotEnumerableMock { self.erc3525_slot_enumerable.initializer(); self.erc3525.initializer(value_decimals); self.erc721.initializer(name, symbol, base_uri); - // TODO figure out correct initial args for setting up the testing contract } } diff --git a/src/tests/unit/test_approvals.cairo b/src/tests/unit/test_approvals.cairo index 0ac7946..5a0771c 100644 --- a/src/tests/unit/test_approvals.cairo +++ b/src/tests/unit/test_approvals.cairo @@ -4,12 +4,12 @@ use starknet::testing::set_caller_address; // External imports -use openzeppelin::token::erc721::erc721::ERC721Component::{ERC721Impl, ERC721MetadataImpl, InternalImpl as ERC721InternalImpl}; +use openzeppelin::token::erc721::erc721::ERC721Component::ERC721Impl; use openzeppelin::token::erc721::erc721::ERC721Component; // Local imports -use cairo_erc_3525::module::ERC3525Component::{ERC3525Impl, InternalImpl, AssertImpl}; // TODO remove unused +use cairo_erc_3525::module::ERC3525Component::{ERC3525Impl, InternalImpl}; use cairo_erc_3525::module::ERC3525Component; use cairo_erc_3525::tests::unit::constants::{ ERC3525ComponentState,