Skip to content

Instantly share code, notes, and snippets.

@piorot
Created March 29, 2022 10:56
Show Gist options
  • Save piorot/4bafb0a4b8bff32a52f03926d36c1ec6 to your computer and use it in GitHub Desktop.
Save piorot/4bafb0a4b8bff32a52f03926d36c1ec6 to your computer and use it in GitHub Desktop.
Shareholder be able to withdraw resources paid as rent
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;
import "hardhat/console.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract Apartment is ERC20 {
uint public balance;
constructor() ERC20("ApartmentContract", "APRTM") {
super._mint(_msgSender(), 100);
console.log("Deploying a Greeter with greeting:");
}
function withdraw() public {
require(this.balanceOf(msg.sender) > 0, "XXX");
payable(msg.sender).transfer(address(this).balance);
}
receive() external payable {
console.log("receive");
balance += msg.value;
}
}
it("Shareholder be able to withdraw resources paid as rent", async () => {
const Apartment = await ethers.getContractFactory("Apartment");
const apartment = await Apartment.deploy();
[owner, Alice, Bob] = await ethers.getSigners();
await apartment.deployed();
await apartment.transfer(Alice.address, 20);
await Bob.sendTransaction({
to: apartment.address,
value: ethers.utils.parseEther("1")
});
const aliceBalanceBeforeWithdrawal = await Alice.getBalance();
await apartment.connect(Alice).withdraw();
expect(await (await Alice.getBalance()).gt(aliceBalanceBeforeWithdrawal)).to.be.true;
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment