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

difftreelog

set limits test scenarios

kpozdnikin2020-12-31parent: #49640f3.patch.diff
in: master

5 files changed

modifiedtests/package.jsondiffbeforeafterboth
--- a/tests/package.json
+++ b/tests/package.json
@@ -19,6 +19,7 @@
     "test": "mocha --timeout 9999999 -r ts-node/register ./**/*.test.ts",
     "load": "mocha --timeout 9999999 -r ts-node/register ./**/*.load.ts",
     "testSetSchemaVersion": "mocha --timeout 9999999 -r ts-node/register ./**/setSchemaVersion.test.ts",
+    "testSetCollectionLimits": "mocha --timeout 9999999 -r ts-node/register ./**/setCollectionLimits.test.ts",
     "testConnection": "mocha --timeout 9999999 -r ts-node/register ./**/connection.test.ts",
     "testCollection": "mocha --timeout 9999999 -r ts-node/register ./**/createCollection.test.ts"
   },
addedtests/src/setCollectionLimits.test.tsdiffbeforeafterboth
after · tests/src/setCollectionLimits.test.ts
1// https://unique-network.readthedocs.io/en/latest/jsapi.html#setchainlimits2import { ApiPromise, Keyring } from '@polkadot/api';3import { IKeyringPair } from '@polkadot/types/types';4import chai from 'chai';5import chaiAsPromised from 'chai-as-promised';6import usingApi, { submitTransactionAsync } from './substrate/substrate-api';7import { ICollectionInterface } from './types';8import {9  createCollectionExpectSuccess, getCreatedCollectionCount,10  getCreateItemResult,11  getDetailedCollectionInfo,12} from './util/helpers';1314chai.use(chaiAsPromised);15const expect = chai.expect;1617let alice: IKeyringPair;18let bob: IKeyringPair;19let collectionIdForTesting: number;2021const accountTokenOwnershipLimit = 0;22const sponsoredDataSize = 0;23const sponsoredMintSize = 0;24const tokenLimit = 0;2526describe('hooks', () => {27  before(async () => {28    await usingApi(async () => {29      const keyring = new Keyring({ type: 'sr25519' });30      alice = keyring.addFromUri('//Alice');31    });32  });33  it('choose or create collection for testing', async () => {34    await usingApi(async () => {35      collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: 'NFT'});36      console.log('collectionIdForTesting', collectionIdForTesting);37    });38  });39});4041describe('setCollectionLimits positive', () => {42  let tx;43  before(async () => {44    await usingApi(async () => {45      const keyring = new Keyring({ type: 'sr25519' });46      alice = keyring.addFromUri('//Alice');47    });48  });49  it('execute setCollectionLimits with predefined params ', async () => {50    await usingApi(async (api: ApiPromise) => {51      tx = api.tx.nft.setCollectionLimits(52        collectionIdForTesting,53        {54          accountTokenOwnershipLimit,55          sponsoredDataSize,56          sponsoredMintSize,57          tokenLimit,58        },59      );60      const events = await submitTransactionAsync(alice, tx);61      const result = getCreateItemResult(events);62      // tslint:disable-next-line:no-unused-expression63      expect(result.success).to.be.true;64    });65  });66  it('get collection limits defined in previous test', async () => {67    await usingApi(async (api: ApiPromise) => {68      const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting) as ICollectionInterface;69      expect(collectionInfo.Limits.AccountTokenOwnershipLimit.toNumber()).to.be.equal(accountTokenOwnershipLimit);70      expect(collectionInfo.Limits.SponsoredMintSize.toNumber()).to.be.equal(sponsoredMintSize);71      expect(collectionInfo.Limits.TokenLimit.toNumber()).to.be.equal(tokenLimit);72      expect(collectionInfo.Limits.SponsorTimeout.toNumber()).to.be.equal(sponsoredDataSize);73    });74  });75});7677describe('setCollectionLimits negative', () => {78  let tx;79  before(async () => {80    await usingApi(async () => {81      const keyring = new Keyring({ type: 'sr25519' });82      alice = keyring.addFromUri('//Alice');83      bob = keyring.addFromUri('//Bob');84    });85  });86  it('execute setCollectionLimits for not exists collection', async () => {87    await usingApi(async (api: ApiPromise) => {88      const collectionCount = await getCreatedCollectionCount(api);89      const nonExistedCollectionId = collectionCount + 1;90      tx = api.tx.nft.setCollectionLimits(91        nonExistedCollectionId,92        {93          accountTokenOwnershipLimit,94          sponsoredDataSize,95          sponsoredMintSize,96          tokenLimit,97        },98      );99      try {100        await submitTransactionAsync(alice, tx);101      } catch (e) {102        // tslint:disable-next-line:no-unused-expression103        expect(e).to.be.exist;104      }105    });106  });107  it('execute setCollectionLimits from user who is not owner of this collection', async () => {108    await usingApi(async (api: ApiPromise) => {109      tx = api.tx.nft.setCollectionLimits(110        collectionIdForTesting,111        {112          accountTokenOwnershipLimit,113          sponsoredDataSize,114          sponsoredMintSize,115          tokenLimit,116        },117      );118      try {119        await submitTransactionAsync(bob, tx);120      } catch (e) {121        // tslint:disable-next-line:no-unused-expression122        expect(e).to.be.exist;123      }124    });125  });126  it('execute setCollectionLimits with incorrect limits', async () => {127    await usingApi(async (api: ApiPromise) => {128      tx = api.tx.nft.setCollectionLimits(129        collectionIdForTesting,130        {131          accountTokenOwnershipLimit: 'awdawd',132          sponsorTransferTimeout: 'awd',133          sponsoredDataSize: '12312312312312312',134          tokenLimit: '-100',135        },136      );137      try {138        await submitTransactionAsync(alice, tx);139      } catch (e) {140        // tslint:disable-next-line:no-unused-expression141        expect(e).to.be.exist;142      }143    });144  });145});
modifiedtests/src/setSchemaVersion.test.tsdiffbeforeafterboth
--- a/tests/src/setSchemaVersion.test.ts
+++ b/tests/src/setSchemaVersion.test.ts
@@ -1,4 +1,4 @@
-// https://unique-network.readthedocs.io/en/latest/jsapi.html#setchainlimits
+// https://unique-network.readthedocs.io/en/latest/jsapi.html#setschemaversion
 import { ApiPromise, Keyring } from '@polkadot/api';
 import { IKeyringPair } from '@polkadot/types/types';
 import BN from 'bn.js';
