From 6dd2322471d4e9fd526987f7ded5a519e32f68fc Mon Sep 17 00:00:00 2001 From: PraetorP Date: Fri, 16 Dec 2022 13:36:29 +0000 Subject: [PATCH] refactor: `collection_limits`, add docs for `CollectionLimits` --- --- a/pallets/common/src/erc.rs +++ b/pallets/common/src/erc.rs @@ -358,18 +358,16 @@ ), limits .sponsored_data_rate_limit - .map(|limit| { - ( - EvmCollectionLimits::SponsoredDataRateLimit, - match limit { - SponsoringRateLimit::Blocks(_) => true, - _ => false, - }, - match limit { - SponsoringRateLimit::Blocks(blocks) => blocks.into(), - _ => Default::default(), - }, - ) + .and_then(|limit| { + if let SponsoringRateLimit::Blocks(blocks) = limit { + Some(( + EvmCollectionLimits::SponsoredDataRateLimit, + true, + blocks.into(), + )) + } else { + None + } }) .unwrap_or(( EvmCollectionLimits::SponsoredDataRateLimit, --- a/pallets/common/src/eth.rs +++ b/pallets/common/src/eth.rs @@ -155,6 +155,8 @@ } } } + +/// [`CollectionLimits`](up_data_structs::CollectionLimits) representation for EVM. #[derive(Debug, Default, Clone, Copy, AbiCoder)] #[repr(u8)] pub enum CollectionLimits { --- a/tests/src/eth/collectionLimits.test.ts +++ b/tests/src/eth/collectionLimits.test.ts @@ -1,6 +1,7 @@ import {IKeyringPair} from '@polkadot/types/types'; import {Pallets} from '../util'; -import {CollectionLimits, expect, itEth, usingEthPlaygrounds} from './util'; +import {expect, itEth, usingEthPlaygrounds} from './util'; +import {CollectionLimits} from './util/playgrounds/types'; describe('Can set collection limits', () => { @@ -62,15 +63,15 @@ // Check limits from eth: const limitsEvm = await collectionEvm.methods.collectionLimits().call({from: owner}); expect(limitsEvm).to.have.length(9); - expect(limitsEvm[0]).to.deep.eq(['0', true, limits.accountTokenOwnershipLimit.toString()]); - expect(limitsEvm[1]).to.deep.eq(['1', true, limits.sponsoredDataSize.toString()]); - expect(limitsEvm[2]).to.deep.eq(['2', true, limits.sponsoredDataRateLimit.toString()]); - expect(limitsEvm[3]).to.deep.eq(['3', true, limits.tokenLimit.toString()]); - expect(limitsEvm[4]).to.deep.eq(['4', true, limits.sponsorTransferTimeout.toString()]); - expect(limitsEvm[5]).to.deep.eq(['5', true, limits.sponsorApproveTimeout.toString()]); - expect(limitsEvm[6]).to.deep.eq(['6', true, limits.ownerCanTransfer.toString()]); - expect(limitsEvm[7]).to.deep.eq(['7', true, limits.ownerCanDestroy.toString()]); - expect(limitsEvm[8]).to.deep.eq(['8', true, limits.transfersEnabled.toString()]); + expect(limitsEvm[0]).to.deep.eq([CollectionLimits.AccountTokenOwnership.toString(), true, limits.accountTokenOwnershipLimit.toString()]); + expect(limitsEvm[1]).to.deep.eq([CollectionLimits.SponsoredDataSize.toString(), true, limits.sponsoredDataSize.toString()]); + expect(limitsEvm[2]).to.deep.eq([CollectionLimits.SponsoredDataRateLimit.toString(), true, limits.sponsoredDataRateLimit.toString()]); + expect(limitsEvm[3]).to.deep.eq([CollectionLimits.TokenLimit.toString(), true, limits.tokenLimit.toString()]); + expect(limitsEvm[4]).to.deep.eq([CollectionLimits.SponsorTransferTimeout.toString(), true, limits.sponsorTransferTimeout.toString()]); + expect(limitsEvm[5]).to.deep.eq([CollectionLimits.SponsorApproveTimeout.toString(), true, limits.sponsorApproveTimeout.toString()]); + expect(limitsEvm[6]).to.deep.eq([CollectionLimits.OwnerCanTransfer.toString(), true, limits.ownerCanTransfer.toString()]); + expect(limitsEvm[7]).to.deep.eq([CollectionLimits.OwnerCanDestroy.toString(), true, limits.ownerCanDestroy.toString()]); + expect(limitsEvm[8]).to.deep.eq([CollectionLimits.TransferEnabled.toString(), true, limits.transfersEnabled.toString()]); })); }); --- a/tests/src/eth/createFTCollection.test.ts +++ b/tests/src/eth/createFTCollection.test.ts @@ -17,7 +17,8 @@ import {IKeyringPair} from '@polkadot/types/types'; import {evmToAddress} from '@polkadot/util-crypto'; import {Pallets, requirePalletsOrSkip} from '../util'; -import {CollectionLimits, expect, itEth, usingEthPlaygrounds} from './util'; +import {expect, itEth, usingEthPlaygrounds} from './util'; +import { CollectionLimits } from './util/playgrounds/types'; const DECIMALS = 18; --- a/tests/src/eth/createNFTCollection.test.ts +++ b/tests/src/eth/createNFTCollection.test.ts @@ -16,7 +16,8 @@ import {evmToAddress} from '@polkadot/util-crypto'; import {IKeyringPair} from '@polkadot/types/types'; -import {CollectionLimits, expect, itEth, usingEthPlaygrounds} from './util'; +import {expect, itEth, usingEthPlaygrounds} from './util'; +import { CollectionLimits } from './util/playgrounds/types'; describe('Create NFT collection from EVM', () => { --- a/tests/src/eth/createRFTCollection.test.ts +++ b/tests/src/eth/createRFTCollection.test.ts @@ -17,7 +17,8 @@ import {evmToAddress} from '@polkadot/util-crypto'; import {IKeyringPair} from '@polkadot/types/types'; import {Pallets, requirePalletsOrSkip} from '../util'; -import {CollectionLimits, expect, itEth, usingEthPlaygrounds} from './util'; +import {expect, itEth, usingEthPlaygrounds} from './util'; +import { CollectionLimits } from './util/playgrounds/types'; describe('Create RFT collection from EVM', () => { --- a/tests/src/eth/events.test.ts +++ b/tests/src/eth/events.test.ts @@ -16,10 +16,10 @@ import {expect} from 'chai'; import {IKeyringPair} from '@polkadot/types/types'; -import {CollectionLimits, EthUniqueHelper, itEth, usingEthPlaygrounds} from './util'; +import {EthUniqueHelper, itEth, usingEthPlaygrounds} from './util'; import {IEvent, TCollectionMode} from '../util/playgrounds/types'; import {Pallets, requirePalletsOrSkip} from '../util'; -import {EthTokenPermissions, NormalizedEvent} from './util/playgrounds/types'; +import {CollectionLimits, EthTokenPermissions, NormalizedEvent} from './util/playgrounds/types'; let donor: IKeyringPair; --- a/tests/src/eth/util/index.ts +++ b/tests/src/eth/util/index.ts @@ -26,18 +26,8 @@ Allowlisted = 1, Generous = 2, } -export enum CollectionLimits { - AccountTokenOwnership, - SponsoredDataSize, - SponsoredDataRateLimit, - TokenLimit, - SponsorTransferTimeout, - SponsorApproveTimeout, - OwnerCanTransfer, - OwnerCanDestroy, - TransferEnabled -} + export const usingEthPlaygrounds = async (code: (helper: EthUniqueHelper, privateKey: (seed: string | {filename: string}) => Promise) => Promise) => { const silentConsole = new SilentConsole(); silentConsole.enable(); --- a/tests/src/eth/util/playgrounds/types.ts +++ b/tests/src/eth/util/playgrounds/types.ts @@ -24,4 +24,15 @@ Mutable, TokenOwner, CollectionAdmin -} \ No newline at end of file +} +export enum CollectionLimits { + AccountTokenOwnership, + SponsoredDataSize, + SponsoredDataRateLimit, + TokenLimit, + SponsorTransferTimeout, + SponsorApproveTimeout, + OwnerCanTransfer, + OwnerCanDestroy, + TransferEnabled +} -- gitstuff