From a24084d50f85806095892f3a199f2e2d5cfcffd4 Mon Sep 17 00:00:00 2001 From: kpozdnikin Date: Tue, 19 Jan 2021 13:32:06 +0000 Subject: [PATCH] transferSuccess --- --- a/tests/src/burnItem.test.ts +++ b/tests/src/burnItem.test.ts @@ -35,16 +35,16 @@ const tx = api.tx.nft.burnItem(collectionId, tokenId, 0); const events = await submitTransactionAsync(alice, tx); const result = getGenericResult(events); - - // Get the item + // Get the item const item: any = (await api.query.nft.nftItemList(collectionId, tokenId)).toJSON(); - // What to expect + // tslint:disable-next-line:no-unused-expression expect(result.success).to.be.true; + // tslint:disable-next-line:no-unused-expression expect(item).to.be.not.null; expect(item.Owner).to.be.equal(nullPublicKey); }); - + }); it('Burn item in Fungible collection', async () => { const createMode = 'Fungible'; --- a/tests/src/transfer.test.ts +++ b/tests/src/transfer.test.ts @@ -8,17 +8,18 @@ import { alicesPublicKey, bobsPublicKey } from './accounts'; import getBalance from './substrate/get-balance'; import privateKey from './substrate/privateKey'; -import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api'; +import { default as usingApi, submitTransactionAsync } from './substrate/substrate-api'; import { - approveExpectSuccess, - createCollectionExpectSuccess, createItemExpectSuccess, + burnItemExpectSuccess, createCollectionExpectSuccess, createItemExpectSuccess, + destroyCollectionExpectSuccess, findUnusedAddress, getCreateCollectionResult, getCreateItemResult, + transferExpectFail, transferExpectSuccess, } from './util/helpers'; -describe('Integration Test Transfer(recipient, collection_id, item_id, value)', () => { +/*describe('Integration Test Transfer(recipient, collection_id, item_id, value)', () => { it('Balance transfers and check balance', async () => { await usingApi(async (api: ApiPromise) => { const [alicesBalanceBefore, bobsBalanceBefore] = await getBalance(api, [alicesPublicKey, bobsPublicKey]); @@ -58,44 +59,125 @@ }); it('Create collection, balance transfers and check balance', async () => { - const Alice = privateKey('//Alice'); - const Bob = privateKey('//Bob'); - const Charlie = privateKey('//CHARLIE'); - // nft - const nftCollectionId = await createCollectionExpectSuccess(); - const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT'); - - await transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1, 'NFT'); - - // fungible - const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); - const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible'); - await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob); - await transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible'); - // reFungible - const reFungibleCollectionId = await - createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}}); - const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible'); - await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob); - await transferExpectSuccess(reFungibleCollectionId, - newReFungibleTokenId, Alice, Bob, 1, 'ReFungible'); + await usingApi(async (api) => { + const Alice = privateKey('//Alice'); + const Bob = privateKey('//Bob'); + // nft + const nftCollectionId = await createCollectionExpectSuccess(); + const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT'); + await transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1, 'NFT'); + // fungible + const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); + const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible'); + await transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible'); + // reFungible + const reFungibleCollectionId = await + createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}}); + const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible'); + await transferExpectSuccess(reFungibleCollectionId, + newReFungibleTokenId, Alice, Bob, 1, 'ReFungible'); + }); }); -}); +});*/ describe('Negative Integration Test Transfer(recipient, collection_id, item_id, value)', () => { - it('Transfer with not existed collection_id', async () => { - + /*it('Transfer with not existed collection_id', async () => { + await usingApi(async (api: ApiPromise) => { + const Alice = privateKey('//Alice'); + const Bob = privateKey('//Bob'); + // nft + const nftCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number; + await transferExpectFail(nftCollectionCount + 1, 1, Alice, Bob, 1); + // fungible + const fungibleCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number; + await transferExpectFail(fungibleCollectionCount + 1, 1, Alice, Bob, 1); + // reFungible + const reFungibleCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number; + await transferExpectFail(reFungibleCollectionCount + 1, 1, Alice, Bob, 1); + }); }); it('Transfer with deleted collection_id', async () => { - + await usingApi(async (api: ApiPromise) => { + const Alice = privateKey('//Alice'); + const Bob = privateKey('//Bob'); + // nft + const nftCollectionId = await createCollectionExpectSuccess(); + const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT'); + await destroyCollectionExpectSuccess(nftCollectionId); + await transferExpectFail(nftCollectionId, newNftTokenId, Alice, Bob, 1, 'NFT'); + // fungible + const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); + const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible'); + await destroyCollectionExpectSuccess(fungibleCollectionId); + await transferExpectFail(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible'); + // reFungible + const reFungibleCollectionId = await + createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}}); + const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible'); + await destroyCollectionExpectSuccess(reFungibleCollectionId); + await transferExpectFail(reFungibleCollectionId, + newReFungibleTokenId, Alice, Bob, 1, 'ReFungible'); + }); }); it('Transfer with not existed item_id', async () => { - + await usingApi(async (api: ApiPromise) => { + const Alice = privateKey('//Alice'); + const Bob = privateKey('//Bob'); + // nft + const nftCollectionId = await createCollectionExpectSuccess(); + await transferExpectFail(nftCollectionId, 2, Alice, Bob, 1, 'NFT'); + // fungible + const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); + await transferExpectFail(fungibleCollectionId, 2, Alice, Bob, 1, 'Fungible'); + // reFungible + const reFungibleCollectionId = await + createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}}); + await transferExpectFail(reFungibleCollectionId, + 2, Alice, Bob, 1, 'ReFungible'); + }); }); it('Transfer with deleted item_id', async () => { - - }); + await usingApi(async (api: ApiPromise) => { + const Alice = privateKey('//Alice'); + const Bob = privateKey('//Bob'); + // nft + const nftCollectionId = await createCollectionExpectSuccess(); + const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT'); + await burnItemExpectSuccess(Alice, nftCollectionId, newNftTokenId, 1); + await transferExpectFail(nftCollectionId, newNftTokenId, Alice, Bob, 1, 'NFT'); + // fungible + const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); + const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible'); + await burnItemExpectSuccess(Alice, fungibleCollectionId, newFungibleTokenId, 1); + await transferExpectFail(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible'); + // reFungible + const reFungibleCollectionId = await + createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}}); + const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible'); + await burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 1); + await transferExpectFail(reFungibleCollectionId, + newReFungibleTokenId, Alice, Bob, 1, 'ReFungible'); + }); + });*/ it('Transfer with recipient that is not owner', async () => { - + await usingApi(async (api: ApiPromise) => { + const Alice = privateKey('//Alice'); + const Bob = privateKey('//Bob'); + const Charlie = privateKey('//CHARLIE'); + // nft + const nftCollectionId = await createCollectionExpectSuccess(); + const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT'); + await transferExpectFail(nftCollectionId, newNftTokenId, Charlie, Bob, 1, 'NFT'); + // fungible + const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); + const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible'); + await transferExpectFail(fungibleCollectionId, newFungibleTokenId, Charlie, Bob, 1, 'Fungible'); + // reFungible + const reFungibleCollectionId = await + createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}}); + const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible'); + await transferExpectFail(reFungibleCollectionId, + newReFungibleTokenId, Charlie, Bob, 1, 'ReFungible'); + }); }); }); --- a/tests/src/util/helpers.ts +++ b/tests/src/util/helpers.ts @@ -391,6 +391,22 @@ ReFungible: CreateReFungibleData; } +export async function burnItemExpectSuccess(owner: IKeyringPair, collectionId: number, tokenId: number, value = 0) { + await usingApi(async (api) => { + const tx = api.tx.nft.burnItem(collectionId, tokenId, 0); + const events = await submitTransactionAsync(owner, tx); + const result = getGenericResult(events); + // Get the item + const item: any = (await api.query.nft.nftItemList(collectionId, tokenId)).toJSON(); + // What to expect + // tslint:disable-next-line:no-unused-expression + expect(result.success).to.be.true; + // tslint:disable-next-line:no-unused-expression + expect(item).to.be.not.null; + expect(item.Owner).to.be.equal(nullPublicKey); + }); +} + export async function approveExpectSuccess(collectionId: number, tokenId: number, owner: IKeyringPair, approved: IKeyringPair, amount: number = 1) { @@ -496,6 +512,22 @@ } export async function +transferExpectFail(collectionId: number, + tokenId: number, + sender: IKeyringPair, + recipient: IKeyringPair, + value: number = 1, + type: string = 'NFT') { + await usingApi(async (api: ApiPromise) => { + const transferTx = await api.tx.nft.transfer(recipient.address, collectionId, tokenId, value); + const events = await expect(submitTransactionExpectFailAsync(sender, transferTx)).to.be.rejected; + const result = getCreateCollectionResult(events); + // tslint:disable-next-line:no-unused-expression + expect(result.success).to.be.false; + }); +} + +export async function approveExpectFail(collectionId: number, tokenId: number, owner: IKeyringPair, approved: IKeyringPair, amount: number = 1) { await usingApi(async (api: ApiPromise) => { @@ -507,7 +539,8 @@ }); } -export async function createItemExpectSuccess(sender: IKeyringPair, collectionId: number, createMode: string, owner: string = '') { +export async function createItemExpectSuccess( + sender: IKeyringPair, collectionId: number, createMode: string, owner: string = '') { let newItemId: number = 0; await usingApi(async (api) => { const AItemCount = parseInt((await api.query.nft.itemListIndex(collectionId)).toString(), 10); @@ -559,6 +592,7 @@ const collection: any = (await api.query.nft.collection(collectionId)).toJSON(); // What to expect + // tslint:disable-next-line:no-unused-expression expect(result.success).to.be.true; expect(collection.Access).to.be.equal('WhiteList'); }); -- gitstuff