forked from DecentralizedClimateFoundation/DCIPs
116 lines
4.7 KiB
JavaScript
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))
|
|
})
|
|
})
|