|
1 | 1 | import { expect } from 'chai'
|
2 |
| -import { ethers } from 'hardhat' |
3 |
| -import { loadFixture } from '@nomicfoundation/hardhat-toolbox/network-helpers' |
4 |
| -import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers' |
5 |
| -import { RIFToken } from '../typechain-types' |
| 2 | +import hre from 'hardhat' |
| 3 | +import { Address, WalletClient, createPublicClient, http, parseEther, parseUnits } from 'viem' |
| 4 | +import { hardhat } from 'viem/chains' |
| 5 | +import { loadFixture } from '@nomicfoundation/hardhat-network-helpers' |
| 6 | +import { GetContractReturnType } from '@nomicfoundation/hardhat-viem/types' |
| 7 | +import { RIFTokenContact$Type } from '../artifacts/contracts/RIFToken.sol/RIFTokenContact' |
6 | 8 |
|
7 | 9 | describe('RIFToken Contract', function () {
|
8 |
| - let owner: SignerWithAddress, addr1: SignerWithAddress, addr2: SignerWithAddress |
9 |
| - let rifToken: RIFToken |
| 10 | + let owner: Address, addr1: Address, addr2: Address |
| 11 | + let ownerAcc: WalletClient, addr1Acc: WalletClient, addr2Acc: WalletClient |
| 12 | + let rifToken: GetContractReturnType<RIFTokenContact$Type['abi']> |
10 | 13 |
|
11 |
| - const deployRif = () => ethers.deployContract('RIFToken') |
| 14 | + const deployRif = () => hre.viem.deployContract('RIFTokenContact') |
12 | 15 |
|
13 | 16 | before(async () => {
|
14 |
| - ;[owner, addr1, addr2] = await ethers.getSigners() |
| 17 | + ;[ownerAcc, addr1Acc, addr2Acc] = await hre.viem.getWalletClients() |
| 18 | + owner = (await ownerAcc.getAddresses())[0] |
| 19 | + addr1 = (await addr1Acc.getAddresses())[0] |
| 20 | + addr2 = (await addr2Acc.getAddresses())[0] |
15 | 21 | rifToken = await loadFixture(deployRif)
|
| 22 | + |
| 23 | + createPublicClient({ |
| 24 | + chain: hardhat, |
| 25 | + transport: http(), |
| 26 | + }) |
16 | 27 | })
|
17 | 28 |
|
18 | 29 | it('Should assign the initial balance to the contract itself', async function () {
|
19 |
| - const contractBalance = await rifToken.balanceOf(rifToken) |
20 |
| - expect(contractBalance).to.equal(ethers.parseUnits('1000000000', 18)) |
| 30 | + const contractBalance = await rifToken.read.balanceOf([rifToken.address]) |
| 31 | + expect(contractBalance).to.equal(parseUnits('1000000000', 18)) |
21 | 32 | })
|
22 | 33 |
|
23 | 34 | it('Should use validAddress', async function () {
|
24 |
| - const addressOne = await addr1.getAddress() |
25 |
| - const isAddressOneValid = await rifToken.validAddress(addressOne) |
| 35 | + const isAddressOneValid = await rifToken.read.validAddress([addr1]) |
26 | 36 | expect(isAddressOneValid).to.be.true
|
27 | 37 | })
|
28 | 38 |
|
29 | 39 | // Single block to test the entire Transfer flow
|
30 | 40 |
|
31 | 41 | it('Should transfer all the tokens to deployer/owner using setAuthorizedManagerContract', async function () {
|
32 |
| - await rifToken.setAuthorizedManagerContract(owner) |
| 42 | + await rifToken.write.setAuthorizedManagerContract([owner]) |
33 | 43 |
|
34 |
| - expect(await rifToken.balanceOf(owner)).to.be.equal(ethers.parseUnits('1000000000', 'ether')) |
| 44 | + expect(await rifToken.read.balanceOf([owner])).to.be.equal(parseUnits('1000000000', 18)) |
35 | 45 | })
|
36 | 46 |
|
37 | 47 | it('Should transfer tokens between accounts', async function () {
|
38 | 48 | // Close distribution
|
39 |
| - const latestBlock = await ethers.provider.getBlock('latest') |
| 49 | + const provider = await hre.viem.getPublicClient() |
| 50 | + |
| 51 | + const latestBlock = await provider.getBlock() |
| 52 | + console.log('latestBlock', latestBlock) |
40 | 53 |
|
41 | 54 | if (latestBlock) {
|
42 | 55 | // We must close tokenDistribution to send transactions
|
43 |
| - await rifToken.closeTokenDistribution(latestBlock.timestamp) |
| 56 | + await rifToken.write.closeTokenDistribution([BigInt(latestBlock.timestamp)]) |
44 | 57 |
|
45 | 58 | // Transfer 50 RIF Tokens to address 1
|
46 |
| - await rifToken.transfer(addr1, ethers.parseUnits('50', 'ether')) |
47 |
| - const addr1Balance = await rifToken.balanceOf(addr1) |
48 |
| - expect(addr1Balance).to.equal(ethers.parseUnits('50', 'ether')) |
| 59 | + await rifToken.write.transfer([addr1, parseEther('50')]) |
| 60 | + |
| 61 | + const addr1Balance = await rifToken.read.balanceOf([addr1]) |
| 62 | + console.log('addr1Balance', addr1Balance) |
| 63 | + expect(addr1Balance).to.equal(parseEther('50')) |
49 | 64 |
|
50 | 65 | // Transfer 10 RIF Tokens from address 1 to address 2
|
51 |
| - await rifToken.connect(addr1).transfer(addr2, ethers.parseUnits('10', 'ether')) |
52 |
| - const addr2Balance = await rifToken.balanceOf(addr2) |
53 |
| - expect(addr2Balance).to.equal(ethers.parseUnits('10', 'ether')) |
| 66 | + await rifToken.write.transfer([addr2, parseUnits('10', 18)]) |
| 67 | + const addr2Balance = await rifToken.read.balanceOf([addr2]) |
| 68 | + expect(addr2Balance).to.equal(parseUnits('10', 18)) |
54 | 69 | }
|
55 | 70 | })
|
56 | 71 |
|
57 | 72 | it('Should make sure that the "Transfer" event is emitted', async () => {
|
58 | 73 | // Also check that the event "Transfer" is emitted
|
59 |
| - await expect(rifToken.transfer(addr1, 1)) |
| 74 | + await expect(rifToken.write.transfer([addr1, 1n])) |
60 | 75 | .to.emit(rifToken, 'Transfer(address,address,uint256)')
|
61 | 76 | .withArgs(owner, addr1, 1)
|
62 | 77 | })
|
|
0 commit comments