-
-
Save piorot/4bafb0a4b8bff32a52f03926d36c1ec6 to your computer and use it in GitHub Desktop.
Shareholder be able to withdraw resources paid as rent
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//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; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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