@@ -6,7 +6,13 @@
 import chaiAsPromised from 'chai-as-promised';
 import usingApi, { submitTransactionAsync } from './substrate/substrate-api';
 import { ICollectionInterface } from './types';
-import { createCollectionExpectSuccess, destroyCollectionExpectSuccess, getCreateItemResult } from './util/helpers';
+import {
+  createCollectionExpectSuccess,
+  destroyCollectionExpectSuccess,
+  getCreatedCollectionCount,
+  getCreateItemResult,
+  getDetailedCollectionInfo,
+} from './util/helpers';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
@@ -19,16 +25,6 @@
 2. Save just created collection id.
 3. Use this id for setSchemaVersion.
 */
-
-const getDetailedCollectionInfo = async (api: ApiPromise, collectionId: number)
-  : Promise<ICollectionInterface | null> => {
-  return await api.query.nft.collection(collectionId) as unknown as ICollectionInterface;
-};
-
-const getCreatedCollectionCount = async (api: ApiPromise): Promise<number> => {
-  // set global object - collectionsCount
-  return (await api.query.nft.createdCollectionCount() as unknown as BN).toNumber();
-};
 
 describe('hooks', () => {
   before(async () => {
@@ -57,7 +53,7 @@
       tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'Unique');
       const events = await submitTransactionAsync(alice, tx);
       const result = getCreateItemResult(events);
-      const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting);
+      const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting) as ICollectionInterface;
       // tslint:disable-next-line:no-unused-expression
       expect(result.success).to.be.true;
       // tslint:disable-next-line:no-unused-expression
@@ -72,7 +68,7 @@
       tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'ImageURL');
       const events = await submitTransactionAsync(alice, tx);
       const result = getCreateItemResult(events);
-      const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting);
+      const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting) as ICollectionInterface;
       // tslint:disable-next-line:no-unused-expression
       expect(result.success).to.be.true;
       // tslint:disable-next-line:no-unused-expression
modifiedtests/src/types.tsdiffbeforeafterboth
--- a/tests/src/types.ts
+++ b/tests/src/types.ts
@@ -7,14 +7,20 @@
   // constOnChainSchema
   Description: [BN, BN]; // utf16
   isReFungible: boolean;
+  Limits: {
+    AccountTokenOwnershipLimit: BN;
+    SponsoredMintSize: BN;
+    TokenLimit: BN;
+    SponsorTimeout: BN;
+  };
   MintMode: boolean;
   Mode: {
     Nft: null;
   };
   Name: [BN, BN]; // utf16
   OffchainSchema: [Uint8Array];
+  Owner: [Uint8Array];
   SchemaVersion: string;
-  Owner: [Uint8Array];
   // prefix
   // sponsor
   // tokenPrefix
modifiedtests/src/util/helpers.tsdiffbeforeafterboth
--- a/tests/src/util/helpers.ts
+++ b/tests/src/util/helpers.ts
@@ -10,11 +10,13 @@
 import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from "../substrate/substrate-api";
 import privateKey from '../substrate/privateKey';
 import { alicesPublicKey, nullPublicKey } from "../accounts";
-import { strToUTF16, utf16ToStr, hexToStr } from '../util/util';
-import { IKeyringPair } from "@polkadot/types/types";
+import { strToUTF16, utf16ToStr, hexToStr } from './util';
+import { IKeyringPair } from '@polkadot/types/types';
 import { BigNumber } from 'bignumber.js';
 import { Struct, Enum } from '@polkadot/types/codec';
 import { u128 } from '@polkadot/types/primitive';
+import { ICollectionInterface } from '../types';
+import BN from "bn.js";
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
@@ -399,3 +401,12 @@
   });
 }
 
+export const getDetailedCollectionInfo = async (api: ApiPromise, collectionId: number)
+  : Promise<ICollectionInterface | null> => {
+  return await api.query.nft.collection(collectionId) as unknown as ICollectionInterface;
+};
+
+export const getCreatedCollectionCount = async (api: ApiPromise): Promise<number> => {
+  // set global object - collectionsCount
+  return (await api.query.nft.createdCollectionCount() as unknown as BN).toNumber();
+};