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

difftreelog

source

tests/src/approve.test.ts7.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 BN from 'bn.js';7import chai from 'chai';8import chaiAsPromised from 'chai-as-promised';9import privateKey from './substrate/privateKey';10import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api';11import {12  approveExpectFail,13  approveExpectSuccess,14  createCollectionExpectSuccess,15  createItemExpectSuccess,16  destroyCollectionExpectSuccess,17} from './util/helpers';1819chai.use(chaiAsPromised);20const expect = chai.expect;2122describe('Integration Test approve(spender, collection_id, item_id, amount):', () => {23  it('Execute the extrinsic and check approvedList', async () => {24    await usingApi(async (api: ApiPromise) => {25      const Alice = privateKey('//Alice');26      const Bob = privateKey('//Bob');27      const nftCollectionId = await createCollectionExpectSuccess();28      // nft29      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');30      await approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob);31      // fungible32      const fungibleCollectionId = await createCollectionExpectSuccess({mode: 'Fungible'});33      const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');34      await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);35      // reFungible36      const reFungibleCollectionId = await createCollectionExpectSuccess({mode: 'ReFungible'});37      const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');38      await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);3940      // garbage collection :-D41      await destroyCollectionExpectSuccess(nftCollectionId);42      await destroyCollectionExpectSuccess(fungibleCollectionId);43      await destroyCollectionExpectSuccess(reFungibleCollectionId);44    });45  });4647  it('Remove approval by using 0 amount', async () => {48    await usingApi(async (api: ApiPromise) => {49      const Alice = privateKey('//Alice');50      const Bob = privateKey('//Bob');51      const nftCollectionId = await createCollectionExpectSuccess();52      // nft53      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');54      await approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1);55      await approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 0);56      // fungible57      const fungibleCollectionId = await createCollectionExpectSuccess({mode: 'Fungible'});58      const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');59      await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1);60      await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 0);61      // reFungible62      const reFungibleCollectionId = await createCollectionExpectSuccess({mode: 'ReFungible'});63      const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');64      await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 1);65      await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 0);6667      // garbage collection :-D68      await destroyCollectionExpectSuccess(nftCollectionId);69      await destroyCollectionExpectSuccess(fungibleCollectionId);70      await destroyCollectionExpectSuccess(reFungibleCollectionId);71    });72  });73});7475describe('Negative Integration Test approve(spender, collection_id, item_id, amount):', () => {76  it('Approve for a collection that does not exist', async () => {77    await usingApi(async (api: ApiPromise) => {78      const Alice = privateKey('//Alice');79      const Bob = privateKey('//Bob');80      // nft81      const nftCollectionId = await createCollectionExpectSuccess();82      await approveExpectFail(nftCollectionId + 1, 1, Alice, Bob);83      // fungible84      const fungibleCollectionId = await createCollectionExpectSuccess({mode: 'Fungible'});85      await approveExpectFail(fungibleCollectionId + 1, 1, Alice, Bob);86      // reFungible87      const reFungibleCollectionId = await createCollectionExpectSuccess({mode: 'ReFungible'});88      await approveExpectFail(reFungibleCollectionId + 1, 1, Alice, Bob);89      // garbage collection :-D90      await destroyCollectionExpectSuccess(nftCollectionId);91      await destroyCollectionExpectSuccess(fungibleCollectionId);92      await destroyCollectionExpectSuccess(reFungibleCollectionId);93    });94  });9596  it('Approve for a collection that was destroyed', async () => {97    await usingApi(async (api: ApiPromise) => {98      const Alice = privateKey('//Alice');99      const Bob = privateKey('//Bob');100      // nft101      const nftCollectionId = await createCollectionExpectSuccess();102      await destroyCollectionExpectSuccess(nftCollectionId);103      await approveExpectFail(nftCollectionId, 1, Alice, Bob);104      // fungible105      const fungibleCollectionId = await createCollectionExpectSuccess({mode: 'Fungible'});106      await destroyCollectionExpectSuccess(fungibleCollectionId);107      await approveExpectFail(fungibleCollectionId, 1, Alice, Bob);108      // reFungible109      const reFungibleCollectionId = await createCollectionExpectSuccess({mode: 'ReFungible'});110      await destroyCollectionExpectSuccess(reFungibleCollectionId);111      await approveExpectFail(reFungibleCollectionId, 1, Alice, Bob);112    });113  });114115  it('Approve transfer of a token that does not exist', async () => {116    await usingApi(async (api: ApiPromise) => {117      const Alice = privateKey('//Alice');118      const Bob = privateKey('//Bob');119      // nft120      const nftCollectionId = await createCollectionExpectSuccess();121      await approveExpectFail(nftCollectionId, 2, Alice, Bob);122      // fungible123      const fungibleCollectionId = await createCollectionExpectSuccess({mode: 'Fungible'});124      await approveExpectFail(fungibleCollectionId, 2, Alice, Bob);125      // reFungible126      const reFungibleCollectionId = await createCollectionExpectSuccess({mode: 'ReFungible'});127      await approveExpectFail(reFungibleCollectionId, 2, Alice, Bob);128      // garbage collection :-D129      await destroyCollectionExpectSuccess(nftCollectionId);130      await destroyCollectionExpectSuccess(fungibleCollectionId);131      await destroyCollectionExpectSuccess(reFungibleCollectionId);132    });133  });134135  it('Approve using the address that does not own the approved token', async () => {136    await usingApi(async (api: ApiPromise) => {137      const Alice = privateKey('//Alice');138      const Bob = privateKey('//Bob');139      const nftCollectionId = await createCollectionExpectSuccess();140      // nft141      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');142      await approveExpectFail(nftCollectionId, newNftTokenId, Bob, Alice);143      // fungible144      const fungibleCollectionId = await createCollectionExpectSuccess({mode: 'Fungible'});145      const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');146      await approveExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice);147      // reFungible148      const reFungibleCollectionId = await createCollectionExpectSuccess({mode: 'ReFungible'});149      const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');150      await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice);151152      // garbage collection :-D153      await destroyCollectionExpectSuccess(nftCollectionId);154      await destroyCollectionExpectSuccess(fungibleCollectionId);155      await destroyCollectionExpectSuccess(reFungibleCollectionId);156    });157  });158});