Skip to content

Commit 537cdea

Browse files
committed
Added tests
1 parent 8307b30 commit 537cdea

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

packages/foundry/contracts/KiddoPerks.sol

+6-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ contract KiddoPerks is Ownable {
2828
);
2929
error KiddoPerks__PerkAlreadyRedeemmed(uint256 id, address by);
3030
error KiddoPerks__NoValidChild(address childAddr);
31-
error KiddoPerks__CannotMintAnyNFTYet(address who);
31+
error KiddoPerks__CannotMintAnyNFTYet(address who, uint256 numTasksCompleted);
3232

3333
uint256 constant MIN_TASK_COMPLETED_NFT = 5;
3434

@@ -126,6 +126,8 @@ contract KiddoPerks is Ownable {
126126

127127
token.mint(by, taskCompleted.tokensReward);
128128
emit TokenMinted(by, taskCompleted.tokensReward);
129+
130+
s_childNumTasksCompleted[by] += 1;
129131
}
130132

131133
function removeTask(
@@ -278,7 +280,9 @@ contract KiddoPerks is Ownable {
278280
function mintNFTByTaskCompletion() public {
279281
uint256 numTaskCompletedByChild = s_childNumTasksCompleted[msg.sender];
280282
if (numTaskCompletedByChild < MIN_TASK_COMPLETED_NFT) {
281-
revert KiddoPerks__CannotMintAnyNFTYet(msg.sender);
283+
revert KiddoPerks__CannotMintAnyNFTYet(
284+
msg.sender, numTaskCompletedByChild
285+
);
282286
}
283287
nft.mintNft(msg.sender, s_childNumTasksCompleted[msg.sender]);
284288
}

packages/foundry/test/KiddoPerks.t.sol

+20-1
Original file line numberDiff line numberDiff line change
@@ -543,12 +543,31 @@ contract KiddoPerksTest is Test {
543543
vm.prank(CHILD_ONE);
544544
vm.expectRevert(
545545
abi.encodeWithSelector(
546-
KiddoPerks.KiddoPerks__CannotMintAnyNFTYet.selector, CHILD_ONE
546+
KiddoPerks.KiddoPerks__CannotMintAnyNFTYet.selector, CHILD_ONE, 4
547547
)
548548
);
549549
kiddoPerks.mintNFTByTaskCompletion();
550550
}
551551

552+
function testCanMintNFT() public withChildCreated withTaskCreated {
553+
vm.startPrank(PARENT);
554+
kiddoPerks.createTask("Clean up room", SMALL_REQUIRED_TOKENS_AMOUNT);
555+
kiddoPerks.createTask("Make bed", SMALL_REQUIRED_TOKENS_AMOUNT);
556+
kiddoPerks.createTask("Brush teeth", SMALL_REQUIRED_TOKENS_AMOUNT);
557+
kiddoPerks.createTask("Do homework", SMALL_REQUIRED_TOKENS_AMOUNT);
558+
kiddoPerks.createTask("Throw out trash", SMALL_REQUIRED_TOKENS_AMOUNT);
559+
560+
kiddoPerks.completeTask(0, CHILD_ONE);
561+
kiddoPerks.completeTask(1, CHILD_ONE);
562+
kiddoPerks.completeTask(2, CHILD_ONE);
563+
kiddoPerks.completeTask(3, CHILD_ONE);
564+
kiddoPerks.completeTask(4, CHILD_ONE);
565+
vm.stopPrank();
566+
567+
vm.prank(CHILD_ONE);
568+
kiddoPerks.mintNFTByTaskCompletion();
569+
}
570+
552571
/**
553572
* Modifiers
554573
*/

0 commit comments

Comments
 (0)