Lesson 9: Error ... 'InvalidConsumer()' #1565
-
Just outputs 'InvalidConsumer()' even after several corrections . Is this possibly a file issue ? Error:
github repo => https://github.com/paulcoffee85/hh-fcc-harhat-smartcontract-lottery-fcc-TEST
const { getNamedAccounts, deployments, ethers, network } = require("hardhat")
const { developmentChains, networkConfig } = require("../../helper-hardhat-config")
const { assert, expect } = require("chai")
!developmentChains.includes(network.name)
? describe.skip
: describe("Raffle Unit Tests", async function () {
let raffle, vrfCoordinatorV2Mock, raffleEntranceFee, deployer, interval
const chainId = network.config.chainId
beforeEach(async function () {
// const { deployer } = await getNamedAccounts()
// new line to get deployer
deployer = (await getNamedAccounts()).deployer
await deployments.fixture(["all"])
raffle = await ethers.getContract("Raffle", deployer)
vrfCoordinatorV2Mock = await ethers.getContract("VRFCoordinatorV2Mock", deployer)
raffleEntranceFee = await raffle.getEntranceFee()
interval = await raffle.getInterval()
})
describe("constructor", async function () {
it("initalizes the raffle correctly", async function () {
// Ideally we make our tests have just 1 assert per"it"
const raffleState = await raffle.getRaffleState()
// const interval = await raffle.getInterval()
// => changed getInterval() to Global variable in beforeEach() above
assert.equal(raffleState.toString(), 0)
assert.equal(interval.toString(), networkConfig[chainId]["interval"])
})
})
describe("enterRaffle", async function () {
it("reverts when you don't pay enough", async function () {
await expect(raffle.enterRaffle()).to.be.revertedWith(
"Raffle__NotEnoughETHEntered"
)
})
it("records players when they enter", async function () {
await raffle.enterRaffle({ value: raffleEntranceFee })
const playerFromContract = await raffle.getPlayer(0)
assert.equal(playerFromContract, deployer)
})
// Make sure a function emits an event
it("emits event on enter", async function () {
await expect(raffle.enterRaffle({ value: raffleEntranceFee })).to.emit(
raffle,
"RaffleEnter"
)
})
it("doesn't allow entrance when raffle is calculating", async function () {
await raffle.enterRaffle({ value: raffleEntranceFee })
await network.provider.send("evm_increaseTime", [interval.toNumber() + 1])
await network.provider.send("evm_mine", [])
// We pretend to be a Chainlink Keeper
await raffle.performUpkeep([])
await expect(raffle.enterRaffle({ value: raffleEntranceFee })).to.be.revertedWith(
"Raffle__NotOpen"
)
})
})
}) |
Beta Was this translation helpful? Give feedback.
Replies: 11 comments 21 replies
-
Hi @paulcoffee85 |
Beta Was this translation helpful? Give feedback.
-
@paulcoffee85 run |
Beta Was this translation helpful? Give feedback.
-
Thanks , I love this community |
Beta Was this translation helpful? Give feedback.
-
To solve this issue input the code on your CLI / terminal |
Beta Was this translation helpful? Give feedback.
-
Thanks! That worked like a charm. Just want to add for the people in the future, to use (in Raffle.sol)
instead of
|
Beta Was this translation helpful? Give feedback.
-
So as the error suggest, we did not add our Lottery contract as consumer to VRFCoordinator. If you do want to use the latest version of
|
Beta Was this translation helpful? Give feedback.
-
Hello, I cannot seem to access the methods of VRFCoordinatorV2Mock When I try to call createSubscription() it says it is not a function same goes for addConsumer() method Here's the full error message : TypeError: vrfCoordinatorV2Mock.addConsumer is not a function My solidity file:
My deploy script:
I commented out the createSubscription part and hardcoded 0 to the subId to work around like a pro coder XD Please help me out |
Beta Was this translation helpful? Give feedback.
-
: Use 'yarn hardhat test' with the hard-coded 'subId=1'. If you use 'yarn hardhat test --network localhost', it will work correctly. |
Beta Was this translation helpful? Give feedback.
-
write this affter you deploy your contract which is in 01-deploy-raffle.js //Deploying contract |
Beta Was this translation helpful? Give feedback.
-
I found a way to solve it inside solidity itself, you can even have to pass subscription id when deploying the contract. Check out this answer. smartcontractkit/chainlink#7982 (comment) |
Beta Was this translation helpful? Give feedback.
@paulcoffee85 run
npm install --save-dev @chainlink/contracts@0.4.1