git.delta.rocks / unique-network / refs/commits / d21fc886ea0c

difftreelog

source

tests/src/creditFeesToTreasury.test.ts5.3 KiBsourcehistory
1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//56import chai from 'chai';7import chaiAsPromised from 'chai-as-promised';8import { default as usingApi, submitTransactionAsync } from "./substrate/substrate-api";9import { alicesPublicKey, bobsPublicKey } from "./accounts";10import privateKey from "./substrate/privateKey";11import { BigNumber } from 'bignumber.js';12import { createCollectionExpectSuccess, getGenericResult } from './util/helpers';1314chai.use(chaiAsPromised);15const expect = chai.expect;1617const Treasury = "5EYCAe5ijiYfyeZ2JJCGq56LmPyNRAKzpG4QkoQkkQNB5e6Z";18const saneMinimumFee = 0.0001;19const saneMaximumFee = 0.01;2021describe('integration test: Fees must be credited to Treasury:', () => {22  it('Total issuance does not change', async () => {23    await usingApi(async (api) => {24      const totalBefore = new BigNumber((await api.query.balances.totalIssuance()).toString());2526      const alicePrivateKey = privateKey('//Alice');27      const amount = new BigNumber(1);28      const transfer = api.tx.balances.transfer(bobsPublicKey, amount.toFixed());2930      const result = getGenericResult(await submitTransactionAsync(alicePrivateKey, transfer));3132      const totalAfter = new BigNumber((await api.query.balances.totalIssuance()).toString());3334      expect(result.success).to.be.true;35      expect(totalAfter.toFixed()).to.be.equal(totalBefore.toFixed());36    });37  });3839  it('Sender balance decreased by fee+sent amount, Treasury balance increased by fee', async () => {40    await usingApi(async (api) => {41      const alicePrivateKey = privateKey('//Alice');42      const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());43      const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());4445      const amount = new BigNumber(1);46      const transfer = api.tx.balances.transfer(bobsPublicKey, amount.toFixed());47      const result = getGenericResult(await submitTransactionAsync(alicePrivateKey, transfer));4849      const treasuryBalanceAfter = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());50      const aliceBalanceAfter = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());51      const fee = aliceBalanceBefore.minus(aliceBalanceAfter).minus(amount);52      const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);5354      expect(result.success).to.be.true;55      expect(treasuryIncrease.toFixed()).to.be.equal(fee.toFixed());56    });57  });5859  it('Treasury balance increased by failed tx fee', async () => {60    await usingApi(async (api) => {61      const bobPrivateKey = privateKey('//Bob');62      const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());63      const bobBalanceBefore = new BigNumber((await api.query.system.account(bobsPublicKey)).data.free.toString());6465      const badTx = api.tx.balances.setBalance(alicesPublicKey, 0, 0);66      const result = getGenericResult(await submitTransactionAsync(bobPrivateKey, badTx));6768      const treasuryBalanceAfter = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());69      const bobBalanceAfter = new BigNumber((await api.query.system.account(bobsPublicKey)).data.free.toString());70      const fee = bobBalanceBefore.minus(bobBalanceAfter);71      const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);7273      expect(result.success).to.be.false;74      expect(treasuryIncrease.toFixed()).to.be.equal(fee.toFixed());75    });76  });7778  it('NFT Transactions also send fees to Treasury', async () => {79    await usingApi(async (api) => {80      const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());81      const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());8283      await createCollectionExpectSuccess('A', 'B', 'C', 'NFT');8485      const treasuryBalanceAfter = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());86      const aliceBalanceAfter = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());87      const fee = aliceBalanceBefore.minus(aliceBalanceAfter);88      const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);8990      expect(treasuryIncrease.toFixed()).to.be.equal(fee.toFixed());91    });92  });9394  it('Fees are sane', async () => {95    await usingApi(async (api) => {96      const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());97      const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());9899      await createCollectionExpectSuccess('A', 'B', 'C', 'NFT');100101      const treasuryBalanceAfter = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());102      const aliceBalanceAfter = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());103      const fee = aliceBalanceBefore.minus(aliceBalanceAfter);104      const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);105106      expect(fee.dividedBy(1e15).toNumber()).to.be.lessThan(0.01);107      expect(fee.dividedBy(1e15).toNumber()).to.be.greaterThan(0.0001);108    });109  });110111});112