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

difftreelog

source

tests/src/setVariableMetaData.test.ts5.1 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  setMetadataUpdatePermissionFlagExpectSuccess,21} from './util/helpers';2223chai.use(chaiAsPromised);24const expect = chai.expect;2526describe('Integration Test setVariableMetaData', () => {27  const data = [1, 2, 254, 255];2829  let alice: IKeyringPair;30  let collectionId: number;31  let tokenId: number;32  before(async () => {33    await usingApi(async () => {34      alice = privateKey('//Alice');35      collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });36      tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');37    });38  });3940  it('execute setVariableMetaData', async () => {41    await setVariableMetaDataExpectSuccess(alice, collectionId, tokenId, data);42  });4344  it('verify data was set', async () => {45    await usingApi(async api => {46      const item: any = (await api.query.nft.nftItemList(collectionId, tokenId) as any).unwrap();4748      expect(Array.from(item.VariableData)).to.deep.equal(Array.from(data));49    });50  });51});5253describe('Integration Test collection admin setVariableMetaData', () => {54  const data = [1, 2, 254, 255];5556  let alice: IKeyringPair;57  let bob: IKeyringPair;58  let collectionId: number;59  let tokenId: number;60  before(async () => {61    await usingApi(async () => {62      alice = privateKey('//Alice');63      bob = privateKey('//Bob');64      collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });65      tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');66      await setMetadataUpdatePermissionFlagExpectSuccess(alice, collectionId, 'Admin');67      await addCollectionAdminExpectSuccess(alice, collectionId, bob);68    });69  });7071  it('execute setVariableMetaData', async () => {72    await setVariableMetaDataExpectSuccess(bob, collectionId, tokenId, data);73  });7475  it('verify data was set', async () => {76    await usingApi(async api => {77      const item: any = (await api.query.nft.nftItemList(collectionId, tokenId) as any).unwrap();7879      expect(Array.from(item.VariableData)).to.deep.equal(Array.from(data));80    });81  });82});8384describe('Negative Integration Test setVariableMetaData', () => {85  const data = [1];8687  let alice: IKeyringPair;88  let bob: IKeyringPair;8990  let validCollectionId: number;91  let validTokenId: number;9293  before(async () => {94    await usingApi(async () => {95      alice = privateKey('//Alice');96      bob = privateKey('//Bob');9798      validCollectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });99      validTokenId = await createItemExpectSuccess(alice, validCollectionId, 'NFT');100    });101  });102103  it('fails on not existing collection id', async () => {104    await usingApi(async api => {105      const nonExistingCollectionId = await findNotExistingCollection(api);106      await setVariableMetaDataExpectFailure(alice, nonExistingCollectionId, 1, data);107    });108  });109  it('fails on removed collection id', async () => {110    const removedCollectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });111    const removedCollectionTokenId = await createItemExpectSuccess(alice, removedCollectionId, 'NFT');112113    await destroyCollectionExpectSuccess(removedCollectionId);114    await setVariableMetaDataExpectFailure(alice, removedCollectionId, removedCollectionTokenId, data);115  });116  it('fails on removed token', async () => {117    const removedTokenCollectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });118    const removedTokenId = await createItemExpectSuccess(alice, removedTokenCollectionId, 'NFT');119    await burnItemExpectSuccess(alice, removedTokenCollectionId, removedTokenId);120121    await setVariableMetaDataExpectFailure(alice, removedTokenCollectionId, removedTokenId, data);122  });123  it('fails on not existing token', async () => {124    const nonExistingTokenId = validTokenId + 1;125126    await setVariableMetaDataExpectFailure(alice, validCollectionId, nonExistingTokenId, data);127  });128  it('fails on too long data', async () => {129    const tooLongData = new Array(4097).fill(0xff);130131    await setVariableMetaDataExpectFailure(alice, validCollectionId, validTokenId, tooLongData);132  });133  it('fails on fungible token', async () => {134    const fungibleCollectionId = await createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });135    const fungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');136137    await setVariableMetaDataExpectFailure(alice, fungibleCollectionId, fungibleTokenId, data);138  });139  it('fails on bad sender', async () => {140    await setVariableMetaDataExpectFailure(bob, validCollectionId, validTokenId, data);141  });142});