Search code examples
javascriptblockchainsolidityweb3jshardhat

Hardhat Test Error "Error: VM Exception while processing transaction: reverted with reason string 'deposit more' "


Getting an error as Error: VM Exception while processing transaction: reverted with reason string 'deposit more' on Hardhat Test.js file

Test.js ->

    it("should abe to withdraw if no one apply", async function() {
    const salary = "10" + "000000000000000000";
    const jobDesc = "https://example.com";
    const startBalance = await addrs[0].getBalance();
    const duration = 30 * 86400;
    
    //await addrs[0].sendTransaction({ to: tasksV1.address, value: salary });
    
    //taskid should be 3
    await tasksV1.connect(addrs[0])
    .createTask(duration, jobDesc, { value: salary });
    const taskId = 3;
    
    await tasksV1.connect(addrs[0]).cancelTask(taskId);
    await tasksV1.connect(addrs[0]).withdrawDeposit(taskId);
    const newBalance = await addrs[0].getBalance();
    
    expect(startBalance.sub(newBalance).div("1000000000000000000")).equal(0);
    });

Solidity Function ->


    function withdrawDeposit(uint256 taskId) external {
    require(tasks[taskId].creator == msg.sender, "Not creator");
    require(tasks[taskId].deposit > 0, "deposit more");
    require(
    tasks[taskId].status == TaskStatus.failed
    ||
    (tasks[taskId].status == TaskStatus.cancelled && applicants[taskId].length == 0)
    ||
    (tasks[taskId].status == TaskStatus.cancelled && block.timestamp > tasks[taskId].createdTime + unlockTime)
    , "Cannot withdraw");
    
    uint256 valueToWithdraw = tasks[taskId].deposit;
    tasks[taskId].deposit = 0;
    payable(msg.sender).transfer(valueToWithdraw);
    
    emit TaskUpdate(taskId, msg.sender, TaskActions.withdraw);
    }

I figured out that this error comes from Solidity function require(tasks[taskId].deposit > 0, "deposit more");

So, I even tried const salary = ethers.utils.parseEther("10"); // 10 Ether in Wei with this

But still getting the same error

Here's full code for better understanding -> https://github.com/akashpanda122/gig_board

Been stuck in this for a very long time!


Solution

  • Thanks for providing the GitHub link. The issue here is that in createTask() function, there are three arguments. But in your test, you are passing only two i.e duration and jobDesc. So I ran your test with the third argument which is refId. Now it is working fine. Please look at the attached screenshot.

    Test