Skip to content

Commit

Permalink
feat: Updated contract with minimal mvp
Browse files Browse the repository at this point in the history
  • Loading branch information
stevedylandev committed Dec 20, 2024
1 parent 0fdc5fb commit f1db5e7
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 14 deletions.
6 changes: 3 additions & 3 deletions script/IPCM.s.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.22;

import {Script, console} from "forge-std/Script.sol";
import {IPCM} from "../src/IPCM.sol";
Expand All @@ -12,7 +12,7 @@ contract IPCMScript is Script {
function run() public {
vm.startBroadcast();

ipcm = new IPCM();
ipcm = new IPCM(msg.sender);

vm.stopBroadcast();
}
Expand Down
24 changes: 16 additions & 8 deletions src/IPCM.sol
Original file line number Diff line number Diff line change
@@ -1,14 +1,22 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
// SPDX-License-Identifier: MIT
// Compatible with OpenZeppelin Contracts ^5.0.0
pragma solidity ^0.8.22;

contract IPCM {
uint256 public number;
import {Ownable} from "../lib/openzeppelin-contracts/contracts/access/Ownable.sol";

function setNumber(uint256 newNumber) public {
number = newNumber;
contract IPCM is Ownable {
constructor(address owner) Ownable(owner) {}

string private cidMapping;

event MappingUpdated(string value);

function setValue(string memory value) public onlyOwner {
cidMapping = value;
emit MappingUpdated(value);
}

function increment() public {
number++;
function getValue() public view returns (string memory) {
return cidMapping;
}
}
35 changes: 32 additions & 3 deletions test/IPCM.t.sol
Original file line number Diff line number Diff line change
@@ -1,13 +1,42 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.22;

import {Test, console} from "forge-std/Test.sol";
import {IPCM} from "../src/IPCM.sol";

contract IPCMTest is Test {
IPCM public ipcm;
address owner = address(1);
string testCid = "QmTest123";

function setUp() public {
ipcm = new IPCM();
ipcm = new IPCM(owner);
vm.startPrank(owner);
}

function testSetValue() public {
ipcm.setValue(testCid);
assertEq(ipcm.getValue(), testCid);
}

function testOnlyOwnerCanSetValue() public {
vm.stopPrank();
vm.startPrank(address(2));
vm.expectRevert();
ipcm.setValue(testCid);
}

function testEmitsEvent() public {
emit IPCM.MappingUpdated(testCid);
ipcm.setValue(testCid);
}

function testGetValue() public {
string memory emptyValue = ipcm.getValue();
assertEq(emptyValue, "");

ipcm.setValue(testCid);
string memory newValue = ipcm.getValue();
assertEq(newValue, testCid);
}
}

0 comments on commit f1db5e7

Please sign in to comment.