Cannot read properties of undefined (reading 'addConsumer') #5511
-
const { network } = require("hardhat")
const { developmentChains, networkConfig } = require("../helper-hardhat-config")
const { verify } = require("../utils/verify")
const VRF_FUND_SUB_AMOUNT = ethers.utils.parseEther("2")
module.exports = async function ({ getNamedAccounts, deployments }) {
const { deploy, log } = deployments
const { deployer } = await getNamedAccounts()
const chainId = network.config.chainId
let vrfCoordinatorV2Address, subscriptionId, vrfCoordinatorV2Mock
//constant sop till here in every deploy
if (chainId == 31337) {
vrfCoordinatorV2Mock = await ethers.getContract("VRFCoordinatorV2Mock")
vrfCoordinatorV2Address = vrfCoordinatorV2Mock.address
const transactionResponse = await vrfCoordinatorV2Mock.createSubscription()
const transactionReceipt = await transactionResponse.wait(1)
subscriptionId = transactionReceipt.events[0].args.subId
await vrfCoordinatorV2Mock.fundSubscription(subscriptionId, VRF_FUND_SUB_AMOUNT)
}
//deciding being on which network we have to use the addres of vrfcoordinatorv2 adderss
else {
vrfCoordinatorV2Address = networkConfig[chainId]["vrfCoordinatorV2"]
subscriptionId = networkConfig[chainId]["subscriptionId"]
}
// seeing from constructor which args we have to use hence creating them outside raffle
const entranceFee = networkConfig[chainId]["EntranceFee"]
const gasLane = networkConfig[chainId]["gasLane"]
const callbackGasLimit = networkConfig[chainId]["callbackGasLimit"]
const interval = networkConfig[chainId]["interval"]
const args = [
vrfCoordinatorV2Address,
entranceFee,
gasLane,
subscriptionId,
callbackGasLimit,
interval,
]
const raffle = await deploy("Raffle", {
from: deployer,
log: true,
args: args,
waitConfirmations: 1,
})
await vrfCoordinatorV2Mock.addConsumer(subscriptionId, raffle.address)
if (!developmentChains.includes(network.name) && process.env.ETHERSCAN_API_KEY) {
console.log("verifying.....")
await verify(raffle.address, args)
}
console.log("---------------")
}
module.exports.tags = ["all", "raffle"]const { assert, expect } = require("chai")
const { network, getNamedAccounts, deployments, ethers } = require("hardhat")
const { developmentChains, networkConfig } = require("../../helper-hardhat-config")
developmentChains.includes(network.name)
? describe.skip
: describe("raffle unit test", function () {
let raffle, raffleEntranceFee, deployer
beforeEach(async function () {
deployer = (await getNamedAccounts()).deployer
raffle = await ethers.getContract("Raffle", deployer)
raffleEntranceFee = await raffle.GetEntranceFee()
})
desrcribe("fulfillRandomWords", function () {
it("works with live chainlink keepers and chainlink vrf,we get a random winner", async function () {
const startingTimeStamp = await raffle.getLastTimeStamp()
const accounts = await ethers.getSigners()
await new Promise(async (resolve, reject) => {
raffle.once("WinnerPicked", async () => {
console.log("WinnerPicked event fired!")
try {
const recentWinner = await raffle.getRecentWinner()
const raffleState = await raffle.getRaffleState()
const winnerEndingBalance = await accounts[0].getBalance()
const endingTimeStamp = await raffle.getLastTimeStamp()
await expect(raffle.getPlayer(0)).to.be.reverted
assert.equal(recentWinner.toString(), accounts[0], address)
assert.equal(rafflestate, 0)
assert.equal(
winnerEndingBalance.winnerStartingBalance
.add(raffleEntranceFee)
.toString()
)
assert(endingTimeStamp > startingTimeStamp)
resolve()
} catch (error) {
console.log(error)
reject(e)
}
})
await raffle.enterRaffle({ value: raffleEntranceFee })
const winnerStartingBalance = await accounts[0].getBalance()
})
})
})
}) |
Beta Was this translation helpful? Give feedback.
Answered by
alymurtazamemon
May 20, 2023
Replies: 1 comment
-
|
@Sanyam2103 You should only run this line on localhost await vrfCoordinatorV2Mock.addConsumer(subscriptionId, raffle.address)You can wrap it inside if statement and only run it in localhost |
Beta Was this translation helpful? Give feedback.
0 replies
Answer selected by
Sanyam2103
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment

@Sanyam2103 You should only run this line on localhost
You can wrap it inside if statement and only run it in localhost