git.delta.rocks / unique-network / refs/commits / 0b16c5c25c9b

difftreelog

source

tests/src/createCollection.test.ts6.5 KiBsourcehistory
1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute itSub and/or modify5// itSub under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that itSub will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617import {usingPlaygrounds, expect, itSub, Pallets} from './util/playgrounds';18import {IKeyringPair} from '@polkadot/types/types';19import {IProperty} from './util/playgrounds/types';2021describe('integration test: ext. createCollection():', () => {22  let alice: IKeyringPair;2324  before(async () => {25    await usingPlaygrounds(async (helper, privateKey) => {26      const donor = privateKey('//Alice');27      [alice] = await helper.arrange.createAccounts([100n], donor);28    });29  });30  itSub('Create new NFT collection', async ({helper}) => {3132    await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});33  });34  itSub('Create new NFT collection whith collection_name of maximum length (64 bytes)', async ({helper}) => {3536    await helper.nft.mintCollection(alice, {name: 'A'.repeat(64), description: 'descr', tokenPrefix: 'COL'});37  });38  itSub('Create new NFT collection whith collection_description of maximum length (256 bytes)', async ({helper}) => {3940    await helper.nft.mintCollection(alice, {name: 'name', description: 'A'.repeat(256), tokenPrefix: 'COL'});41  });42  itSub('Create new NFT collection whith token_prefix of maximum length (16 bytes)', async ({helper}) => {4344    await helper.nft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'A'.repeat(16)});45  });46  itSub('Create new Fungible collection', async ({helper}) => {4748    await helper.ft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'COL'}, 0);49  });50  itSub.ifWithPallets('Create new ReFungible collection', [Pallets.ReFungible], async ({helper}) => {5152    await helper.rft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'COL'});53  });5455  itSub('create new collection with properties', async ({helper}) => {5657    await helper.nft.mintCollection(alice, {58      name: 'name', description: 'descr', tokenPrefix: 'COL',59      properties: [{key: 'key1', value: 'val1'}],60      tokenPropertyPermissions: [{key: 'key1', permission: {tokenOwner: true, mutable: false, collectionAdmin: true}}],61    });62  });6364  itSub('Create new collection with extra fields', async ({helper}) => {6566    const collection = await helper.ft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'COL'}, 8);67    await collection.setPermissions(alice, {access: 'AllowList'});68    await collection.setLimits(alice, {accountTokenOwnershipLimit: 3});69    const data = await collection.getData();70    const limits = await collection.getEffectiveLimits();71    const raw = data?.raw;7273    expect(data?.normalizedOwner).to.be.equal(alice.address);74    expect(data?.name).to.be.equal('name');75    expect(data?.description).to.be.equal('descr');76    expect(raw.permissions.access).to.be.equal('AllowList');77    expect(raw.mode).to.be.deep.equal({Fungible: '8'});78    expect(limits.accountTokenOwnershipLimit).to.be.equal(3);79  });8081  itSub('New collection is not external', async ({helper}) => {8283    const collection = await helper.nft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'COL'});84    const data = await collection.getData();85    expect(data?.raw.readOnly).to.be.false;86  });87});8889describe('(!negative test!) integration test: ext. createCollection():', () => {90  let alice: IKeyringPair;9192  before(async () => {93    await usingPlaygrounds(async (helper, privateKey) => {94      const donor = privateKey('//Alice');95      [alice] = await helper.arrange.createAccounts([100n], donor);96    });97  });9899  itSub('(!negative test!) create new NFT collection whith incorrect data (collection_name)', async ({helper}) => {100    const mintCollectionTx = async () => helper.nft.mintCollection(alice, {name: 'A'.repeat(65), description: 'descr', tokenPrefix: 'COL'});101    await expect(mintCollectionTx()).to.be.rejectedWith('Verification Error');102  });103  itSub('(!negative test!) create new NFT collection whith incorrect data (collection_description)', async ({helper}) => {104    const mintCollectionTx = async () => helper.nft.mintCollection(alice, {name: 'name', description: 'A'.repeat(257), tokenPrefix: 'COL'});105    await expect(mintCollectionTx()).to.be.rejectedWith('Verification Error');106  });107  itSub('(!negative test!) create new NFT collection whith incorrect data (token_prefix)', async ({helper}) => {108109    const mintCollectionTx = async () => helper.nft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'A'.repeat(17)});110    await expect(mintCollectionTx()).to.be.rejectedWith('Verification Error');111  });112  itSub('(!negative test!) fails when bad limits are set', async ({helper}) => {113114    const mintCollectionTx = async () => helper.nft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'COL', limits: {tokenLimit: 0}});115    await expect(mintCollectionTx()).to.be.rejectedWith(/common\.CollectionTokenLimitExceeded/);116  });117118  itSub('(!negative test!) create collection with incorrect property limit (64 elements)', async ({helper}) => {119    const props: IProperty[] = [];120121    for (let i = 0; i < 65; i++) {122      props.push({key: `key${i}`, value: `value${i}`});123    }124    const mintCollectionTx = async () => helper.nft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'COL', properties: props});125    await expect(mintCollectionTx()).to.be.rejectedWith('Verification Error');126  });127128  itSub('(!negative test!) create collection with incorrect property limit (40 kb)', async ({helper}) => {129    const props: IProperty[] = [];130131    for (let i = 0; i < 32; i++) {132      props.push({key: `key${i}`.repeat(80), value: `value${i}`.repeat(80)});133    }134135    const mintCollectionTx = async () => helper.nft.mintCollection(alice, {name: 'name', description: 'descr', tokenPrefix: 'COL', properties: props});136    await expect(mintCollectionTx()).to.be.rejectedWith('Verification Error');137  });138});