git.delta.rocks / unique-network / refs/commits / 2849d0e6033f

difftreelog

Add destroyCollection tests

Max Andreev2022-12-03parent: #2293f03.patch.diff
in: master

2 files changed

modifiedtests/src/eth/destroyCollection.test.tsdiffbeforeafterboth
before · tests/src/eth/destroyCollection.test.ts
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 it and/or modify5// it 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.8//9// Unique Network is distributed in the hope that it 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 {IKeyringPair} from '@polkadot/types/types';18import {Pallets, requirePalletsOrSkip} from '../util';19import {expect, itEth, usingEthPlaygrounds} from './util';202122describe('Destroy Collection from EVM', () => {23  let donor: IKeyringPair;2425  before(async function() {26    await usingEthPlaygrounds(async (helper, privateKey) => {27      requirePalletsOrSkip(this, helper, [Pallets.ReFungible, Pallets.NFT]);28      donor = await privateKey({filename: __filename});29    });30  });3132  33  itEth('(!negative test!) RFT', async ({helper}) => {34    const owner = await helper.eth.createAccountWithBalance(donor);35    const signer = await helper.eth.createAccountWithBalance(donor);36    37    const unexistedCollection = helper.ethAddress.fromCollectionId(1000000);38    39    const {collectionAddress} = await helper.eth.createRFTCollection(owner, 'Limits', 'absolutely anything', 'OLF');40    const collectionHelper = helper.ethNativeContract.collectionHelpers(signer);41    42    await expect(collectionHelper.methods43      .destroyCollection(collectionAddress)44      .send({from: signer})).to.be.rejected;45    46    await expect(collectionHelper.methods47      .destroyCollection(unexistedCollection)48      .send({from: signer})).to.be.rejected;49    50    expect(await collectionHelper.methods51      .isCollectionExist(unexistedCollection)52      .call()).to.be.false;53  });54  55  itEth('(!negative test!) NFT', async ({helper}) => {56    const owner = await helper.eth.createAccountWithBalance(donor);57    const signer = await helper.eth.createAccountWithBalance(donor);58    59    const unexistedCollection = helper.ethAddress.fromCollectionId(1000000);60    61    const {collectionAddress} = await helper.eth.createNFTCollection(owner, 'Limits', 'absolutely anything', 'OLF');62    const collectionHelper = helper.ethNativeContract.collectionHelpers(signer);63    64    await expect(collectionHelper.methods65      .destroyCollection(collectionAddress)66      .send({from: signer})).to.be.rejected;67    68    await expect(collectionHelper.methods69      .destroyCollection(unexistedCollection)70      .send({from: signer})).to.be.rejected;71    72    expect(await collectionHelper.methods73      .isCollectionExist(unexistedCollection)74      .call()).to.be.false;75  });76});
after · tests/src/eth/destroyCollection.test.ts
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 it and/or modify5// it 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.8//9// Unique Network is distributed in the hope that it 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 {IKeyringPair} from '@polkadot/types/types';18import {Pallets} from '../util';19import {expect, itEth, usingEthPlaygrounds} from './util';2021describe('Destroy Collection from EVM', function() {22  let donor: IKeyringPair;23  const testCases = [24    {method: 'createRFTCollection' as const, params: ['Limits', 'absolutely anything', 'OLF'], requiredPallets: [Pallets.ReFungible]},25    {method: 'createNFTCollection' as const, params: ['Limits', 'absolutely anything', 'OLF'], requiredPallets: [Pallets.NFT]},26    {method: 'createFTCollection' as const, params: ['Limits', 'absolutely anything', 'OLF', 18], requiredPallets: [Pallets.Fungible]},27  ];2829  before(async function() {30    await usingEthPlaygrounds(async (_, privateKey) => {31      donor = await privateKey({filename: __filename});32    });33  });3435  testCases.map((testCase) => 36    itEth.ifWithPallets(`(!negative test!) ${testCase.method}`, testCase.requiredPallets, async ({helper}) => {37      const owner = await helper.eth.createAccountWithBalance(donor);38      const signer = await helper.eth.createAccountWithBalance(donor);39      40      const unexistedCollection = helper.ethAddress.fromCollectionId(1000000);41      42      const collectionHelpers = helper.ethNativeContract.collectionHelpers(signer);43      const {collectionAddress} = await helper.eth.createCollecion(testCase.method, owner, ...testCase.params as [string, string, string, number?]);4445      // cannot burn collec46      await expect(collectionHelpers.methods47        .destroyCollection(collectionAddress)48        .send({from: signer})).to.be.rejected;49      50      await expect(collectionHelpers.methods51        .destroyCollection(unexistedCollection)52        .send({from: signer})).to.be.rejected;53      54      expect(await collectionHelpers.methods55        .isCollectionExist(unexistedCollection)56        .call()).to.be.false;57      58      expect(await collectionHelpers.methods59        .isCollectionExist(collectionAddress)60        .call()).to.be.true;61    }));62});
modifiedtests/src/eth/util/playgrounds/unique.dev.tsdiffbeforeafterboth
--- a/tests/src/eth/util/playgrounds/unique.dev.ts
+++ b/tests/src/eth/util/playgrounds/unique.dev.ts
@@ -186,11 +186,12 @@
     return await this.helper.callRpc('api.rpc.eth.call', [{from: signer, to: contractAddress, data: abi}]);
   }
 
