difftreelog
test(common-migration) collection fields remain the same
in: master
2 files changed
tests/package.jsondiffbeforeafterboth1{2 "name": "unique-tests",3 "version": "1.0.0",4 "description": "Unique Chain Tests",5 "main": "",6 "devDependencies": {7 "@polkadot/dev": "0.66.17",8 "@polkadot/ts": "0.4.22",9 "@polkadot/typegen": "8.3.1",10 "@types/chai": "^4.3.1",11 "@types/chai-as-promised": "^7.1.5",12 "@types/mocha": "^9.1.1",13 "@types/node": "^17.0.31",14 "@typescript-eslint/eslint-plugin": "^5.22.0",15 "@typescript-eslint/parser": "^5.22.0",16 "chai": "^4.3.6",17 "eslint": "^8.14.0",18 "mocha": "^10.0.0",19 "ts-node": "^10.7.0",20 "typescript": "^4.6.4"21 },22 "mocha": {23 "timeout": 9999999,24 "require": "ts-node/register"25 },26 "scripts": {27 "lint": "eslint --ext .ts,.js src/",28 "fix": "eslint --ext .ts,.js src/ --fix",29 "test": "mocha --timeout 9999999 -r ts-node/register './src/**/*.test.ts'",30 "testEth": "mocha --timeout 9999999 -r ts-node/register './**/eth/**/*.test.ts'",31 "testEthMarketplace": "mocha --timeout 9999999 -r ts-node/register './**/eth/marketplace/**/*.test.ts'",32 "load": "mocha --timeout 9999999 -r ts-node/register './**/*.load.ts'",33 "loadTransfer": "ts-node src/transfer.nload.ts",34 "testCollision": "mocha --timeout 9999999 -r ts-node/register ./src/collision-tests/*.test.ts",35 "testEvent": "mocha --timeout 9999999 -r ts-node/register ./src/check-event/*.test.ts",36 "testNesting": "mocha --timeout 9999999 -r ts-node/register ./**/nesting/**.test.ts",37 "testAddCollectionAdmin": "mocha --timeout 9999999 -r ts-node/register ./**/addCollectionAdmin.test.ts",38 "testSetSchemaVersion": "mocha --timeout 9999999 -r ts-node/register ./**/setSchemaVersion.test.ts",39 "testSetVariableMetaData": "mocha --timeout 9999999 -r ts-node/register ./**/setVariableMetaData.test.ts",40 "testSetCollectionLimits": "mocha --timeout 9999999 -r ts-node/register ./**/setCollectionLimits.test.ts",41 "testSetCollectionSponsor": "mocha --timeout 9999999 -r ts-node/register ./**/setCollectionSponsor.test.ts",42 "testConfirmSponsorship": "mocha --timeout 9999999 -r ts-node/register ./**/confirmSponsorship.test.ts",43 "testRemoveCollectionAdmin": "mocha --timeout 9999999 -r ts-node/register ./**/removeCollectionAdmin.test.ts",44 "testRemoveCollectionSponsor": "mocha --timeout 9999999 -r ts-node/register ./**/removeCollectionSponsor.test.ts",45 "testRemoveFromAllowList": "mocha --timeout 9999999 -r ts-node/register ./**/removeFromAllowList.test.ts",46 "testConnection": "mocha --timeout 9999999 -r ts-node/register ./**/connection.test.ts",47 "testCollection": "mocha --timeout 9999999 -r ts-node/register ./**/createCollection.test.ts",48 "testContracts": "mocha --timeout 9999999 -r ts-node/register ./**/contracts.test.ts",49 "testCreateItem": "mocha --timeout 9999999 -r ts-node/register ./**/createItem.test.ts",50 "testCreateMultipleItems": "mocha --timeout 9999999 -r ts-node/register ./**/createMultipleItems.test.ts",51 "testApprove": "mocha --timeout 9999999 -r ts-node/register ./**/approve.test.ts",52 "testTransferFrom": "mocha --timeout 9999999 -r ts-node/register ./**/transferFrom.test.ts",53 "testCreateCollection": "mocha --timeout 9999999 -r ts-node/register ./**/createCollection.test.ts",54 "testToggleContractAllowList": "mocha --timeout 9999999 -r ts-node/register ./**/toggleContractAllowList.test.ts",55 "testAddToContractAllowList": "mocha --timeout 9999999 -r ts-node/register ./**/addToContractAllowList.test.ts",56 "testTransfer": "mocha --timeout 9999999 -r ts-node/register ./**/transfer.test.ts",57 "testBurnItem": "mocha --timeout 9999999 -r ts-node/register ./**/burnItem.test.ts",58 "testSetMintPermission": "mocha --timeout 9999999 -r ts-node/register ./**/setMintPermission.test.ts",59 "testCreditFeesToTreasury": "mocha --timeout 9999999 -r ts-node/register ./**/creditFeesToTreasury.test.ts",60 "testEnableContractSponsoring": "mocha --timeout 9999999 -r ts-node/register ./**/enableContractSponsoring.test.ts",61 "testRemoveFromContractAllowList": "mocha --timeout 9999999 -r ts-node/register ./**/removeFromContractAllowList.test.ts",62 "testSetContractSponsoringRateLimit": "mocha --timeout 9999999 -r ts-node/register ./**/setContractSponsoringRateLimit.test.ts",63 "testSetOffchainSchema": "mocha --timeout 9999999 -r ts-node/register ./**/setOffchainSchema.test.ts",64 "testOverflow": "mocha --timeout 9999999 -r ts-node/register ./**/overflow.test.ts",65 "testSetVariableMetadataSponsoringRateLimit": "mocha --timeout 9999999 -r ts-node/register ./**/setVariableMetadataSponsoringRateLimit.test.ts",66 "testInflation": "mocha --timeout 9999999 -r ts-node/register ./**/inflation.test.ts",67 "testXcmTransfer": "mocha --timeout 9999999 -r ts-node/register ./**/xcmTransfer.test.ts",68 "testPalletPresence": "mocha --timeout 9999999 -r ts-node/register ./**/pallet-presence.test.ts",69 "testBlockProduction": "mocha --timeout 9999999 -r ts-node/register ./**/block-production.test.ts",70 "testEnableDisableTransfers": "mocha --timeout 9999999 -r ts-node/register ./**/enableDisableTransfer.test.ts",71 "testLimits": "mocha --timeout 9999999 -r ts-node/register ./**/limits.test.ts",72 "polkadot-types-fetch-metadata": "curl -H 'Content-Type: application/json' -d '{\"id\":\"1\", \"jsonrpc\":\"2.0\", \"method\": \"state_getMetadata\", \"params\":[]}' http://localhost:9933 > src/interfaces/metadata.json",73 "polkadot-types-from-defs": "ts-node ./node_modules/.bin/polkadot-types-from-defs --endpoint src/interfaces/metadata.json --input src/interfaces/ --package .",74 "polkadot-types-from-chain": "ts-node ./node_modules/.bin/polkadot-types-from-chain --endpoint src/interfaces/metadata.json --output src/interfaces/ --package .",75 "polkadot-types": "yarn polkadot-types-fetch-metadata && yarn polkadot-types-from-defs && yarn polkadot-types-from-chain"76 },77 "author": "",78 "license": "SEE LICENSE IN ../LICENSE",79 "homepage": "",80 "dependencies": {81 "@polkadot/api": "8.3.1",82 "@polkadot/api-contract": "8.3.1",83 "@polkadot/util-crypto": "^9.1.1",84 "bignumber.js": "^9.0.2",85 "chai-as-promised": "^7.1.1",86 "solc": "^0.8.13",87 "web3": "^1.7.3"88 },89 "standard": {90 "globals": [91 "it",92 "assert",93 "beforeEach",94 "afterEach",95 "describe",96 "contract",97 "artifacts"98 ]99 },100 "resolutions": {101 "simple-get": "^4.0.1"102 }103}1{2 "name": "unique-tests",3 "version": "1.0.0",4 "description": "Unique Chain Tests",5 "main": "",6 "devDependencies": {7 "@polkadot/dev": "0.66.17",8 "@polkadot/ts": "0.4.22",9 "@polkadot/typegen": "8.3.1",10 "@types/chai": "^4.3.1",11 "@types/chai-as-promised": "^7.1.5",12 "@types/mocha": "^9.1.1",13 "@types/node": "^17.0.31",14 "@typescript-eslint/eslint-plugin": "^5.22.0",15 "@typescript-eslint/parser": "^5.22.0",16 "chai": "^4.3.6",17 "eslint": "^8.14.0",18 "mocha": "^10.0.0",19 "ts-node": "^10.7.0",20 "typescript": "^4.6.4"21 },22 "mocha": {23 "timeout": 9999999,24 "require": "ts-node/register"25 },26 "scripts": {27 "lint": "eslint --ext .ts,.js src/",28 "fix": "eslint --ext .ts,.js src/ --fix",29 "test": "mocha --timeout 9999999 -r ts-node/register './src/**/*.test.ts'",30 "testEth": "mocha --timeout 9999999 -r ts-node/register './**/eth/**/*.test.ts'",31 "testEthMarketplace": "mocha --timeout 9999999 -r ts-node/register './**/eth/marketplace/**/*.test.ts'",32 "load": "mocha --timeout 9999999 -r ts-node/register './**/*.load.ts'",33 "loadTransfer": "ts-node src/transfer.nload.ts",34 "testCollision": "mocha --timeout 9999999 -r ts-node/register ./src/collision-tests/*.test.ts",35 "testEvent": "mocha --timeout 9999999 -r ts-node/register ./src/check-event/*.test.ts",36 "testNesting": "mocha --timeout 9999999 -r ts-node/register ./**/nesting/**.test.ts",37 "testMigrationStructure": "mocha --timeout 9999999 -r ts-node/register ./**/nesting/migration-check.test.ts",38 "testAddCollectionAdmin": "mocha --timeout 9999999 -r ts-node/register ./**/addCollectionAdmin.test.ts",39 "testSetSchemaVersion": "mocha --timeout 9999999 -r ts-node/register ./**/setSchemaVersion.test.ts",40 "testSetVariableMetaData": "mocha --timeout 9999999 -r ts-node/register ./**/setVariableMetaData.test.ts",41 "testSetCollectionLimits": "mocha --timeout 9999999 -r ts-node/register ./**/setCollectionLimits.test.ts",42 "testSetCollectionSponsor": "mocha --timeout 9999999 -r ts-node/register ./**/setCollectionSponsor.test.ts",43 "testConfirmSponsorship": "mocha --timeout 9999999 -r ts-node/register ./**/confirmSponsorship.test.ts",44 "testRemoveCollectionAdmin": "mocha --timeout 9999999 -r ts-node/register ./**/removeCollectionAdmin.test.ts",45 "testRemoveCollectionSponsor": "mocha --timeout 9999999 -r ts-node/register ./**/removeCollectionSponsor.test.ts",46 "testRemoveFromAllowList": "mocha --timeout 9999999 -r ts-node/register ./**/removeFromAllowList.test.ts",47 "testConnection": "mocha --timeout 9999999 -r ts-node/register ./**/connection.test.ts",48 "testCollection": "mocha --timeout 9999999 -r ts-node/register ./**/createCollection.test.ts",49 "testContracts": "mocha --timeout 9999999 -r ts-node/register ./**/contracts.test.ts",50 "testCreateItem": "mocha --timeout 9999999 -r ts-node/register ./**/createItem.test.ts",51 "testCreateMultipleItems": "mocha --timeout 9999999 -r ts-node/register ./**/createMultipleItems.test.ts",52 "testApprove": "mocha --timeout 9999999 -r ts-node/register ./**/approve.test.ts",53 "testTransferFrom": "mocha --timeout 9999999 -r ts-node/register ./**/transferFrom.test.ts",54 "testCreateCollection": "mocha --timeout 9999999 -r ts-node/register ./**/createCollection.test.ts",55 "testToggleContractAllowList": "mocha --timeout 9999999 -r ts-node/register ./**/toggleContractAllowList.test.ts",56 "testAddToContractAllowList": "mocha --timeout 9999999 -r ts-node/register ./**/addToContractAllowList.test.ts",57 "testTransfer": "mocha --timeout 9999999 -r ts-node/register ./**/transfer.test.ts",58 "testBurnItem": "mocha --timeout 9999999 -r ts-node/register ./**/burnItem.test.ts",59 "testSetMintPermission": "mocha --timeout 9999999 -r ts-node/register ./**/setMintPermission.test.ts",60 "testCreditFeesToTreasury": "mocha --timeout 9999999 -r ts-node/register ./**/creditFeesToTreasury.test.ts",61 "testEnableContractSponsoring": "mocha --timeout 9999999 -r ts-node/register ./**/enableContractSponsoring.test.ts",62 "testRemoveFromContractAllowList": "mocha --timeout 9999999 -r ts-node/register ./**/removeFromContractAllowList.test.ts",63 "testSetContractSponsoringRateLimit": "mocha --timeout 9999999 -r ts-node/register ./**/setContractSponsoringRateLimit.test.ts",64 "testSetOffchainSchema": "mocha --timeout 9999999 -r ts-node/register ./**/setOffchainSchema.test.ts",65 "testOverflow": "mocha --timeout 9999999 -r ts-node/register ./**/overflow.test.ts",66 "testSetVariableMetadataSponsoringRateLimit": "mocha --timeout 9999999 -r ts-node/register ./**/setVariableMetadataSponsoringRateLimit.test.ts",67 "testInflation": "mocha --timeout 9999999 -r ts-node/register ./**/inflation.test.ts",68 "testXcmTransfer": "mocha --timeout 9999999 -r ts-node/register ./**/xcmTransfer.test.ts",69 "testPalletPresence": "mocha --timeout 9999999 -r ts-node/register ./**/pallet-presence.test.ts",70 "testBlockProduction": "mocha --timeout 9999999 -r ts-node/register ./**/block-production.test.ts",71 "testEnableDisableTransfers": "mocha --timeout 9999999 -r ts-node/register ./**/enableDisableTransfer.test.ts",72 "testLimits": "mocha --timeout 9999999 -r ts-node/register ./**/limits.test.ts",73 "polkadot-types-fetch-metadata": "curl -H 'Content-Type: application/json' -d '{\"id\":\"1\", \"jsonrpc\":\"2.0\", \"method\": \"state_getMetadata\", \"params\":[]}' http://localhost:9933 > src/interfaces/metadata.json",74 "polkadot-types-from-defs": "ts-node ./node_modules/.bin/polkadot-types-from-defs --endpoint src/interfaces/metadata.json --input src/interfaces/ --package .",75 "polkadot-types-from-chain": "ts-node ./node_modules/.bin/polkadot-types-from-chain --endpoint src/interfaces/metadata.json --output src/interfaces/ --package .",76 "polkadot-types": "yarn polkadot-types-fetch-metadata && yarn polkadot-types-from-defs && yarn polkadot-types-from-chain"77 },78 "author": "",79 "license": "SEE LICENSE IN ../LICENSE",80 "homepage": "",81 "dependencies": {82 "@polkadot/api": "8.3.1",83 "@polkadot/api-contract": "8.3.1",84 "@polkadot/util-crypto": "^9.1.1",85 "bignumber.js": "^9.0.2",86 "chai-as-promised": "^7.1.1",87 "solc": "^0.8.13",88 "web3": "^1.7.3"89 },90 "standard": {91 "globals": [92 "it",93 "assert",94 "beforeEach",95 "afterEach",96 "describe",97 "contract",98 "artifacts"99 ]100 },101 "resolutions": {102 "simple-get": "^4.0.1"103 }104}tests/src/nesting/migration-check.test.tsdiffbeforeafterboth--- /dev/null
+++ b/tests/src/nesting/migration-check.test.ts
@@ -0,0 +1,93 @@
+import {expect} from 'chai';
+import privateKey from '../substrate/privateKey';
+import usingApi, {submitTransactionAsync} from '../substrate/substrate-api';
+import {getCreateCollectionResult} from '../util/helpers';
+import {IKeyringPair} from '@polkadot/types/types';
+import {strToUTF16} from '../util/util';
+import waitNewBlocks from '../substrate/wait-new-blocks';
+
+// todo skip
+describe.skip('Migration testing for pallet-common', () => {
+ let alice: IKeyringPair;
+
+ before(async() => {
+ await usingApi(async api => {
+ alice = privateKey('//Alice');
+ });
+ });
+
+ it('Preserves collection settings', async () => {
+ let old_version: number;
+ let collection_id: number;
+ let collection_old: any;
+
+ await usingApi(async api => {
+ // Create a collection for comparison before and after the upgrade
+ const tx = api.tx.unique.createCollectionEx({
+ mode: 'NFT',
+ access: 'AllowList',
+ name: strToUTF16("Mojave Pictures"),
+ description: strToUTF16("$2.2 billion power plant!"),
+ tokenPrefix: '0x0002030',
+ offchainSchema: '0x111111',
+ schemaVersion: 'Unique',
+ limits: {
+ accountTokenOwnershipLimit: 3,
+ },
+ variableOnChainSchema: '0x222222',
+ constOnChainSchema: '0x333333',
+ metaUpdatePermission: 'Admin',
+ });
+ const events = await submitTransactionAsync(alice, tx);
+ const result = getCreateCollectionResult(events);
+ collection_id = result.collectionId;
+
+ // Get the pre-upgrade collection info
+ collection_old = (await api.query.common.collectionById(collection_id)).toJSON();
+
+ // Get the pre-upgrade spec version
+ old_version = (api.consts.system.version.toJSON() as any).specVersion;
+ });
+
+ console.log(`Now waiting for the parachain upgrade from ${old_version!}...`);
+
+ let new_version = old_version!;
+ let connection_fail_counter = 0;
+
+ // And wait for the parachain upgrade
+ while (new_version == old_version! && connection_fail_counter < 2) {
+ try {
+ await usingApi(async api => {
+ await waitNewBlocks(api);
+ new_version = (api.consts.system.version.toJSON() as any).specVersion;
+ });
+ } catch (_) {
+ connection_fail_counter++;
+ await new Promise( resolve => setTimeout(resolve, 12000) );
+ }
+ }
+
+ await usingApi(async api => {
+ const collection_new = (await api.query.common.collectionById(collection_id)).toJSON() as any;
+
+ // Make sure the extra fields are what they should be
+ const variable_on_chain_schema = await api.query.common.collectionData(collection_id, "VariableOnChainSchema");
+ const const_on_chain_schema = await api.query.common.collectionData(collection_id, "ConstOnChainSchema");
+ const offchain_schema = await api.query.common.collectionData(collection_id, "OffchainSchema");
+
+ expect(variable_on_chain_schema.toHex()).to.be.deep.equal((collection_old.variableOnChainSchema));
+ expect(const_on_chain_schema.toHex()).to.be.deep.equal(collection_old.constOnChainSchema);
+ expect(offchain_schema.toHex()).to.be.deep.equal(collection_old.offchainSchema);
+ expect(collection_new).to.have.nested.property('limits.nestingRule');
+
+ // Get rid of extra fields to perform comparison on the rest of the collection
+ delete collection_new.limits.nestingRule;
+ delete collection_old.constOnChainSchema;
+ delete collection_old.offchainSchema;
+ delete collection_old.variableOnChainSchema;
+
+ expect(collection_new).to.be.deep.equal(collection_old);
+ });
+ });
+});
+
\ No newline at end of file