1import {expect} from 'chai';2import {tokenIdToAddress} from '../eth/util/helpers';3import privateKey from '../substrate/privateKey';4import usingApi from '../substrate/substrate-api';5import {createCollectionExpectSuccess, createItemExpectSuccess, getTokenOwner, getTopmostTokenOwner, setCollectionLimitsExpectSuccess, transferExpectSuccess, transferFromExpectSuccess} from '../util/helpers';67describe.only('nesting', () => {8 it('allows to nest/unnest token', async () => {9 await usingApi(async api => {10 const alice = privateKey('//Alice');11 const bob = privateKey('//Bob');1213 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});14 await setCollectionLimitsExpectSuccess(alice, collection, {nestingRule:{OwnerRestricted:[collection]}});15 const targetToken = await createItemExpectSuccess(alice, collection, 'NFT');1617 const nestedToken = await createItemExpectSuccess(alice, collection, 'NFT');1819 20 await transferExpectSuccess(collection, nestedToken, alice, {Ethereum: tokenIdToAddress(collection, targetToken)});21 22 expect(await getTopmostTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Substrate: alice.address});23 expect(await getTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collection, targetToken).toLowerCase()});2425 26 await transferExpectSuccess(collection, targetToken, alice, {Substrate: bob.address});27 28 expect(await getTopmostTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Substrate: bob.address});29 expect(await getTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collection, targetToken).toLowerCase()});3031 32 await transferFromExpectSuccess(collection, nestedToken, bob, {Ethereum: tokenIdToAddress(collection, targetToken)}, {Substrate: bob.address});3334 expect(await getTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Substrate: bob.address});35 });36 });37});