Skip to content

Commit 834e766

Browse files
committed
feat: add tests and fix versions
1 parent 97acbc3 commit 834e766

File tree

9 files changed

+170
-25
lines changed

9 files changed

+170
-25
lines changed

packages/core/cairo_alpha/src/tests/with_components_off/erc721/erc721.test.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,10 @@ testERC721('enumerable', {
8484
enumerable: true,
8585
});
8686

87+
testERC721('wrapper', {
88+
wrapper: true,
89+
});
90+
8791
test('wrapper adds component and constructor arg', t => {
8892
const code = printContract(
8993
buildERC721({

packages/core/cairo_alpha/src/tests/with_components_off/erc721/erc721.test.ts.md

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -606,6 +606,95 @@ Generated by [AVA](https://avajs.dev).
606606
}␊
607607
`
608608

609+
## wrapper
610+
611+
> Snapshot 1
612+
613+
`// SPDX-License-Identifier: MIT␊
614+
// Compatible with OpenZeppelin Contracts for Cairo 4.0.0-alpha.0␊
615+
616+
#[starknet::contract]␊
617+
mod MyToken {␊
618+
use openzeppelin_access::ownable::OwnableComponent;␊
619+
use openzeppelin_interfaces::upgrades::IUpgradeable;␊
620+
use openzeppelin_introspection::src5::SRC5Component;␊
621+
use openzeppelin_token::erc721::{ERC721Component, ERC721HooksEmptyImpl};␊
622+
use openzeppelin_token::erc721::extensions::erc721_wrapper::ERC721WrapperComponent;␊
623+
use openzeppelin_upgrades::UpgradeableComponent;␊
624+
use starknet::{ClassHash, ContractAddress};␊
625+
626+
component!(path: ERC721Component, storage: erc721, event: ERC721Event);␊
627+
component!(path: SRC5Component, storage: src5, event: SRC5Event);␊
628+
component!(path: ERC721WrapperComponent, storage: erc721_wrapper, event: ERC721WrapperEvent);␊
629+
component!(path: UpgradeableComponent, storage: upgradeable, event: UpgradeableEvent);␊
630+
component!(path: OwnableComponent, storage: ownable, event: OwnableEvent);␊
631+
632+
// External␊
633+
#[abi(embed_v0)]␊
634+
impl ERC721MixinImpl = ERC721Component::ERC721MixinImpl<ContractState>;␊
635+
#[abi(embed_v0)]␊
636+
impl ERC721WrapperImpl = ERC721WrapperComponent::ERC721WrapperImpl<ContractState>;␊
637+
#[abi(embed_v0)]␊
638+
impl ERC721WrapperReceiverImpl = ERC721WrapperComponent::ERC721WrapperReceiverImpl<ContractState>;␊
639+
#[abi(embed_v0)]␊
640+
impl OwnableMixinImpl = OwnableComponent::OwnableMixinImpl<ContractState>;␊
641+
642+
// Internal␊
643+
impl ERC721InternalImpl = ERC721Component::InternalImpl<ContractState>;␊
644+
impl ERC721WrapperInternalImpl = ERC721WrapperComponent::InternalImpl<ContractState>;␊
645+
impl UpgradeableInternalImpl = UpgradeableComponent::InternalImpl<ContractState>;␊
646+
impl OwnableInternalImpl = OwnableComponent::InternalImpl<ContractState>;␊
647+
648+
#[storage]␊
649+
struct Storage {␊
650+
#[substorage(v0)]␊
651+
erc721: ERC721Component::Storage,␊
652+
#[substorage(v0)]␊
653+
src5: SRC5Component::Storage,␊
654+
#[substorage(v0)]␊
655+
erc721_wrapper: ERC721WrapperComponent::Storage,␊
656+
#[substorage(v0)]␊
657+
upgradeable: UpgradeableComponent::Storage,␊
658+
#[substorage(v0)]␊
659+
ownable: OwnableComponent::Storage,␊
660+
}␊
661+
662+
#[event]␊
663+
#[derive(Drop, starknet::Event)]␊
664+
enum Event {␊
665+
#[flat]␊
666+
ERC721Event: ERC721Component::Event,␊
667+
#[flat]␊
668+
SRC5Event: SRC5Component::Event,␊
669+
#[flat]␊
670+
ERC721WrapperEvent: ERC721WrapperComponent::Event,␊
671+
#[flat]␊
672+
UpgradeableEvent: UpgradeableComponent::Event,␊
673+
#[flat]␊
674+
OwnableEvent: OwnableComponent::Event,␊
675+
}␊
676+
677+
#[constructor]␊
678+
fn constructor(ref self: ContractState, underlying: ContractAddress, owner: ContractAddress) {␊
679+
self.erc721.initializer("MyToken", "MTK", "");␊
680+
self.erc721_wrapper.initializer(underlying);␊
681+
self.ownable.initializer(owner);␊
682+
}␊
683+
684+
//␊
685+
// Upgradeable␊
686+
//␊
687+
688+
#[abi(embed_v0)]␊
689+
impl UpgradeableImpl of IUpgradeable<ContractState> {␊
690+
fn upgrade(ref self: ContractState, new_class_hash: ClassHash) {␊
691+
self.ownable.assert_only_owner();␊
692+
self.upgradeable.upgrade(new_class_hash);␊
693+
}␊
694+
}␊
695+
}␊
696+
`
697+
609698
## pausable + enumerable
610699

611700
> Snapshot 1
Binary file not shown.

packages/core/cairo_alpha/src/tests/with_components_on/erc721/erc721.test.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@ testERC721('enumerable', {
7979
enumerable: true,
8080
});
8181

82+
testERC721('wrapper', {
83+
wrapper: true,
84+
});
85+
8286
test('wrapper adds component and constructor arg', t => {
8387
const code = printContract(
8488
buildERC721({

packages/core/cairo_alpha/src/tests/with_components_on/erc721/erc721.test.ts.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,54 @@ Generated by [AVA](https://avajs.dev).
366366
}␊
367367
`
368368

369+
## wrapper
370+
371+
> Snapshot 1
372+
373+
`// SPDX-License-Identifier: MIT␊
374+
// Compatible with OpenZeppelin Contracts for Cairo 4.0.0-alpha.0␊
375+
376+
#[starknet::contract]␊
377+
#[with_components(ERC721, SRC5, ERC721Wrapper, Upgradeable, Ownable)]␊
378+
mod MyToken {␊
379+
use openzeppelin_interfaces::upgrades::IUpgradeable;␊
380+
use openzeppelin_token::erc721::ERC721HooksEmptyImpl;␊
381+
use starknet::{ClassHash, ContractAddress};␊
382+
383+
// External␊
384+
#[abi(embed_v0)]␊
385+
impl ERC721MixinImpl = ERC721Component::ERC721MixinImpl<ContractState>;␊
386+
#[abi(embed_v0)]␊
387+
impl ERC721WrapperImpl = ERC721WrapperComponent::ERC721WrapperImpl<ContractState>;␊
388+
#[abi(embed_v0)]␊
389+
impl ERC721WrapperReceiverImpl = ERC721WrapperComponent::ERC721WrapperReceiverImpl<ContractState>;␊
390+
#[abi(embed_v0)]␊
391+
impl OwnableMixinImpl = OwnableComponent::OwnableMixinImpl<ContractState>;␊
392+
393+
#[storage]␊
394+
struct Storage {}␊
395+
396+
#[constructor]␊
397+
fn constructor(ref self: ContractState, underlying: ContractAddress, owner: ContractAddress) {␊
398+
self.erc721.initializer("MyToken", "MTK", "");␊
399+
self.erc721_wrapper.initializer(underlying);␊
400+
self.ownable.initializer(owner);␊
401+
}␊
402+
403+
//␊
404+
// Upgradeable␊
405+
//␊
406+
407+
#[abi(embed_v0)]␊
408+
impl UpgradeableImpl of IUpgradeable<ContractState> {␊
409+
fn upgrade(ref self: ContractState, new_class_hash: ClassHash) {␊
410+
self.ownable.assert_only_owner();␊
411+
self.upgradeable.upgrade(new_class_hash);␊
412+
}␊
413+
}␊
414+
}␊
415+
`
416+
369417
## pausable + enumerable
370418

371419
> Snapshot 1
Binary file not shown.

packages/core/cairo_alpha/src/utils/version.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ export const contractsVersionTag = `v${contractsVersion}`;
88
* Cairo compiler versions.
99
*/
1010
export const edition = '2024_07';
11-
export const cairoVersion = '2.12.2';
12-
export const scarbVersion = '2.12.2';
11+
export const cairoVersion = '2.15.0';
12+
export const scarbVersion = '2.15.1';
1313

1414
/**
1515
* Semantic version string representing of the minimum compatible version of Contracts to display in output.

packages/core/cairo_alpha/test_project/Scarb.lock

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@ version = 1
33

44
[[package]]
55
name = "openzeppelin_access"
6-
version = "3.0.0-alpha.3"
7-
source = "git+https://github.com/OpenZeppelin/cairo-contracts?tag=v3.0.0-alpha.3#ba2228ec4070c9a7ac08d2833ebcf6bcf7ff70ac"
6+
version = "3.0.0"
7+
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git#a9d1a283dbc7c6fe9fa15e94ae459437a6654998"
88
dependencies = [
99
"openzeppelin_interfaces",
1010
"openzeppelin_introspection",
1111
]
1212

1313
[[package]]
1414
name = "openzeppelin_account"
15-
version = "3.0.0-alpha.3"
16-
source = "git+https://github.com/OpenZeppelin/cairo-contracts?tag=v3.0.0-alpha.3#ba2228ec4070c9a7ac08d2833ebcf6bcf7ff70ac"
15+
version = "3.0.0"
16+
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git#a9d1a283dbc7c6fe9fa15e94ae459437a6654998"
1717
dependencies = [
1818
"openzeppelin_interfaces",
1919
"openzeppelin_introspection",
@@ -22,8 +22,8 @@ dependencies = [
2222

2323
[[package]]
2424
name = "openzeppelin_finance"
25-
version = "3.0.0-alpha.3"
26-
source = "git+https://github.com/OpenZeppelin/cairo-contracts?tag=v3.0.0-alpha.3#ba2228ec4070c9a7ac08d2833ebcf6bcf7ff70ac"
25+
version = "3.0.0"
26+
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git#a9d1a283dbc7c6fe9fa15e94ae459437a6654998"
2727
dependencies = [
2828
"openzeppelin_access",
2929
"openzeppelin_interfaces",
@@ -32,8 +32,8 @@ dependencies = [
3232

3333
[[package]]
3434
name = "openzeppelin_governance"
35-
version = "3.0.0-alpha.3"
36-
source = "git+https://github.com/OpenZeppelin/cairo-contracts?tag=v3.0.0-alpha.3#ba2228ec4070c9a7ac08d2833ebcf6bcf7ff70ac"
35+
version = "3.0.0"
36+
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git#a9d1a283dbc7c6fe9fa15e94ae459437a6654998"
3737
dependencies = [
3838
"openzeppelin_access",
3939
"openzeppelin_interfaces",
@@ -44,34 +44,34 @@ dependencies = [
4444

4545
[[package]]
4646
name = "openzeppelin_interfaces"
47-
version = "2.1.0-alpha.0"
48-
source = "git+https://github.com/OpenZeppelin/cairo-contracts?tag=v3.0.0-alpha.3#ba2228ec4070c9a7ac08d2833ebcf6bcf7ff70ac"
47+
version = "2.1.0"
48+
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git#a9d1a283dbc7c6fe9fa15e94ae459437a6654998"
4949

5050
[[package]]
5151
name = "openzeppelin_introspection"
52-
version = "3.0.0-alpha.3"
53-
source = "git+https://github.com/OpenZeppelin/cairo-contracts?tag=v3.0.0-alpha.3#ba2228ec4070c9a7ac08d2833ebcf6bcf7ff70ac"
52+
version = "3.0.0"
53+
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git#a9d1a283dbc7c6fe9fa15e94ae459437a6654998"
5454
dependencies = [
5555
"openzeppelin_interfaces",
5656
]
5757

5858
[[package]]
5959
name = "openzeppelin_macros"
60-
version = "3.0.0-alpha.3"
61-
source = "git+https://github.com/OpenZeppelin/cairo-contracts?tag=v3.0.0-alpha.3#ba2228ec4070c9a7ac08d2833ebcf6bcf7ff70ac"
60+
version = "3.0.0"
61+
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git#a9d1a283dbc7c6fe9fa15e94ae459437a6654998"
6262

6363
[[package]]
6464
name = "openzeppelin_security"
65-
version = "3.0.0-alpha.3"
66-
source = "git+https://github.com/OpenZeppelin/cairo-contracts?tag=v3.0.0-alpha.3#ba2228ec4070c9a7ac08d2833ebcf6bcf7ff70ac"
65+
version = "3.0.0"
66+
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git#a9d1a283dbc7c6fe9fa15e94ae459437a6654998"
6767
dependencies = [
6868
"openzeppelin_interfaces",
6969
]
7070

7171
[[package]]
7272
name = "openzeppelin_token"
73-
version = "3.0.0-alpha.3"
74-
source = "git+https://github.com/OpenZeppelin/cairo-contracts?tag=v3.0.0-alpha.3#ba2228ec4070c9a7ac08d2833ebcf6bcf7ff70ac"
73+
version = "3.0.0"
74+
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git#a9d1a283dbc7c6fe9fa15e94ae459437a6654998"
7575
dependencies = [
7676
"openzeppelin_access",
7777
"openzeppelin_interfaces",
@@ -81,13 +81,13 @@ dependencies = [
8181

8282
[[package]]
8383
name = "openzeppelin_upgrades"
84-
version = "3.0.0-alpha.3"
85-
source = "git+https://github.com/OpenZeppelin/cairo-contracts?tag=v3.0.0-alpha.3#ba2228ec4070c9a7ac08d2833ebcf6bcf7ff70ac"
84+
version = "3.0.0"
85+
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git#a9d1a283dbc7c6fe9fa15e94ae459437a6654998"
8686

8787
[[package]]
8888
name = "openzeppelin_utils"
89-
version = "2.1.0-alpha.0"
90-
source = "git+https://github.com/OpenZeppelin/cairo-contracts?tag=v3.0.0-alpha.3#ba2228ec4070c9a7ac08d2833ebcf6bcf7ff70ac"
89+
version = "2.1.0"
90+
source = "git+https://github.com/OpenZeppelin/cairo-contracts.git#a9d1a283dbc7c6fe9fa15e94ae459437a6654998"
9191
dependencies = [
9292
"openzeppelin_interfaces",
9393
]

packages/core/cairo_alpha/test_project/Scarb.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ scarb-version = "2.15.1"
77

88
[dependencies]
99
assert_macros = "2.15.1"
10-
starknet = "2.15.1"
10+
starknet = "2.15.0"
1111
# TODO: Update this once OpenZeppelin Contracts for Cairo v4.0.0-alpha.0 is released
1212
openzeppelin_macros = { git = "https://github.com/OpenZeppelin/cairo-contracts.git" }
1313
openzeppelin_access = { git = "https://github.com/OpenZeppelin/cairo-contracts.git" }

0 commit comments

Comments
 (0)