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

difftreelog

setSchema test scenarios

kpozdnikin2020-12-30parent: #aabcd75.patch.diff
in: master

4 files changed

modifiedtests/package.jsondiffbeforeafterboth
--- a/tests/package.json
+++ b/tests/package.json
@@ -17,7 +17,10 @@
   },
   "scripts": {
     "test": "mocha --timeout 9999999 -r ts-node/register ./**/*.test.ts",
-    "load": "mocha --timeout 9999999 -r ts-node/register ./**/*.load.ts"
+    "load": "mocha --timeout 9999999 -r ts-node/register ./**/*.load.ts",
+    "testSetSchemaVersion": "mocha --timeout 9999999 -r ts-node/register ./**/setSchemaVersion.test.ts",
+    "testConnection": "mocha --timeout 9999999 -r ts-node/register ./**/connection.test.ts",
+    "testCollection": "mocha --timeout 9999999 -r ts-node/register ./**/createCollection.test.ts"
   },
   "author": "",
   "license": "Apache 2.0",
modifiedtests/src/setSchemaVersion.test.tsdiffbeforeafterboth
before · tests/src/setSchemaVersion.test.ts
1import { BigNumber } from 'bignumber.js';2import chai from 'chai';3import chaiAsPromised from 'chai-as-promised';4import usingApi, { submitTransactionAsync } from './substrate/substrate-api';56chai.use(chaiAsPromised);7const expect = chai.expect;89describe('setSchemaVersion positive', () => {10  it('execute setSchemaVersion with image url and unique json ', async () => {11    await usingApi(async api => {1213    });14  });1516  it('validate schema version with just entered data', async () => {17    await usingApi(async api => {1819    });20  });21});2223describe('setSchemaVersion negative', () => {24  it('execute setSchemaVersion for not exists collection', async () => {25    await usingApi(async api => {2627    });28  });2930  it('execute setSchemaVersion for deleted collection', async () => {31    await usingApi(async api => {3233    });34  });3536  it('execute setSchemaVersion with not correct image url', async () => {37    await usingApi(async api => {3839    });40  });4142  it('execute setSchemaVersion with not correct unique', async () => {43    await usingApi(async api => {4445    });46  });47});
after · tests/src/setSchemaVersion.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 BN from 'bn.js';5import chai from 'chai';6import chaiAsPromised from 'chai-as-promised';7import privateKey from './substrate/privateKey';8import promisifySubstrate from './substrate/promisify-substrate';9import usingApi, { submitTransactionAsync } from './substrate/substrate-api';10import { ICollectionInterface } from './types';11import { createCollectionExpectSuccess, destroyCollectionExpectSuccess, getCreateItemResult } from './util/helpers';1213chai.use(chaiAsPromised);14const expect = chai.expect;1516let alice: IKeyringPair;17let collectionIdForTesting: number;1819/*201. We create collection.212. Save just created collection id.223. Use this id for setSchemaVersion.23*/2425async function getDetailedCollectionInfo(api: ApiPromise, collectionId: number)26  : Promise<ICollectionInterface | null> {27  return await api.query.nft.collection(collectionId) as unknown as ICollectionInterface;28}2930async function getCollectionCount(api: ApiPromise): Promise<number> {31  // set global object - collectionsCount32  return (await api.query.nft.collectionCount() as unknown as BN).toNumber();33}3435function utf8Decoder(name: [Uint8Array]) {36  const collectionNameArr = Array.prototype.slice.call(name);37  return String.fromCharCode(...collectionNameArr);38}3940describe('hooks', () => {41  before(async () => {42    await usingApi(async (api) => {43      const keyring = new Keyring({ type: 'sr25519' });44      alice = keyring.addFromUri('//Alice');45    });46  });47  it('choose or create collection for testing', async () => {48    await usingApi(async (api: ApiPromise) => {49      const newCollectionId = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: 'NFT'});50      console.log('newCollectionId', newCollectionId);51      collectionIdForTesting = newCollectionId;52    });53  });54});5556describe('setSchemaVersion positive', () => {57  let tx;58  before(async () => {59    await usingApi(async (api) => {60      const keyring = new Keyring({ type: 'sr25519' });61      alice = keyring.addFromUri('//Alice');62    });63  });64  it('execute setSchemaVersion with image url and unique ', async () => {65    await usingApi(async (api: ApiPromise) => {66      tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'Unique');67      const events = await submitTransactionAsync(alice, tx);68      const result = getCreateItemResult(events);69      const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting);70      // tslint:disable-next-line:no-unused-expression71      expect(result.success).to.be.true;72      // tslint:disable-next-line:no-unused-expression73      expect(collectionInfo).to.be.exist;74      // tslint:disable-next-line:no-unused-expression75      expect(collectionInfo ? collectionInfo.SchemaVersion.toString() : '').to.be.equal('Unique');76    });77  });7879  it('validate schema version with just entered data', async () => {80    await usingApi(async (api: ApiPromise) => {81      tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'ImageURL');82      const events = await submitTransactionAsync(alice, tx);83      const result = getCreateItemResult(events);84      const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting);85      // tslint:disable-next-line:no-unused-expression86      expect(result.success).to.be.true;87      // tslint:disable-next-line:no-unused-expression88      expect(collectionInfo).to.be.exist;89      // tslint:disable-next-line:no-unused-expression90      expect(collectionInfo ? collectionInfo.SchemaVersion.toString() : '').to.be.equal('ImageURL');91    });92  });93});9495describe('setSchemaVersion negative', () => {96  let tx;97  before(async () => {98    await usingApi(async (api) => {99      const keyring = new Keyring({ type: 'sr25519' });100      alice = keyring.addFromUri('//Alice');101    });102  });103  it('execute setSchemaVersion for not exists collection', async () => {104    await usingApi(async (api: ApiPromise) => {105      const collectionCount = await getCollectionCount(api);106      const nonExistedCollectionId = collectionCount + 1;107      tx = api.tx.nft.setSchemaVersion(nonExistedCollectionId, 'ImageURL');108      try {109        await submitTransactionAsync(alice, tx);110      } catch (e) {111        // tslint:disable-next-line:no-unused-expression112        expect(e).to.be.exist;113      }114    });115  });116117  it('execute setSchemaVersion with not correct schema version', async () => {118    await usingApi(async (api: ApiPromise) => {119      try {120        tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'Test');121        await submitTransactionAsync(alice, tx);122      } catch (e) {123        // tslint:disable-next-line:no-unused-expression124        expect(e).to.be.exist;125      }126    });127  });128129  it('execute setSchemaVersion for deleted collection', async () => {130    await usingApi(async (api: ApiPromise) => {131      const collectionCount = await getCollectionCount(api);132      await destroyCollectionExpectSuccess(collectionCount);133      try {134        tx = api.tx.nft.setSchemaVersion(collectionCount, 'ImageURL');135        await submitTransactionAsync(alice, tx);136      } catch (e) {137        // tslint:disable-next-line:no-unused-expression138        expect(e).to.be.exist;139      }140    });141  });142});
addedtests/src/types.tsdiffbeforeafterboth
--- /dev/null
+++ b/tests/src/types.ts
@@ -0,0 +1,23 @@
+import BN from 'bn.js';
+
+export interface ICollectionInterface {
+  Access: string;
+  id: number;
+  DecimalPoints: BN;
+  // constOnChainSchema
+  Description: [BN, BN]; // utf16
+  isReFungible: boolean;
+  MintMode: boolean;
+  Mode: {
+    Nft: null;
+  };
+  Name: [BN, BN]; // utf16
+  OffchainSchema: [Uint8Array];
+  SchemaVersion: string;
+  Owner: [Uint8Array];
+  // prefix
+  // sponsor
+  // tokenPrefix
+  // unconfirmedSponsor
+  // variableOnChainSchema
+}
modifiedtests/src/util/helpers.tsdiffbeforeafterboth
--- a/tests/src/util/helpers.ts
+++ b/tests/src/util/helpers.ts
@@ -47,7 +47,7 @@
   return result;
 }
 
-function getCreateCollectionResult(events: EventRecord[]): CreateCollectionResult {
+export function getCreateCollectionResult(events: EventRecord[]): CreateCollectionResult {
   let success = false;
   let collectionId: number = 0;
   events.forEach(({ phase, event: { data, method, section } }) => {
@@ -65,7 +65,7 @@
   return result;
 }
 
-function getCreateItemResult(events: EventRecord[]): CreateItemResult {
+export function getCreateItemResult(events: EventRecord[]): CreateItemResult {
   let success = false;
   let collectionId: number = 0;
   let itemId: number = 0;