diff --git a/contract/contracts/Borger.sol b/contract/contracts/Borger.sol index 5eacf5f..71316b5 100644 --- a/contract/contracts/Borger.sol +++ b/contract/contracts/Borger.sol @@ -25,7 +25,6 @@ contract Borger { mapping(address => ReturnedState) private userStates; - Item public item; address public owner; @@ -36,20 +35,15 @@ contract Borger { owner = msg.sender; } - function checkReturnState(address user) view public returns (ReturnedState){ - return (userStates[user]); - } - function borrowItem() public payable { - require(checkReturnState(msg.sender) == ReturnedState.Returned, "Item already borrowed"); - require(msg.value == item.deposit, "Deposit does not match requirements."); - require(address(this).balance >= msg.value, "Contract doesn't have enough balance"); + ReturnedState userState = userStates[msg.sender]; + require(userState == ReturnedState.Returned, "Item already borrowed"); + require(msg.value == item.deposit, "Invalid deposit amount"); userStates[msg.sender] = ReturnedState.Received; } - function returnItem(bytes32 _hash) public noReentrant{ - require(checkReturnState(msg.sender) == ReturnedState.Received, "Item available"); + require(userStates[msg.sender] == ReturnedState.Received, "Item available"); require(_hash == item.sha256hash, "Hash doesn't match"); userStates[msg.sender] = ReturnedState.Returned; payable(msg.sender).transfer(item.deposit); diff --git a/contract/test/Borger.ts b/contract/test/Borger.ts index 2d1512d..7819300 100644 --- a/contract/test/Borger.ts +++ b/contract/test/Borger.ts @@ -45,7 +45,7 @@ describe("Borger", function () { it("Should not allow borrowing with incorrect deposit", async function () { const { borger, borrower } = await loadFixture(deployBorgerFixture); await expect(borger.connect(borrower).borrowItem({ value: ethers.parseEther("20") })) - .to.be.revertedWith("Deposit does not match requirements."); + .to.be.revertedWith("Invalid deposit amount"); }); it("Should not allow borrowing twice", async function () { @@ -74,15 +74,6 @@ describe("Borger", function () { await expect(borger.connect(borrower).returnItem("0xdd76cf5210b29098297dbb17b8ece744ef72c154f55cc0d1a4db0749932293ef")) .to.be.revertedWith("Item available"); }); - - it("Should correctly track the return state", async function () { - const { borger, borrower } = await loadFixture(deployBorgerFixture); - expect(await borger.checkReturnState(borrower.getAddress())).to.equal(0); - await borger.connect(borrower).borrowItem({ value: ethers.parseEther("21") }); - expect(await borger.checkReturnState(borrower.getAddress())).to.equal(1); - await borger.connect(borrower).returnItem("0xdd76cf5210b29098297dbb17b8ece744ef72c154f55cc0d1a4db0749932293ef"); - expect(await borger.checkReturnState(borrower.getAddress())).to.equal(0); - }); it("Should refund the correct deposit when item is returned", async function () { const { borger, borrower } = await loadFixture(deployBorgerFixture);