From 6b1e2984d94231ab1afced4b85f679ab8584b45f Mon Sep 17 00:00:00 2001 From: Ladd Hoffman Date: Wed, 6 Mar 2024 16:53:57 -0600 Subject: [PATCH] removing sample contract --- ethereum/contracts/Lock.sol | 34 ---------- ethereum/test/Lock.js | 131 ------------------------------------ 2 files changed, 165 deletions(-) delete mode 100644 ethereum/contracts/Lock.sol delete mode 100644 ethereum/test/Lock.js diff --git a/ethereum/contracts/Lock.sol b/ethereum/contracts/Lock.sol deleted file mode 100644 index 2be7758..0000000 --- a/ethereum/contracts/Lock.sol +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-License-Identifier: Unlicense -pragma solidity ^0.8.24; - -// Uncomment this line to use console.log -// import "hardhat/console.sol"; - -contract Lock { - uint public unlockTime; - address payable public owner; - - event Withdrawal(uint amount, uint when); - - constructor(uint _unlockTime) payable { - require( - block.timestamp < _unlockTime, - "Unlock time should be in the future" - ); - - unlockTime = _unlockTime; - owner = payable(msg.sender); - } - - function withdraw() public { - // Uncomment this line, and the import of "hardhat/console.sol", to print a log in your terminal - // console.log("Unlock time is %o and block timestamp is %o", unlockTime, block.timestamp); - - require(block.timestamp >= unlockTime, "You can't withdraw yet"); - require(msg.sender == owner, "You aren't the owner"); - - emit Withdrawal(address(this).balance, block.timestamp); - - owner.transfer(address(this).balance); - } -} diff --git a/ethereum/test/Lock.js b/ethereum/test/Lock.js deleted file mode 100644 index 9bbd01b..0000000 --- a/ethereum/test/Lock.js +++ /dev/null @@ -1,131 +0,0 @@ -const { - time, - loadFixture, -} = require('@nomicfoundation/hardhat-toolbox/network-helpers'); -const { anyValue } = require('@nomicfoundation/hardhat-chai-matchers/withArgs'); -const { expect } = require('chai'); -const { ethers } = require('hardhat'); - -describe('Lock', () => { - // We define a fixture to reuse the same setup in every test. - // We use loadFixture to run this setup once, snapshot that state, - // and reset Hardhat Network to that snapshot in every test. - async function deployOneYearLockFixture() { - const ONE_YEAR_IN_SECS = 365 * 24 * 60 * 60; - const ONE_GWEI = 1_000_000_000; - - const lockedAmount = ONE_GWEI; - const unlockTime = (await time.latest()) + ONE_YEAR_IN_SECS; - - // Contracts are deployed using the first signer/account by default - const [owner, otherAccount] = await ethers.getSigners(); - - const Lock = await ethers.getContractFactory('Lock'); - const lock = await Lock.deploy(unlockTime, { value: lockedAmount }); - - return { - lock, unlockTime, lockedAmount, owner, otherAccount, - }; - } - - describe('Deployment', () => { - it('Should set the right unlockTime', async () => { - const { lock, unlockTime } = await loadFixture(deployOneYearLockFixture); - - expect(await lock.unlockTime()).to.equal(unlockTime); - }); - - it('Should set the right owner', async () => { - const { lock, owner } = await loadFixture(deployOneYearLockFixture); - - expect(await lock.owner()).to.equal(owner.address); - }); - - it('Should receive and store the funds to lock', async () => { - const { lock, lockedAmount } = await loadFixture( - deployOneYearLockFixture, - ); - - expect(await ethers.provider.getBalance(lock.target)).to.equal( - lockedAmount, - ); - }); - - it('Should fail if the unlockTime is not in the future', async () => { - // We don't use the fixture here because we want a different deployment - const latestTime = await time.latest(); - const Lock = await ethers.getContractFactory('Lock'); - await expect(Lock.deploy(latestTime, { value: 1 })).to.be.revertedWith( - 'Unlock time should be in the future', - ); - }); - }); - - describe('Withdrawals', () => { - describe('Validations', () => { - it('Should revert with the right error if called too soon', async () => { - const { lock } = await loadFixture(deployOneYearLockFixture); - - await expect(lock.withdraw()).to.be.revertedWith( - "You can't withdraw yet", - ); - }); - - it('Should revert with the right error if called from another account', async () => { - const { lock, unlockTime, otherAccount } = await loadFixture( - deployOneYearLockFixture, - ); - - // We can increase the time in Hardhat Network - await time.increaseTo(unlockTime); - - // We use lock.connect() to send a transaction from another account - await expect(lock.connect(otherAccount).withdraw()).to.be.revertedWith( - "You aren't the owner", - ); - }); - - it("Shouldn't fail if the unlockTime has arrived and the owner calls it", async () => { - const { lock, unlockTime } = await loadFixture( - deployOneYearLockFixture, - ); - - // Transactions are sent using the first signer by default - await time.increaseTo(unlockTime); - - await expect(lock.withdraw()).not.to.be.reverted; - }); - }); - - describe('Events', () => { - it('Should emit an event on withdrawals', async () => { - const { lock, unlockTime, lockedAmount } = await loadFixture( - deployOneYearLockFixture, - ); - - await time.increaseTo(unlockTime); - - await expect(lock.withdraw()) - .to.emit(lock, 'Withdrawal') - .withArgs(lockedAmount, anyValue); // We accept any value as `when` arg - }); - }); - - describe('Transfers', () => { - it('Should transfer the funds to the owner', async () => { - const { - lock, unlockTime, lockedAmount, owner, - } = await loadFixture( - deployOneYearLockFixture, - ); - - await time.increaseTo(unlockTime); - - await expect(lock.withdraw()).to.changeEtherBalances( - [owner, lock], - [lockedAmount, -lockedAmount], - ); - }); - }); - }); -});