DCIPs/assets/eip-5528/truffule-test.js

116 lines
4.7 KiB
JavaScript

const EscrowContractAccount = artifacts.require('./EscrowContractAccount')
const ERC20Mockup = artifacts.require('./ERC20Mockup')
const util = require('util')
contract('ERCEscrowMockup', accounts => {
const [userCreator, userSeller, userBuyer01, userBuyer02, ...others] = accounts
let contracts
const BNConst = {
totalFund: 100,
user1: 10,
user2: 33,
zero: 0,
DigOne: 1,
DigTwo: 2,
}
before(async () => {
const seller = await ERC20Mockup.new(userCreator, 10000)
await seller.transfer(userSeller, 1000, {from: userCreator})
const buyer = await ERC20Mockup.new(userCreator, 10000)
await buyer.transfer(userBuyer01, 1000, {from: userCreator})
await buyer.transfer(userBuyer02, 1000, {from: userCreator})
const escrow = await EscrowContractAccount.new(BNConst.totalFund, seller.address, buyer.address, {from: userSeller})
contracts = {
escrow,
seller,
buyer,
}
for (const key in BNConst) {
const v = BNConst[key]
BNConst[key] = {
origin: v,
bn: await escrow.helper_bigInt256(v),
}
}
//console.log('-check point-1-', util.inspect(contracts, false, null, true))
})
it('escrow start', async () => {
const result = await contracts.seller.escrowFund(contracts.escrow.address, BNConst.totalFund.origin, {
from: userSeller,
})
const [buyer, seller] = await contracts.escrow.escrowBalanceOf(userSeller)
const state = await contracts.escrow.escrowStatus()
//console.log('---check00000', state)
//console.log('-check point-1-', util.inspect(result, false, null, true))
//console.log('--balance---', {buyer, seller, bigNumberPrefix})
assert(buyer.eq(BNConst.zero.bn))
assert(seller.eq(BNConst.totalFund.bn))
})
it('purchase first buyer', async () => {
await contracts.buyer.escrowFund(contracts.escrow.address, BNConst.user1.origin, {from: userBuyer01})
const [buyer, seller] = await contracts.escrow.escrowBalanceOf(userBuyer01)
})
it('first buyer refund and purchase', async () => {
await contracts.buyer.escrowRefund(contracts.escrow.address, BNConst.user1.origin, {from: userBuyer01})
let result = await contracts.escrow.helper_numberOfBuyers()
//console.log('-----1----', result)
assert(result.eq(BNConst.zero.bn))
await contracts.buyer.escrowFund(contracts.escrow.address, BNConst.user1.origin, {from: userBuyer01})
result = await contracts.escrow.helper_numberOfBuyers()
//console.log('-----1----', result)
assert(result.eq(BNConst.DigOne.bn))
})
it('send buyer purchase can finialize fund', async () => {
await contracts.buyer.escrowFund(contracts.escrow.address, BNConst.user2.origin, {from: userBuyer02})
let result = await contracts.escrow.helper_numberOfBuyers()
//console.log('-----1----', result)
assert(result.eq(BNConst.DigTwo.bn))
result = await contracts.escrow.escrowStatus()
//console.log('-----2----', result)
assert(result === 'Success')
})
it('check balance of seller and buyer', async () => {
const balance = {
sellerToken: {
issuer: await contracts.seller.balanceOf(userSeller),
b01: await contracts.seller.balanceOf(userBuyer01),
b02: await contracts.seller.balanceOf(userBuyer02),
},
buyerToken: {
issuer: await contracts.buyer.balanceOf(userSeller),
b01: await contracts.buyer.balanceOf(userBuyer01),
b02: await contracts.buyer.balanceOf(userBuyer02),
},
}
//console.log('-check point-1-', util.inspect(balance, false, null, true))
})
it('check balance after withdraw', async () => {
await contracts.escrow.escrowWithdraw({from: userSeller})
await contracts.escrow.escrowWithdraw({from: userBuyer01})
await contracts.escrow.escrowWithdraw({from: userBuyer02})
const balance = {
sellerToken: {
issuer: await contracts.seller.balanceOf(userSeller),
b01: await contracts.seller.balanceOf(userBuyer01),
b02: await contracts.seller.balanceOf(userBuyer02),
},
buyerToken: {
issuer: await contracts.buyer.balanceOf(userSeller),
b01: await contracts.buyer.balanceOf(userBuyer01),
b02: await contracts.buyer.balanceOf(userBuyer02),
},
}
//console.log('-check point-1-', util.inspect(balance, false, null, true))
})
})