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 'ethereum',27 'xcmpqueue',28 'polkadotxcm',29 'cumulusxcm',30 'dmpqueue',31 'inflation',32 'nft',33 'scheduler',34 'nftpayment',35 'charging'36];373839const consensusPallets = [40 'sudo',41 'aura',42 'auraext'43];4445describe('Pallet presence', () => {46 it('Required pallets are present', async () => {47 await usingApi(async api => {48 for (let i=0; i<requiredPallets.length; i++) {49 expect(getModuleNames(api)).to.include(requiredPallets[i]);50 }51 });52 });53 it('Governance and consensus pallets are present', async () => {54 await usingApi(async api => {55 for (let i=0; i<consensusPallets.length; i++) {56 expect(getModuleNames(api)).to.include(consensusPallets[i]);57 }58 });59 });60 it('No extra pallets are included', async () => {61 await usingApi(async api => {62 expect(getModuleNames(api).length).to.be.equal(requiredPallets.length + consensusPallets.length);63 });64 });65});