From 923a249b0edb9b39bf64f7de87d72928e49fda97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8r=E2=88=82=C2=A1?= Date: Tue, 28 May 2024 18:39:03 +0200 Subject: [PATCH] Cleaner tests --- .../contracts/test/unit-testing/common.ts | 1 - .../unit-testing/governance-plugins-setup.ts | 69 +++++++------------ .../personal-space-admin-plugin-setup.ts | 38 +++++----- .../test/unit-testing/space-plugin-setup.ts | 35 ++++------ 4 files changed, 54 insertions(+), 89 deletions(-) diff --git a/packages/contracts/test/unit-testing/common.ts b/packages/contracts/test/unit-testing/common.ts index 914166c..80325db 100644 --- a/packages/contracts/test/unit-testing/common.ts +++ b/packages/contracts/test/unit-testing/common.ts @@ -2,7 +2,6 @@ import {BigNumber} from '@ethersproject/bignumber'; import {expect} from 'chai'; import {ethers} from 'hardhat'; -export const abiCoder = ethers.utils.defaultAbiCoder; export const EMPTY_DATA = '0x'; export const ZERO_BYTES32 = '0x0000000000000000000000000000000000000000000000000000000000000000'; diff --git a/packages/contracts/test/unit-testing/governance-plugins-setup.ts b/packages/contracts/test/unit-testing/governance-plugins-setup.ts index cf23ecf..dee59e1 100644 --- a/packages/contracts/test/unit-testing/governance-plugins-setup.ts +++ b/packages/contracts/test/unit-testing/governance-plugins-setup.ts @@ -1,4 +1,3 @@ -import buildMetadata from '../../src/governance/governance-build-metadata.json'; import { DAO, GovernancePluginsSetup, @@ -6,9 +5,8 @@ import { MainVotingPlugin__factory, } from '../../typechain'; import {deployTestDao} from '../helpers/test-dao'; -import {getNamedTypesFromMetadata, Operation} from '../helpers/types'; +import {Operation} from '../helpers/types'; import { - abiCoder, ADDRESS_ZERO, EXECUTE_PERMISSION_ID, NO_CONDITION, @@ -47,22 +45,15 @@ describe('Governance Plugins Setup', function () { it('returns the plugin, helpers, and permissions (no pluginUpgrader)', async () => { const pluginUpgrader = ADDRESS_ZERO; - // Params: (MajorityVotingBase.VotingSettings, address[], uint64, address) - const initData = abiCoder.encode( - getNamedTypesFromMetadata( - buildMetadata.pluginSetup.prepareInstallation.inputs - ), - [ - { - votingMode: VotingMode.EarlyExecution, - supportThreshold: pctToRatio(25), - minParticipation: pctToRatio(50), - duration: 60 * 60 * 24 * 5, - }, - [alice.address], - 60 * 60 * 24, - pluginUpgrader, - ] + const initData = await governancePluginsSetup.encodeInstallationParams( + { + votingMode: VotingMode.EarlyExecution, + supportThreshold: pctToRatio(25), + duration: 60 * 60 * 24 * 5, + }, + [alice.address], + 60 * 60 * 24, + pluginUpgrader ); const nonce = await ethers.provider.getTransactionCount( governancePluginsSetup.address @@ -148,21 +139,15 @@ describe('Governance Plugins Setup', function () { const pluginUpgrader = bob.address; // Params: (MajorityVotingBase.VotingSettings, address, address) - const initData = abiCoder.encode( - getNamedTypesFromMetadata( - buildMetadata.pluginSetup.prepareInstallation.inputs - ), - [ - { - votingMode: VotingMode.EarlyExecution, - supportThreshold: pctToRatio(25), - minParticipation: pctToRatio(50), - duration: 60 * 60 * 24 * 5, - }, - [alice.address], - 60 * 60 * 24, - pluginUpgrader, - ] + const initData = await governancePluginsSetup.encodeInstallationParams( + { + votingMode: VotingMode.EarlyExecution, + supportThreshold: pctToRatio(25), + duration: 60 * 60 * 24 * 5, + }, + [alice.address], + 60 * 60 * 24, + pluginUpgrader ); const nonce = await ethers.provider.getTransactionCount( governancePluginsSetup.address @@ -267,12 +252,8 @@ describe('Governance Plugins Setup', function () { ).deploy(); const pluginUpgrader = ADDRESS_ZERO; - const uninstallData = abiCoder.encode( - getNamedTypesFromMetadata( - buildMetadata.pluginSetup.prepareUninstallation.inputs - ), - [pluginUpgrader] - ); + const uninstallData = + await governancePluginsSetup.encodeUninstallationParams(pluginUpgrader); const permissions = await governancePluginsSetup.callStatic.prepareUninstallation( dao.address, @@ -332,12 +313,8 @@ describe('Governance Plugins Setup', function () { ).deploy(); const pluginUpgrader = bob.address; - const uninstallData = abiCoder.encode( - getNamedTypesFromMetadata( - buildMetadata.pluginSetup.prepareUninstallation.inputs - ), - [pluginUpgrader] - ); + const uninstallData = + await governancePluginsSetup.encodeUninstallationParams(pluginUpgrader); const permissions = await governancePluginsSetup.callStatic.prepareUninstallation( dao.address, diff --git a/packages/contracts/test/unit-testing/personal-space-admin-plugin-setup.ts b/packages/contracts/test/unit-testing/personal-space-admin-plugin-setup.ts index 4d38f41..ad2584d 100644 --- a/packages/contracts/test/unit-testing/personal-space-admin-plugin-setup.ts +++ b/packages/contracts/test/unit-testing/personal-space-admin-plugin-setup.ts @@ -1,4 +1,3 @@ -import metadata from '../../src/personal/personal-space-admin-build-metadata.json'; import { PersonalSpaceAdminPlugin__factory, PersonalSpaceAdminPluginSetup, @@ -6,12 +5,11 @@ import { } from '../../typechain'; import {getInterfaceID} from '../../utils/interfaces'; import {deployTestDao} from '../helpers/test-dao'; -import {getNamedTypesFromMetadata, Operation} from '../helpers/types'; +import {Operation} from '../helpers/types'; import {psvpInterface} from './personal-space-admin-plugin'; import {expect} from 'chai'; import {ethers} from 'hardhat'; -const abiCoder = ethers.utils.defaultAbiCoder; const AddressZero = ethers.constants.AddressZero; const EMPTY_DATA = '0x'; @@ -25,25 +23,22 @@ describe('Personal Space Admin Plugin Setup', function () { let adminSetup: PersonalSpaceAdminPluginSetup; let implementationAddress: string; let targetDao: any; - let minimum_data: any; + let prepareInstallationData: string; before(async () => { signers = await ethers.getSigners(); ownerAddress = await signers[0].getAddress(); targetDao = await deployTestDao(signers[0]); - minimum_data = abiCoder.encode( - getNamedTypesFromMetadata( - metadata.pluginSetup.prepareInstallation.inputs - ), - [ownerAddress] - ); - const PersonalSpaceAdminPluginSetup = new PersonalSpaceAdminPluginSetup__factory(signers[0]); adminSetup = await PersonalSpaceAdminPluginSetup.deploy(); implementationAddress = await adminSetup.implementation(); + + prepareInstallationData = await adminSetup.encodeInstallationParams( + ownerAddress + ); }); it('does not support the empty interface', async () => { @@ -70,21 +65,24 @@ describe('Personal Space Admin Plugin Setup', function () { await expect( adminSetup.prepareInstallation( targetDao.address, - minimum_data.substring(0, minimum_data.length - 2) + prepareInstallationData.substring( + 0, + prepareInstallationData.length - 2 + ) ) ).to.be.reverted; await expect( - adminSetup.prepareInstallation(targetDao.address, minimum_data) + adminSetup.prepareInstallation( + targetDao.address, + prepareInstallationData + ) ).not.to.be.reverted; }); it('reverts if encoded address in `_data` is zero', async () => { - const dataWithAddressZero = abiCoder.encode( - getNamedTypesFromMetadata( - metadata.pluginSetup.prepareInstallation.inputs - ), - [AddressZero] + const dataWithAddressZero = await adminSetup.encodeInstallationParams( + AddressZero ); await expect( @@ -108,7 +106,7 @@ describe('Personal Space Admin Plugin Setup', function () { preparedSetupData: {helpers, permissions}, } = await adminSetup.callStatic.prepareInstallation( targetDao.address, - minimum_data + prepareInstallationData ); expect(plugin).to.be.equal(anticipatedPluginAddress); @@ -143,7 +141,7 @@ describe('Personal Space Admin Plugin Setup', function () { nonce, }); - await adminSetup.prepareInstallation(daoAddress, minimum_data); + await adminSetup.prepareInstallation(daoAddress, prepareInstallationData); const factory = new PersonalSpaceAdminPlugin__factory(signers[0]); const adminAddressContract = factory.attach(anticipatedPluginAddress); diff --git a/packages/contracts/test/unit-testing/space-plugin-setup.ts b/packages/contracts/test/unit-testing/space-plugin-setup.ts index 337d674..6ee49f0 100644 --- a/packages/contracts/test/unit-testing/space-plugin-setup.ts +++ b/packages/contracts/test/unit-testing/space-plugin-setup.ts @@ -1,4 +1,3 @@ -import buildMetadata from '../../src/space/space-build-metadata.json'; import { DAO, SpacePlugin__factory, @@ -9,7 +8,6 @@ import {getPluginSetupProcessorAddress} from '../../utils/helpers'; import {deployTestDao} from '../helpers/test-dao'; import {getNamedTypesFromMetadata, Operation} from '../helpers/types'; import { - abiCoder, ADDRESS_ONE, ADDRESS_ZERO, CONTENT_PERMISSION_ID, @@ -41,12 +39,12 @@ describe('Space Plugin Setup', function () { describe('prepareInstallation', async () => { it('returns the plugin, helpers, and permissions (no pluginUpgrader)', async () => { - const initData = abiCoder.encode( - getNamedTypesFromMetadata( - buildMetadata.pluginSetup.prepareInstallation.inputs - ), - [defaultInitData.contentUri, ADDRESS_ZERO, ADDRESS_ZERO] + const initData = await spacePluginSetup.encodeInstallationParams( + defaultInitData.contentUri, + ADDRESS_ZERO, + ADDRESS_ZERO ); + const nonce = await ethers.provider.getTransactionCount( spacePluginSetup.address ); @@ -92,11 +90,10 @@ describe('Space Plugin Setup', function () { it('returns the plugin, helpers, and permissions (with a pluginUpgrader)', async () => { const pluginUpgrader = bob.address; - const initData = abiCoder.encode( - getNamedTypesFromMetadata( - buildMetadata.pluginSetup.prepareInstallation.inputs - ), - [defaultInitData.contentUri, ADDRESS_ONE, pluginUpgrader] + const initData = await spacePluginSetup.encodeInstallationParams( + defaultInitData.contentUri, + ADDRESS_ZERO, + pluginUpgrader ); const nonce = await ethers.provider.getTransactionCount( spacePluginSetup.address @@ -157,11 +154,8 @@ describe('Space Plugin Setup', function () { it('returns the permission changes (no pluginUpgrader)', async () => { const plugin = await new SpacePlugin__factory(alice).deploy(); - const uninstallData = abiCoder.encode( - getNamedTypesFromMetadata( - buildMetadata.pluginSetup.prepareUninstallation.inputs - ), - [ADDRESS_ZERO] + const uninstallData = await spacePluginSetup.encodeUninstallationParams( + ADDRESS_ZERO ); const permissions = @@ -194,11 +188,8 @@ describe('Space Plugin Setup', function () { const plugin = await new SpacePlugin__factory(alice).deploy(); const pluginUpgrader = bob.address; - const uninstallData = abiCoder.encode( - getNamedTypesFromMetadata( - buildMetadata.pluginSetup.prepareUninstallation.inputs - ), - [pluginUpgrader] + const uninstallData = await spacePluginSetup.encodeUninstallationParams( + pluginUpgrader ); const permissions =