difftreelog
test manage properties of a nested token
in: master
1 file changed
tests/src/nesting/properties.test.tsdiffbeforeafterboth3import {3import {4 addCollectionAdminExpectSuccess,4 addCollectionAdminExpectSuccess,5 createCollectionExpectSuccess,5 createCollectionExpectSuccess,6 setCollectionPermissionsExpectSuccess,6 createItemExpectSuccess,7 createItemExpectSuccess,7 getCreateCollectionResult,8 getCreateCollectionResult,8 transferExpectSuccess,9 transferExpectSuccess,9} from '../util/helpers';10} from '../util/helpers';10import {IKeyringPair} from '@polkadot/types/types';11import {IKeyringPair} from '@polkadot/types/types';12import { tokenIdToAddress } from '../eth/util/helpers';111312let alice: IKeyringPair;14let alice: IKeyringPair;13let bob: IKeyringPair;15let bob: IKeyringPair;522describe('Integration Test: Token Properties', () => {524describe('Integration Test: Token Properties', () => {523 let collection: number;525 let collection: number;524 let token: number;526 let token: number;527 let nestedToken: number;525 let permissions: {permission: any, signers: IKeyringPair[]}[];528 let permissions: {permission: any, signers: IKeyringPair[]}[];526529527 before(async () => {530 before(async () => {544 beforeEach(async () => {547 beforeEach(async () => {545 await usingApi(async () => {548 await usingApi(async () => {546 collection = await createCollectionExpectSuccess();549 collection = await createCollectionExpectSuccess();550 await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}});551547 token = await createItemExpectSuccess(alice, collection, 'NFT');552 token = await createItemExpectSuccess(alice, collection, 'NFT');553 nestedToken = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: tokenIdToAddress(collection, token)});554548 await addCollectionAdminExpectSuccess(alice, collection, bob.address);555 await addCollectionAdminExpectSuccess(alice, collection, bob.address);549 await transferExpectSuccess(collection, token, alice, charlie);556 await transferExpectSuccess(collection, token, alice, charlie);682 });689 });683 });690 });691692 it('Assigns properties to a nested token according to permissions', async () => {693 await usingApi(async api => {694 const propertyKeys: string[] = [];695 let i = 0;696 for (const permission of permissions) {697 for (const signer of permission.signers) {698 const key = i + '_' + signer.address;699 propertyKeys.push(key);700701 await expect(executeTransaction(702 api, 703 alice, 704 api.tx.unique.setTokenPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 705 ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;706707 await expect(executeTransaction(708 api, 709 signer, 710 api.tx.unique.setTokenProperties(collection, nestedToken, [{key: key, value: 'Serotonin increase'}]), 711 ), `on adding property ${i} by ${signer.address}`).to.not.be.rejected;712 }713714 i++;715 }716717 const properties = (await api.rpc.unique.tokenProperties(collection, nestedToken, propertyKeys)).toHuman() as any[];718 const tokensData = (await api.rpc.unique.tokenData(collection, nestedToken, propertyKeys)).toHuman().properties as any[];719 for (let i = 0; i < properties.length; i++) {720 expect(properties[i].value).to.be.equal('Serotonin increase');721 expect(tokensData[i].value).to.be.equal('Serotonin increase');722 }723 });724 });725726 it('Changes properties of a nested token according to permissions', async () => {727 await usingApi(async api => {728 const propertyKeys: string[] = [];729 let i = 0;730 for (const permission of permissions) {731 if (!permission.permission.mutable) continue;732 733 for (const signer of permission.signers) {734 const key = i + '_' + signer.address;735 propertyKeys.push(key);736737 await expect(executeTransaction(738 api, 739 alice, 740 api.tx.unique.setTokenPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 741 ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;742743 await expect(executeTransaction(744 api, 745 signer, 746 api.tx.unique.setTokenProperties(collection, nestedToken, [{key: key, value: 'Serotonin increase'}]), 747 ), `on adding property ${i} by ${signer.address}`).to.not.be.rejected;748749 await expect(executeTransaction(750 api, 751 signer, 752 api.tx.unique.setTokenProperties(collection, nestedToken, [{key: key, value: 'Serotonin stable'}]), 753 ), `on changing property ${i} by ${signer.address}`).to.not.be.rejected;754 }755756 i++;757 }758759 const properties = (await api.rpc.unique.tokenProperties(collection, nestedToken, propertyKeys)).toHuman() as any[];760 const tokensData = (await api.rpc.unique.tokenData(collection, nestedToken, propertyKeys)).toHuman().properties as any[];761 for (let i = 0; i < properties.length; i++) {762 expect(properties[i].value).to.be.equal('Serotonin stable');763 expect(tokensData[i].value).to.be.equal('Serotonin stable');764 }765 });766 });767768 it('Deletes properties of a nested token according to permissions', async () => {769 await usingApi(async api => {770 const propertyKeys: string[] = [];771 let i = 0;772773 for (const permission of permissions) {774 if (!permission.permission.mutable) continue;775 776 for (const signer of permission.signers) {777 const key = i + '_' + signer.address;778 propertyKeys.push(key);779780 await expect(executeTransaction(781 api, 782 alice, 783 api.tx.unique.setTokenPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 784 ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;785786 await expect(executeTransaction(787 api, 788 signer, 789 api.tx.unique.setTokenProperties(collection, nestedToken, [{key: key, value: 'Serotonin increase'}]), 790 ), `on adding property ${i} by ${signer.address}`).to.not.be.rejected;791792 await expect(executeTransaction(793 api, 794 signer, 795 api.tx.unique.deleteTokenProperties(collection, nestedToken, [key]), 796 ), `on deleting property ${i} by ${signer.address}`).to.not.be.rejected;797 }798 799 i++;800 }801802 const properties = (await api.rpc.unique.tokenProperties(collection, nestedToken, propertyKeys)).toJSON() as any[];803 expect(properties).to.be.empty;804 const tokensData = (await api.rpc.unique.tokenData(collection, nestedToken, propertyKeys)).toJSON().properties as any[];805 expect(tokensData).to.be.empty;806 expect((await api.query.nonfungible.tokenProperties(collection, nestedToken)).toJSON().consumedSpace).to.be.equal(0);807 });808 });684});809});685810686describe('Negative Integration Test: Token Properties', () => {811describe('Negative Integration Test: Token Properties', () => {