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

difftreelog

source

tests/src/transfer.test.ts8.7 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 { ApiPromise } from '@polkadot/api';7import { IKeyringPair } from '@polkadot/types/types';8import { expect } from 'chai';9import { alicesPublicKey, bobsPublicKey } from './accounts';10import getBalance from './substrate/get-balance';11import privateKey from './substrate/privateKey';12import { default as usingApi, submitTransactionAsync } from './substrate/substrate-api';13import {14  burnItemExpectSuccess, createCollectionExpectSuccess, createItemExpectSuccess,15  destroyCollectionExpectSuccess,16  findUnusedAddress,17  getCreateCollectionResult,18  getCreateItemResult,19  transferExpectFailure,20  transferExpectSuccess,21} from './util/helpers';2223let Alice: IKeyringPair;24let Bob: IKeyringPair;25let Charlie: IKeyringPair;2627describe('Integration Test Transfer(recipient, collection_id, item_id, value)', () => {28  it('Balance transfers and check balance', async () => {29    await usingApi(async (api: ApiPromise) => {30      const [alicesBalanceBefore, bobsBalanceBefore] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);3132      const alicePrivateKey = privateKey('//Alice');3334      const transfer = api.tx.balances.transfer(bobsPublicKey, 1n);35      const events = await submitTransactionAsync(alicePrivateKey, transfer);36      const result = getCreateItemResult(events);37      // tslint:disable-next-line:no-unused-expression38      expect(result.success).to.be.true;3940      const [alicesBalanceAfter, bobsBalanceAfter] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);4142      // tslint:disable-next-line:no-unused-expression43      expect(alicesBalanceAfter < alicesBalanceBefore).to.be.true;44      // tslint:disable-next-line:no-unused-expression45      expect(bobsBalanceAfter > bobsBalanceBefore).to.be.true;46    });47  });4849  it('Inability to pay fees error message is correct', async () => {50    await usingApi(async (api) => {51      // Find unused address52      const pk = await findUnusedAddress(api);5354      const badTransfer = api.tx.balances.transfer(bobsPublicKey, 1n);55      // const events = await submitTransactionAsync(pk, badTransfer);56      const badTransaction = async () => {57        const events = await submitTransactionAsync(pk, badTransfer);58        const result = getCreateCollectionResult(events);59        // tslint:disable-next-line:no-unused-expression60        expect(result.success).to.be.false;61      };62      expect(badTransaction()).to.be.rejectedWith('Inability to pay some fees , e.g. account balance too low');63    });64  });6566  it('User can transfer owned token', async () => {67    await usingApi(async () => {68      const Alice = privateKey('//Alice');69      const Bob = privateKey('//Bob');70      // nft71      const nftCollectionId = await createCollectionExpectSuccess();72      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');73      await transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1, 'NFT');74      // fungible75      const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});76      const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');77      await transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');78      // reFungible79      const reFungibleCollectionId = await80      createCollectionExpectSuccess({mode: {type: 'ReFungible'}});81      const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');82      await transferExpectSuccess(83        reFungibleCollectionId,84        newReFungibleTokenId,85        Alice,86        Bob,87        100,88        'ReFungible',89      );90    });91  });92});9394describe('Negative Integration Test Transfer(recipient, collection_id, item_id, value)', () => {95  before(async () => {96    await usingApi(async () => {97      Alice = privateKey('//Alice');98      Bob = privateKey('//Bob');99      Charlie = privateKey('//Charlie');100    });101  });102  it('Transfer with not existed collection_id', async () => {103    await usingApi(async (api) => {104      // nft105      const nftCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;106      await transferExpectFailure(nftCollectionCount + 1, 1, Alice, Bob, 1);107      // fungible108      const fungibleCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;109      await transferExpectFailure(fungibleCollectionCount + 1, 1, Alice, Bob, 1);110      // reFungible111      const reFungibleCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;112      await transferExpectFailure(reFungibleCollectionCount + 1, 1, Alice, Bob, 1);113    });114  });115  it('Transfer with deleted collection_id', async () => {116    // nft117    const nftCollectionId = await createCollectionExpectSuccess();118    const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');119    await destroyCollectionExpectSuccess(nftCollectionId);120    await transferExpectFailure(nftCollectionId, newNftTokenId, Alice, Bob, 1);121    // fungible122    const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});123    const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');124    await destroyCollectionExpectSuccess(fungibleCollectionId);125    await transferExpectFailure(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1);126    // reFungible127    const reFungibleCollectionId = await128    createCollectionExpectSuccess({mode: {type: 'ReFungible'}});129    const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');130    await destroyCollectionExpectSuccess(reFungibleCollectionId);131    await transferExpectFailure(132      reFungibleCollectionId,133      newReFungibleTokenId,134      Alice,135      Bob,136      1,137    );138  });139  it('Transfer with not existed item_id', async () => {140    // nft141    const nftCollectionId = await createCollectionExpectSuccess();142    await transferExpectFailure(nftCollectionId, 2, Alice, Bob, 1);143    // fungible144    const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});145    await transferExpectFailure(fungibleCollectionId, 2, Alice, Bob, 1);146    // reFungible147    const reFungibleCollectionId = await148    createCollectionExpectSuccess({mode: {type: 'ReFungible'}});149    await transferExpectFailure(150      reFungibleCollectionId,151      2,152      Alice,153      Bob,154      1,155    );156  });157  it('Transfer with deleted item_id', async () => {158    // nft159    const nftCollectionId = await createCollectionExpectSuccess();160    const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');161    await burnItemExpectSuccess(Alice, nftCollectionId, newNftTokenId, 1);162    await transferExpectFailure(nftCollectionId, newNftTokenId, Alice, Bob, 1);163    // fungible164    const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});165    const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');166    await burnItemExpectSuccess(Alice, fungibleCollectionId, newFungibleTokenId, 10);167    await transferExpectFailure(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1);168    // reFungible169    const reFungibleCollectionId = await170    createCollectionExpectSuccess({mode: {type: 'ReFungible'}});171    const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');172    await burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 1);173    await transferExpectFailure(174      reFungibleCollectionId,175      newReFungibleTokenId,176      Alice,177      Bob,178      1,179    );180  });181  it('Transfer with recipient that is not owner', async () => {182    // nft183    const nftCollectionId = await createCollectionExpectSuccess();184    const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');185    await transferExpectFailure(nftCollectionId, newNftTokenId, Charlie, Bob, 1);186    // fungible187    const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});188    const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');189    await transferExpectFailure(fungibleCollectionId, newFungibleTokenId, Charlie, Bob, 1);190    // reFungible191    const reFungibleCollectionId = await192    createCollectionExpectSuccess({mode: {type: 'ReFungible'}});193    const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');194    await transferExpectFailure(195      reFungibleCollectionId,196      newReFungibleTokenId,197      Charlie,198      Bob,199      1,200    );201  });202});