Skip to content

Commit a0521d1

Browse files
TODO: finish Should transfer tokens between accounts
1 parent 7e160de commit a0521d1

File tree

2 files changed

+42
-23
lines changed

2 files changed

+42
-23
lines changed

contracts/RIFToken.sol

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,8 @@ pragma solidity ^0.4.24;
33

44
import "rif-token-contracts/contracts/RIF/RIFToken.sol";
55

6+
contract RIFTokenContact is RIFToken {
7+
8+
}
9+
610
/* File must exist, else test/RIFToken.test.ts will fail */

test/RIFToken.test.ts

Lines changed: 38 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,77 @@
11
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'
68

79
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']>
1013

11-
const deployRif = () => ethers.deployContract('RIFToken')
14+
const deployRif = () => hre.viem.deployContract('RIFTokenContact')
1215

1316
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]
1521
rifToken = await loadFixture(deployRif)
22+
23+
createPublicClient({
24+
chain: hardhat,
25+
transport: http(),
26+
})
1627
})
1728

1829
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))
2132
})
2233

2334
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])
2636
expect(isAddressOneValid).to.be.true
2737
})
2838

2939
// Single block to test the entire Transfer flow
3040

3141
it('Should transfer all the tokens to deployer/owner using setAuthorizedManagerContract', async function () {
32-
await rifToken.setAuthorizedManagerContract(owner)
42+
await rifToken.write.setAuthorizedManagerContract([owner])
3343

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))
3545
})
3646

3747
it('Should transfer tokens between accounts', async function () {
3848
// 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)
4053

4154
if (latestBlock) {
4255
// We must close tokenDistribution to send transactions
43-
await rifToken.closeTokenDistribution(latestBlock.timestamp)
56+
await rifToken.write.closeTokenDistribution([BigInt(latestBlock.timestamp)])
4457

4558
// 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'))
4964

5065
// 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))
5469
}
5570
})
5671

5772
it('Should make sure that the "Transfer" event is emitted', async () => {
5873
// Also check that the event "Transfer" is emitted
59-
await expect(rifToken.transfer(addr1, 1))
74+
await expect(rifToken.write.transfer([addr1, 1n]))
6075
.to.emit(rifToken, 'Transfer(address,address,uint256)')
6176
.withArgs(owner, addr1, 1)
6277
})

0 commit comments

Comments
 (0)