difftreelog
set limits test scenarios
in: master
5 files changed
tests/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"
},
tests/src/setCollectionLimits.test.tsdiffbeforeafterboth1// 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});tests/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
tests/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
tests/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();
+};