Skip to content

Commit aa3eb18

Browse files
Implemented OZ Upgredable Contract with Foundry
1 parent 5aeab05 commit aa3eb18

File tree

7 files changed

+66
-16
lines changed

7 files changed

+66
-16
lines changed
File renamed without changes.

contracts/LERC20Burnable.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
pragma solidity ^0.8.0;
33

44
import "./utils/first-version/LERC20.sol";
5-
import "./utils/first-version/Context.sol";
5+
import "@openzeppelin/contracts/utils/Context.sol";
66

77
abstract contract LERC20Burnable is Context, LERC20 {
88

contracts/LERC20Mintable.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
pragma solidity ^0.8.0;
33

44
import "./utils/first-version/LERC20.sol";
5-
import "./utils/first-version/Context.sol";
5+
import "@openzeppelin/contracts/utils/Context.sol";
66

77
abstract contract LERC20Mintable is Context, LERC20 {
88

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
// SPDX-License-Identifier: UNLICENSED
2+
pragma solidity ^0.8.0;
3+
4+
import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
5+
import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
6+
import "../utils/first-version/LosslessControllerV1.sol";
7+
import "../LosslessControllerV4.sol";
8+
import "../utils/mocks/LERC20MintableMock.sol";
9+
import "ds-test/test.sol";
10+
11+
contract LERC20MitableTests is DSTest {
12+
LosslessControllerV1 lssControllerV1;
13+
LosslessControllerV4 lssControllerV4;
14+
TransparentUpgradeableProxy transparentProxy;
15+
ProxyAdmin proxyAdmin;
16+
17+
LERC20MintableMock lerc20Mintable;
18+
19+
LosslessControllerV4 lssController;
20+
21+
function setUp() public {
22+
23+
lssControllerV1 = new LosslessControllerV1();
24+
25+
lssControllerV4 = new LosslessControllerV4();
26+
27+
transparentProxy = new TransparentUpgradeableProxy(address(lssControllerV1), address(this), "");
28+
29+
proxyAdmin = new ProxyAdmin();
30+
31+
transparentProxy.changeAdmin(address(proxyAdmin));
32+
33+
LosslessControllerV1(address(transparentProxy)).initialize(
34+
address(this),
35+
address(this),
36+
address(this));
37+
38+
proxyAdmin.upgrade(transparentProxy, address(lssControllerV4));
39+
40+
lssController = LosslessControllerV4(address(transparentProxy));
41+
42+
lerc20Mintable = new LERC20MintableMock(
43+
100000000000,
44+
"LERC20 Mintable",
45+
"lMINT",
46+
address(this),
47+
address(this),
48+
1 days,
49+
address(lssController)
50+
);
51+
}
52+
53+
function testControllerDeploy() public {
54+
address admin = lssController.admin();
55+
uint version = lssController.getVersion();
56+
assertEq(version , 4);
57+
assertEq(admin, address(this));
58+
}
59+
60+
function testLERC20Deploy() public {
61+
assertEq(lerc20Mintable.name(), "LERC20 Mintable");
62+
}
63+
}

contracts/utils/first-version/LERC20.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//SPDX-License-Identifier: Unlicense
22
pragma solidity ^0.8.0;
33

4-
import "./Context.sol";
4+
import "@openzeppelin/contracts/utils/Context.sol";
55

66
import "../../Interfaces/ILosslessERC20.sol";
77
import "../../Interfaces/ILosslessController.sol";

forge_tests/Contract.t.sol

-12
This file was deleted.

foundry.toml

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
[default]
22
src = 'contracts'
3-
test = 'test_forge'
43
out = 'out'
54
libs = ['node_modules']
65
remappings = [

0 commit comments

Comments
 (0)