git.delta.rocks / unique-network / refs/commits / 5d12903f3ba5

difftreelog

source

tests/src/creditFeesToTreasury.test.ts5.2 KiBsourcehistory
1import chai from 'chai';2import chaiAsPromised from 'chai-as-promised';3import { default as usingApi, submitTransactionAsync } from "./substrate/substrate-api";4import { alicesPublicKey, bobsPublicKey } from "./accounts";5import privateKey from "./substrate/privateKey";6import { BigNumber } from 'bignumber.js';7import { createCollectionExpectSuccess, getGenericResult } from './util/helpers';89chai.use(chaiAsPromised);10const expect = chai.expect;1112const Treasury = "5EYCAe5ijiYfyeZ2JJCGq56LmPyNRAKzpG4QkoQkkQNB5e6Z";13const saneMinimumFee = 0.0001;14const saneMaximumFee = 0.01;1516describe('integration test: Fees must be credited to Treasury:', () => {17  it('Total issuance does not change', async () => {18    await usingApi(async (api) => {19      const totalBefore = new BigNumber((await api.query.balances.totalIssuance()).toString());2021      const alicePrivateKey = privateKey('//Alice');22      const amount = new BigNumber(1);23      const transfer = api.tx.balances.transfer(bobsPublicKey, amount.toFixed());2425      const result = getGenericResult(await submitTransactionAsync(alicePrivateKey, transfer));2627      const totalAfter = new BigNumber((await api.query.balances.totalIssuance()).toString());2829      expect(result.success).to.be.true;30      expect(totalAfter.toFixed()).to.be.equal(totalBefore.toFixed());31    });32  });3334  it('Sender balance decreased by fee+sent amount, Treasury balance increased by fee', async () => {35    await usingApi(async (api) => {36      const alicePrivateKey = privateKey('//Alice');37      const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());38      const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());3940      const amount = new BigNumber(1);41      const transfer = api.tx.balances.transfer(bobsPublicKey, amount.toFixed());42      const result = getGenericResult(await submitTransactionAsync(alicePrivateKey, transfer));4344      const treasuryBalanceAfter = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());45      const aliceBalanceAfter = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());46      const fee = aliceBalanceBefore.minus(aliceBalanceAfter).minus(amount);47      const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);4849      expect(result.success).to.be.true;50      expect(treasuryIncrease.toFixed()).to.be.equal(fee.toFixed());51    });52  });5354  it('Treasury balance increased by failed tx fee', async () => {55    await usingApi(async (api) => {56      const bobPrivateKey = privateKey('//Bob');57      const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());58      const bobBalanceBefore = new BigNumber((await api.query.system.account(bobsPublicKey)).data.free.toString());5960      const badTx = api.tx.balances.setBalance(alicesPublicKey, 0, 0);61      const result = getGenericResult(await submitTransactionAsync(bobPrivateKey, badTx));6263      const treasuryBalanceAfter = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());64      const bobBalanceAfter = new BigNumber((await api.query.system.account(bobsPublicKey)).data.free.toString());65      const fee = bobBalanceBefore.minus(bobBalanceAfter);66      const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);6768      expect(result.success).to.be.false;69      expect(treasuryIncrease.toFixed()).to.be.equal(fee.toFixed());70    });71  });7273  it('NFT Transactions also send fees to Treasury', async () => {74    await usingApi(async (api) => {75      const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());76      const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());7778      await createCollectionExpectSuccess('A', 'B', 'C', 'NFT');7980      const treasuryBalanceAfter = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());81      const aliceBalanceAfter = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());82      const fee = aliceBalanceBefore.minus(aliceBalanceAfter);83      const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);8485      expect(treasuryIncrease.toFixed()).to.be.equal(fee.toFixed());86    });87  });8889  it('Fees are sane', async () => {90    await usingApi(async (api) => {91      const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());92      const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());9394      await createCollectionExpectSuccess('A', 'B', 'C', 'NFT');9596      const treasuryBalanceAfter = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());97      const aliceBalanceAfter = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());98      const fee = aliceBalanceBefore.minus(aliceBalanceAfter);99      const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);100101      expect(fee.dividedBy(1e15).toNumber()).to.be.lessThan(0.01);102      expect(fee.dividedBy(1e15).toNumber()).to.be.greaterThan(0.0001);103    });104  });105106});107