123456import { ApiPromise } from '@polkadot/api';7import { expect } from 'chai';8import usingApi from './substrate/substrate-api';910function getModuleNames(api: ApiPromise): string[] {11 return api.runtimeMetadata.asLatest.modules.map(m => m.name.toString().toLowerCase());12}131415const requiredPallets = [16 'balances',17 'randomnesscollectiveflip',18 'timestamp',19 'transactionpayment',20 'treasury',21 'system',22 'vesting',23 'parachainsystem',24 'parachaininfo',25 'evm',26 'evmcodersubstrate',27 'evmcontracthelpers',28 'evmtransactionpayment',29 'ethereum',30 'xcmpqueue',31 'polkadotxcm',32 'cumulusxcm',33 'dmpqueue',34 'inflation',35 'nft',36 'scheduler',37 'nftpayment',38 'charging',39];404142const consensusPallets = [43 'sudo',44 'aura',45 'auraext',46];4748describe('Pallet presence', () => {49 it('Required pallets are present', async () => {50 await usingApi(async api => {51 for (let i=0; i<requiredPallets.length; i++) {52 expect(getModuleNames(api)).to.include(requiredPallets[i]);53 }54 });55 });56 it('Governance and consensus pallets are present', async () => {57 await usingApi(async api => {58 for (let i=0; i<consensusPallets.length; i++) {59 expect(getModuleNames(api)).to.include(consensusPallets[i]);60 }61 });62 });63 it('No extra pallets are included', async () => {64 await usingApi(async api => {65 expect(getModuleNames(api).sort()).to.be.deep.equal([...requiredPallets, ...consensusPallets].sort());66 });67 });68});