difftreelog
transferSuccess
in: master
3 files changed
tests/src/burnItem.test.tsdiffbeforeafterboth36 const events = await submitTransactionAsync(alice, tx);36 const events = await submitTransactionAsync(alice, tx);37 const result = getGenericResult(events);37 const result = getGenericResult(events);38 39 // Get the item 38 // Get the item40 const item: any = (await api.query.nft.nftItemList(collectionId, tokenId)).toJSON();39 const item: any = (await api.query.nft.nftItemList(collectionId, tokenId)).toJSON();41 42 // What to expect40 // What to expect41 // tslint:disable-next-line:no-unused-expression43 expect(result.success).to.be.true;42 expect(result.success).to.be.true;43 // tslint:disable-next-line:no-unused-expression44 expect(item).to.be.not.null;44 expect(item).to.be.not.null;45 expect(item.Owner).to.be.equal(nullPublicKey);45 expect(item.Owner).to.be.equal(nullPublicKey);46 });46 });tests/src/transfer.test.tsdiffbeforeafterboth8import { alicesPublicKey, bobsPublicKey } from './accounts';8import { alicesPublicKey, bobsPublicKey } from './accounts';9import getBalance from './substrate/get-balance';9import getBalance from './substrate/get-balance';10import privateKey from './substrate/privateKey';10import privateKey from './substrate/privateKey';11import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';11import { default as usingApi, submitTransactionAsync } from './substrate/substrate-api';12import {12import {13 approveExpectSuccess,13 burnItemExpectSuccess, createCollectionExpectSuccess, createItemExpectSuccess,14 createCollectionExpectSuccess, createItemExpectSuccess,14 destroyCollectionExpectSuccess,15 findUnusedAddress,15 findUnusedAddress,16 getCreateCollectionResult,16 getCreateCollectionResult,17 getCreateItemResult,17 getCreateItemResult,18 transferExpectFail,18 transferExpectSuccess,19 transferExpectSuccess,19} from './util/helpers';20} from './util/helpers';2122/*describe('Integration Test Transfer(recipient, collection_id, item_id, value)', () => {23 it('Balance transfers and check balance', async () => {24 await usingApi(async (api: ApiPromise) => {25 const [alicesBalanceBefore, bobsBalanceBefore] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);2627 const alicePrivateKey = privateKey('//Alice');2829 const transfer = api.tx.balances.transfer(bobsPublicKey, 1n);30 const events = await submitTransactionAsync(alicePrivateKey, transfer);31 const result = getCreateItemResult(events);32 // tslint:disable-next-line:no-unused-expression33 expect(result.success).to.be.true;3435 const [alicesBalanceAfter, bobsBalanceAfter] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);3637 // tslint:disable-next-line:no-unused-expression38 expect(alicesBalanceAfter < alicesBalanceBefore).to.be.true;39 // tslint:disable-next-line:no-unused-expression40 expect(bobsBalanceAfter > bobsBalanceBefore).to.be.true;41 });42 });4344 it('Inability to pay fees error message is correct', async () => {45 await usingApi(async (api) => {46 // Find unused address47 const pk = await findUnusedAddress(api);4849 const badTransfer = api.tx.balances.transfer(bobsPublicKey, 1n);50 // const events = await submitTransactionAsync(pk, badTransfer);51 const badTransaction = async () => {52 const events = await submitTransactionAsync(pk, badTransfer);53 const result = getCreateCollectionResult(events);54 // tslint:disable-next-line:no-unused-expression55 expect(result.success).to.be.false;56 };57 expect(badTransaction()).to.be.rejectedWith('Inability to pay some fees , e.g. account balance too low');58 });59 });6061 it('Create collection, balance transfers and check balance', async () => {62 await usingApi(async (api) => {63 const Alice = privateKey('//Alice');64 const Bob = privateKey('//Bob');65 // nft66 const nftCollectionId = await createCollectionExpectSuccess();67 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');68 await transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1, 'NFT');69 // fungible70 const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});71 const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');72 await transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');73 // reFungible74 const reFungibleCollectionId = await75 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});76 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');77 await transferExpectSuccess(reFungibleCollectionId,78 newReFungibleTokenId, Alice, Bob, 1, 'ReFungible');79 });80 });81});*/208221describe('Integration Test Transfer(recipient, collection_id, item_id, value)', () => {83describe('Negative Integration Test Transfer(recipient, collection_id, item_id, value)', () => {22 it('Balance transfers and check balance', async () => {84 /*it('Transfer with not existed collection_id', async () => {23 await usingApi(async (api: ApiPromise) => {85 await usingApi(async (api: ApiPromise) => {24 const [alicesBalanceBefore, bobsBalanceBefore] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);86 const Alice = privateKey('//Alice');2587 const Bob = privateKey('//Bob');26 const alicePrivateKey = privateKey('//Alice');88 // nft2789 const nftCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;28 const transfer = api.tx.balances.transfer(bobsPublicKey, 1n);90 await transferExpectFail(nftCollectionCount + 1, 1, Alice, Bob, 1);29 const events = await submitTransactionAsync(alicePrivateKey, transfer);91 // fungible30 const result = getCreateItemResult(events);92 const fungibleCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;31 // tslint:disable-next-line:no-unused-expression93 await transferExpectFail(fungibleCollectionCount + 1, 1, Alice, Bob, 1);32 expect(result.success).to.be.true;94 // reFungible3395 const reFungibleCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;34 const [alicesBalanceAfter, bobsBalanceAfter] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);96 await transferExpectFail(reFungibleCollectionCount + 1, 1, Alice, Bob, 1);3597 });36 // tslint:disable-next-line:no-unused-expression98 });37 expect(alicesBalanceAfter < alicesBalanceBefore).to.be.true;99 it('Transfer with deleted collection_id', async () => {38 // tslint:disable-next-line:no-unused-expression100 await usingApi(async (api: ApiPromise) => {39 expect(bobsBalanceAfter > bobsBalanceBefore).to.be.true;101 const Alice = privateKey('//Alice');40 });102 const Bob = privateKey('//Bob');41 });103 // nft42104 const nftCollectionId = await createCollectionExpectSuccess();43 it('Inability to pay fees error message is correct', async () => {105 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');44 await usingApi(async (api) => {106 await destroyCollectionExpectSuccess(nftCollectionId);45 // Find unused address107 await transferExpectFail(nftCollectionId, newNftTokenId, Alice, Bob, 1, 'NFT');46 const pk = await findUnusedAddress(api);108 // fungible47109 const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});48 const badTransfer = api.tx.balances.transfer(bobsPublicKey, 1n);110 const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');49 // const events = await submitTransactionAsync(pk, badTransfer);111 await destroyCollectionExpectSuccess(fungibleCollectionId);50 const badTransaction = async () => {112 await transferExpectFail(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');51 const events = await submitTransactionAsync(pk, badTransfer);113 // reFungible52 const result = getCreateCollectionResult(events);114 const reFungibleCollectionId = await53 // tslint:disable-next-line:no-unused-expression115 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});54 expect(result.success).to.be.false;116 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');55 };117 await destroyCollectionExpectSuccess(reFungibleCollectionId);56 expect(badTransaction()).to.be.rejectedWith('Inability to pay some fees , e.g. account balance too low');118 await transferExpectFail(reFungibleCollectionId,57 });119 newReFungibleTokenId, Alice, Bob, 1, 'ReFungible');58 });120 });59121 });122 it('Transfer with not existed item_id', async () => {123 await usingApi(async (api: ApiPromise) => {124 const Alice = privateKey('//Alice');125 const Bob = privateKey('//Bob');126 // nft127 const nftCollectionId = await createCollectionExpectSuccess();128 await transferExpectFail(nftCollectionId, 2, Alice, Bob, 1, 'NFT');129 // fungible130 const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});131 await transferExpectFail(fungibleCollectionId, 2, Alice, Bob, 1, 'Fungible');132 // reFungible133 const reFungibleCollectionId = await134 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});135 await transferExpectFail(reFungibleCollectionId,136 2, Alice, Bob, 1, 'ReFungible');137 });138 });139 it('Transfer with deleted item_id', async () => {140 await usingApi(async (api: ApiPromise) => {141 const Alice = privateKey('//Alice');142 const Bob = privateKey('//Bob');143 // nft144 const nftCollectionId = await createCollectionExpectSuccess();145 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');146 await burnItemExpectSuccess(Alice, nftCollectionId, newNftTokenId, 1);147 await transferExpectFail(nftCollectionId, newNftTokenId, Alice, Bob, 1, 'NFT');148 // fungible149 const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});150 const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');151 await burnItemExpectSuccess(Alice, fungibleCollectionId, newFungibleTokenId, 1);152 await transferExpectFail(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');153 // reFungible154 const reFungibleCollectionId = await155 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});156 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');157 await burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 1);158 await transferExpectFail(reFungibleCollectionId,159 newReFungibleTokenId, Alice, Bob, 1, 'ReFungible');160 });161 });*/60 it('Create collection, balance transfers and check balance', async () => {162 it('Transfer with recipient that is not owner', async () => {163 await usingApi(async (api: ApiPromise) => {61 const Alice = privateKey('//Alice');164 const Alice = privateKey('//Alice');62 const Bob = privateKey('//Bob');165 const Bob = privateKey('//Bob');63 const Charlie = privateKey('//CHARLIE');166 const Charlie = privateKey('//CHARLIE');64 // nft167 // nft65 const nftCollectionId = await createCollectionExpectSuccess();168 const nftCollectionId = await createCollectionExpectSuccess();66 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');169 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');6768 await transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1, 'NFT');170 await transferExpectFail(nftCollectionId, newNftTokenId, Charlie, Bob, 1, 'NFT');6970 // fungible171 // fungible71 const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});172 const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});72 const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');173 const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');73 await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);74 await transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');174 await transferExpectFail(fungibleCollectionId, newFungibleTokenId, Charlie, Bob, 1, 'Fungible');75 // reFungible175 // reFungible76 const reFungibleCollectionId = await176 const reFungibleCollectionId = await77 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});177 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});78 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');178 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');79 await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);80 await transferExpectSuccess(reFungibleCollectionId,179 await transferExpectFail(reFungibleCollectionId,81 newReFungibleTokenId, Alice, Bob, 1, 'ReFungible');180 newReFungibleTokenId, Charlie, Bob, 1, 'ReFungible');181 });82 });182 });83});183});8485describe('Negative Integration Test Transfer(recipient, collection_id, item_id, value)', () => {86 it('Transfer with not existed collection_id', async () => {8788 });89 it('Transfer with deleted collection_id', async () => {9091 });92 it('Transfer with not existed item_id', async () => {9394 });95 it('Transfer with deleted item_id', async () => {9697 });98 it('Transfer with recipient that is not owner', async () => {99100 });101});102184tests/src/util/helpers.tsdiffbeforeafterboth391 ReFungible: CreateReFungibleData;391 ReFungible: CreateReFungibleData;392}392}393394export async function burnItemExpectSuccess(owner: IKeyringPair, collectionId: number, tokenId: number, value = 0) {395 await usingApi(async (api) => {396 const tx = api.tx.nft.burnItem(collectionId, tokenId, 0);397 const events = await submitTransactionAsync(owner, tx);398 const result = getGenericResult(events);399 // Get the item400 const item: any = (await api.query.nft.nftItemList(collectionId, tokenId)).toJSON();401 // What to expect402 // tslint:disable-next-line:no-unused-expression403 expect(result.success).to.be.true;404 // tslint:disable-next-line:no-unused-expression405 expect(item).to.be.not.null;406 expect(item.Owner).to.be.equal(nullPublicKey);407 });408}393409394export async function410export async function395approveExpectSuccess(collectionId: number,411approveExpectSuccess(collectionId: number,495 });511 });496}512}513514export async function515transferExpectFail(collectionId: number,516 tokenId: number,517 sender: IKeyringPair,518 recipient: IKeyringPair,519 value: number = 1,520 type: string = 'NFT') {521 await usingApi(async (api: ApiPromise) => {522 const transferTx = await api.tx.nft.transfer(recipient.address, collectionId, tokenId, value);523 const events = await expect(submitTransactionExpectFailAsync(sender, transferTx)).to.be.rejected;524 const result = getCreateCollectionResult(events);525 // tslint:disable-next-line:no-unused-expression526 expect(result.success).to.be.false;527 });528}497529498export async function530export async function499approveExpectFail(collectionId: number,531approveExpectFail(collectionId: number,559 const collection: any = (await api.query.nft.collection(collectionId)).toJSON();592 const collection: any = (await api.query.nft.collection(collectionId)).toJSON();560593561 // What to expect594 // What to expect595 // tslint:disable-next-line:no-unused-expression562 expect(result.success).to.be.true;596 expect(result.success).to.be.true;563 expect(collection.Access).to.be.equal('WhiteList');597 expect(collection.Access).to.be.equal('WhiteList');564 });598 });