-  async createCollecion(functionName: string, signer: string, name: string, description: string, tokenPrefix: string): Promise<{ collectionId: number, collectionAddress: string, events: NormalizedEvent[] }> {
+  async createCollecion(functionName: 'createNFTCollection' | 'createRFTCollection' | 'createFTCollection', signer: string, name: string, description: string, tokenPrefix: string, decimals?: number): Promise<{ collectionId: number, collectionAddress: string, events: NormalizedEvent[] }> {
     const collectionCreationPrice = this.helper.balance.getCollectionCreationPrice();
     const collectionHelper = this.helper.ethNativeContract.collectionHelpers(signer);
 
-    const result = await collectionHelper.methods[functionName](name, description, tokenPrefix).send({value: Number(collectionCreationPrice)});
+    const functionParams = functionName === 'createFTCollection' ? [name, decimals, description, tokenPrefix] : [name, description, tokenPrefix];
+    const result = await collectionHelper.methods[functionName](...functionParams).send({value: Number(collectionCreationPrice)});
 
     const collectionAddress = this.helper.ethAddress.normalizeAddress(result.events.CollectionCreated.returnValues.collectionId);
     const collectionId = this.helper.ethAddress.extractCollectionId(collectionAddress);
@@ -217,17 +218,8 @@
     return this.createCollecion('createRFTCollection', signer, name, description, tokenPrefix);
   }
 
-  async createFungibleCollection(signer: string, name: string, decimals: number, description: string, tokenPrefix: string): Promise<{ collectionId: number, collectionAddress: string, events: NormalizedEvent[]}> {
-    const collectionCreationPrice = this.helper.balance.getCollectionCreationPrice();
-    const collectionHelper = this.helper.ethNativeContract.collectionHelpers(signer);
-
-    const result = await collectionHelper.methods.createFTCollection(name, decimals, description, tokenPrefix).send({value: Number(collectionCreationPrice)});
-    const collectionAddress = this.helper.ethAddress.normalizeAddress(result.events.CollectionCreated.returnValues.collectionId);
-    const collectionId = this.helper.ethAddress.extractCollectionId(collectionAddress);
-
-    const events = this.helper.eth.normalizeEvents(result.events);
-
-    return {collectionId, collectionAddress, events};
+  createFungibleCollection(signer: string, name: string, decimals: number, description: string, tokenPrefix: string): Promise<{ collectionId: number, collectionAddress: string, events: NormalizedEvent[]}> {
+    return this.createCollecion('createFTCollection', signer, name, description, tokenPrefix, decimals);
   }
 
   async createERC721MetadataCompatibleRFTCollection(signer: string, name: string, description: string, tokenPrefix: string, baseUri: string): Promise<{collectionId: number, collectionAddress: string, events: NormalizedEvent[] }> {