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

difftreelog

source

tests/src/setVariableMetaData.test.ts5.0 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 { IKeyringPair } from '@polkadot/types/types';7import chai from 'chai';8import chaiAsPromised from 'chai-as-promised';9import privateKey from './substrate/privateKey';10import usingApi from './substrate/substrate-api';11import {12  burnItemExpectSuccess,13  createCollectionExpectSuccess,14  createItemExpectSuccess,15  destroyCollectionExpectSuccess,16  findNotExistingCollection,17  setVariableMetaDataExpectFailure,18  setVariableMetaDataExpectSuccess,19  addCollectionAdminExpectSuccess,20} from './util/helpers';2122chai.use(chaiAsPromised);23const expect = chai.expect;2425describe('Integration Test setVariableMetaData', () => {26  const data = [1, 2, 254, 255];2728  let alice: IKeyringPair;29  let collectionId: number;30  let tokenId: number;31  before(async () => {32    await usingApi(async () => {33      alice = privateKey('//Alice');34      collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });35      tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');36    });37  });3839  it('execute setVariableMetaData', async () => {40    await setVariableMetaDataExpectSuccess(alice, collectionId, tokenId, data);41  });4243  it('verify data was set', async () => {44    await usingApi(async api => {45      const item: any = (await api.query.nft.nftItemList(collectionId, tokenId) as any).unwrap();4647      expect(Array.from(item.VariableData)).to.deep.equal(Array.from(data));48    });49  });50});5152describe('Integration Test collection admin setVariableMetaData', () => {53  const data = [1, 2, 254, 255];5455  let alice: IKeyringPair;56  let bob: IKeyringPair;57  let collectionId: number;58  let tokenId: number;59  before(async () => {60    await usingApi(async () => {61      alice = privateKey('//Alice');62      bob = privateKey('//Bob');63      collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });64      tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');65      await addCollectionAdminExpectSuccess(alice, collectionId, bob);66    });67  });6869  it('execute setVariableMetaData', async () => {70    await setVariableMetaDataExpectSuccess(bob, collectionId, tokenId, data);71  });7273  it('verify data was set', async () => {74    await usingApi(async api => {75      const item: any = (await api.query.nft.nftItemList(collectionId, tokenId) as any).unwrap();7677      expect(Array.from(item.VariableData)).to.deep.equal(Array.from(data));78    });79  });80});8182describe('Negative Integration Test setVariableMetaData', () => {83  const data = [1];8485  let alice: IKeyringPair;86  let bob: IKeyringPair;8788  let validCollectionId: number;89  let validTokenId: number;9091  before(async () => {92    await usingApi(async () => {93      alice = privateKey('//Alice');94      bob = privateKey('//Bob');9596      validCollectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });97      validTokenId = await createItemExpectSuccess(alice, validCollectionId, 'NFT');98    });99  });100101  it('fails on not existing collection id', async () => {102    await usingApi(async api => {103      const nonExistingCollectionId = await findNotExistingCollection(api);104      await setVariableMetaDataExpectFailure(alice, nonExistingCollectionId, 1, data);105    });106  });107  it('fails on removed collection id', async () => {108    const removedCollectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });109    const removedCollectionTokenId = await createItemExpectSuccess(alice, removedCollectionId, 'NFT');110111    await destroyCollectionExpectSuccess(removedCollectionId);112    await setVariableMetaDataExpectFailure(alice, removedCollectionId, removedCollectionTokenId, data);113  });114  it('fails on removed token', async () => {115    const removedTokenCollectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });116    const removedTokenId = await createItemExpectSuccess(alice, removedTokenCollectionId, 'NFT');117    await burnItemExpectSuccess(alice, removedTokenCollectionId, removedTokenId);118119    await setVariableMetaDataExpectFailure(alice, removedTokenCollectionId, removedTokenId, data);120  });121  it('fails on not existing token', async () => {122    const nonExistingTokenId = validTokenId + 1;123124    await setVariableMetaDataExpectFailure(alice, validCollectionId, nonExistingTokenId, data);125  });126  it('fails on too long data', async () => {127    const tooLongData = new Array(4097).fill(0xff);128129    await setVariableMetaDataExpectFailure(alice, validCollectionId, validTokenId, tooLongData);130  });131  it('fails on fungible token', async () => {132    const fungibleCollectionId = await createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });133    const fungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');134135    await setVariableMetaDataExpectFailure(alice, fungibleCollectionId, fungibleTokenId, data);136  });137  it('fails on bad sender', async () => {138    await setVariableMetaDataExpectFailure(bob, validCollectionId, validTokenId, data);139  });140});