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

difftreelog

source

tests/src/transferFrom.test.ts9.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//5import { ApiPromise } from '@polkadot/api';6import chai from 'chai';7import chaiAsPromised from 'chai-as-promised';8import privateKey from './substrate/privateKey';9import { default as usingApi } from './substrate/substrate-api';10import {11  approveExpectFail,12  approveExpectSuccess,13  createCollectionExpectSuccess,14  createItemExpectSuccess,15  destroyCollectionExpectSuccess,16  transferFromExpectFail,17  transferFromExpectSuccess,18} from './util/helpers';1920chai.use(chaiAsPromised);21const expect = chai.expect;2223describe('Integration Test transferFrom(from, recipient, collection_id, item_id, value):', () => {24  it('Execute the extrinsic and check nftItemList - owner of token', async () => {25    await usingApi(async (api: ApiPromise) => {26      const Alice = privateKey('//Alice');27      const Bob = privateKey('//Bob');28      const Charlie = privateKey('//CHARLIE');29      // nft30      const nftCollectionId = await createCollectionExpectSuccess();31      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');32      await approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob);3334      await transferFromExpectSuccess(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 1, 'NFT');3536      // fungible37      const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});38      const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');39      await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);40      await transferFromExpectSuccess(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1, 'Fungible');41      // reFungible42      const reFungibleCollectionId = await43        createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});44      const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');45      await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);46      await transferFromExpectSuccess(reFungibleCollectionId,47        newReFungibleTokenId, Bob, Alice, Charlie, 1, 'ReFungible');4849      // garbage collection :-D50      await destroyCollectionExpectSuccess(nftCollectionId);51      await destroyCollectionExpectSuccess(fungibleCollectionId);52      await destroyCollectionExpectSuccess(reFungibleCollectionId);53    });54  });55});5657describe('Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value):', () => {58  it('transferFrom for a collection that does not exist', async () => {59    await usingApi(async (api: ApiPromise) => {60      const Alice = privateKey('//Alice');61      const Bob = privateKey('//Bob');62      const Charlie = privateKey('//CHARLIE');63      // nft64      const nftCollectionId = await createCollectionExpectSuccess();65      await approveExpectFail(nftCollectionId + 1, 1, Alice, Bob);6667      await transferFromExpectFail(nftCollectionId + 1, 1, Bob, Alice, Charlie, 1);6869      // fungible70      const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});71      await approveExpectFail(fungibleCollectionId + 1, 1, Alice, Bob);7273      await transferFromExpectFail(fungibleCollectionId + 1, 1, Bob, Alice, Charlie, 1);74      // reFungible75      const reFungibleCollectionId = await76        createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});77      await approveExpectFail(reFungibleCollectionId + 1, 1, Alice, Bob);7879      await transferFromExpectFail(reFungibleCollectionId + 1, 1, Bob, Alice, Charlie, 1);8081      // garbage collection :-D82      await destroyCollectionExpectSuccess(nftCollectionId);83      await destroyCollectionExpectSuccess(fungibleCollectionId);84      await destroyCollectionExpectSuccess(reFungibleCollectionId);85    });86  });8788  /* it('transferFrom for a collection that was destroyed', async () => {89    await usingApi(async (api: ApiPromise) => {90      this test copies approve negative test91    });92  }); */9394  /* it('transferFrom a token that does not exist', async () => {95    await usingApi(async (api: ApiPromise) => {96      this test copies approve negative test97    });98  }); */99100  /* it('transferFrom a token that was deleted', async () => {101    await usingApi(async (api: ApiPromise) => {102      this test copies approve negative test103    });104  }); */105106  it('transferFrom for not approved address', async () => {107    await usingApi(async (api: ApiPromise) => {108      const Alice = privateKey('//Alice');109      const Bob = privateKey('//Bob');110      const Charlie = privateKey('//CHARLIE');111      // nft112      const nftCollectionId = await createCollectionExpectSuccess();113      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');114115      await transferFromExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 1);116117      // fungible118      const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});119      const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');120      await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1);121      // reFungible122      const reFungibleCollectionId = await123        createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});124      const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');125      await transferFromExpectFail(reFungibleCollectionId,126        newReFungibleTokenId, Bob, Alice, Charlie, 1);127128      // garbage collection :-D129      await destroyCollectionExpectSuccess(nftCollectionId);130      await destroyCollectionExpectSuccess(fungibleCollectionId);131      await destroyCollectionExpectSuccess(reFungibleCollectionId);132    });133  });134135  it('transferFrom incorrect token count', async () => {136    await usingApi(async (api: ApiPromise) => {137      const Alice = privateKey('//Alice');138      const Bob = privateKey('//Bob');139      const Charlie = privateKey('//CHARLIE');140      // nft141      const nftCollectionId = await createCollectionExpectSuccess();142      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');143      await approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob);144145      await transferFromExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 2);146147      // fungible148      const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});149      const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');150      await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);151      await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 2);152      // reFungible153      const reFungibleCollectionId = await154        createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});155      const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');156      await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);157      await transferFromExpectFail(reFungibleCollectionId,158        newReFungibleTokenId, Bob, Alice, Charlie, 2);159160      // garbage collection :-D161      await destroyCollectionExpectSuccess(nftCollectionId);162      await destroyCollectionExpectSuccess(fungibleCollectionId);163      await destroyCollectionExpectSuccess(reFungibleCollectionId);164    });165  });166167  it('execute transferFrom from account that is not owner of collection', async () => {168    await usingApi(async (api: ApiPromise) => {169      const Alice = privateKey('//Alice');170      const Bob = privateKey('//Bob');171      const Charlie = privateKey('//CHARLIE');172      const Dave = privateKey('//DAVE');173      // nft174      const nftCollectionId = await createCollectionExpectSuccess();175      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');176      try {177        await approveExpectFail(nftCollectionId, newNftTokenId, Dave, Bob);178        await transferFromExpectFail(nftCollectionId, newNftTokenId, Dave, Alice, Charlie, 1);179      } catch (e) {180        // tslint:disable-next-line:no-unused-expression181        expect(e).to.be.exist;182      }183184      // await transferFromExpectFail(nftCollectionId, newNftTokenId, Dave, Alice, Charlie, 1);185186      // fungible187      const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});188      const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');189      try {190        await approveExpectFail(fungibleCollectionId, newFungibleTokenId, Dave, Bob);191        await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Dave, Alice, Charlie, 1);192      } catch (e) {193        // tslint:disable-next-line:no-unused-expression194        expect(e).to.be.exist;195      }196      // reFungible197      const reFungibleCollectionId = await198        createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});199      const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');200      try {201        await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Dave, Bob);202        await transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, Dave, Alice, Charlie, 1);203      } catch (e) {204        // tslint:disable-next-line:no-unused-expression205        expect(e).to.be.exist;206      }207      // garbage collection :-D208      await destroyCollectionExpectSuccess(nftCollectionId);209      await destroyCollectionExpectSuccess(fungibleCollectionId);210      await destroyCollectionExpectSuccess(reFungibleCollectionId);211    });212  });213});