const { loadFixture, } = require('@nomicfoundation/hardhat-toolbox/network-helpers'); const { expect } = require('chai'); const { ethers } = require('hardhat'); describe('DAO', () => { // We define a fixture to reuse the same setup in every test. // We use loadFixture to run this setup once, snapshot that state, // and reset Hardhat Network to that snapshot in every test. async function deployDAO() { // Contracts are deployed using the first signer/account by default const [account1, account2] = await ethers.getSigners(); const DAO = await ethers.getContractFactory('DAO'); const dao = await DAO.deploy(); return { dao, account1, account2 }; } describe('Validation Pool', () => { it('Should deploy', async () => { const { dao } = await loadFixture(deployDAO); expect(dao).to.exist; expect(await dao.totalValue()).to.equal(0); }); describe('Initiate validation pool', () => { it('Should initiate', async () => { const POOL_DURATION = 3600; // 1 hour const { dao, account1 } = await loadFixture(deployDAO); const init = () => dao.initiateValidationPool(account1, POOL_DURATION); await expect(init()).to.emit(dao, 'ValidationPoolInitiated').withArgs(0); const pool = await dao.validationPools(0); expect(pool).to.exist; expect(pool.duration).to.equal(POOL_DURATION); }); }); }); });