Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 9 additions & 13 deletions packages/plugin/src/MultichainHardhatRuntimeEnvironmentField.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { HardhatRuntimeEnvironment } from "hardhat/types";
import { Config, Domain } from "@buildwithsygma/sygma-sdk-core";
import Web3, { ContractAbi, utils, PayableCallOptions } from "web3";
import Web3, { ContractAbi, utils } from "web3";
import { vars } from "hardhat/config";
import {
getConfigEnvironmentVariable,
Expand Down Expand Up @@ -56,7 +56,7 @@ export class MultichainHardhatRuntimeEnvironmentField {

this.domains = config.getDomains();

this.isInitiated;
this.isInitiated = true;
}

/**
Expand All @@ -83,7 +83,7 @@ export class MultichainHardhatRuntimeEnvironmentField {
const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";

/** Deploy Mock Sygma Bridge */
const DOMAIN_ID = BigInt(10);
const DOMAIN_ID = BigInt(1);

const feeHandler = new this.web3.eth.Contract(MockFeeHandlerABI);
const feeHandlerResponse = await feeHandler
Expand Down Expand Up @@ -234,14 +234,8 @@ export class MultichainHardhatRuntimeEnvironmentField {
)
.call();

let payableTxOptions: PayableCallOptions = { value: sumedFees(fees) };
const [deployer] = await this.web3.eth.getAccounts();

if (options?.customNonPayableTxOptions) {
payableTxOptions = {
...options.customNonPayableTxOptions,
value: sumedFees(fees),
};
}
console.log("Sending transaction...");
const receipt = await adapterContract.methods
.deploy(
Expand All @@ -254,7 +248,11 @@ export class MultichainHardhatRuntimeEnvironmentField {
deployDomainIDs,
fees
)
.send(payableTxOptions);
.send({
from: deployer,
value: sumedFees(fees),
...(options!.customNonPayableTxOptions || {}),
});
const networkNames = Object.keys(networkArgs);
const { transactionHash } = receipt;
console.log(
Expand All @@ -264,8 +262,6 @@ export class MultichainHardhatRuntimeEnvironmentField {
networkNames.join("\r\n")
);

const [deployer] = await this.web3.eth.getAccounts();

const destinationDomainChainIDs = deployDomainIDs.map((deployDomainID) => {
const deployDomain: Domain = this.domains.find(
(domain) => BigInt(domain.id) === deployDomainID
Expand Down
7 changes: 0 additions & 7 deletions packages/plugin/test/helpers.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import path from "path";
import { resetHardhatContext } from "hardhat/plugins-testing";
import { HardhatRuntimeEnvironment } from "hardhat/types";
import { TASK_NODE } from "hardhat/builtin-tasks/task-names";

declare module "mocha" {
interface Context {
Expand All @@ -20,9 +19,3 @@ export function useEnvironment(fixtureProjectName: string) {
resetHardhatContext();
});
}

export function useHardhatNode() {
beforeEach("Loading hardhat node", function () {
this.hre.run(TASK_NODE);
});
}
52 changes: 45 additions & 7 deletions packages/plugin/test/project.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@ import "mocha";
import { assert, use } from "chai";
import chaiAsPromised from "chai-as-promised";

import { Environment } from "@buildwithsygma/sygma-sdk-core";
import { Environment, Network } from "@buildwithsygma/sygma-sdk-core";
import HelloSygma from "@chainsafe/hardhat-plugin-multichain-deploy-contracts/artifacts/contracts/mocks/HelloSygma.sol/HelloSygma";
import { MultichainHardhatRuntimeEnvironmentField } from "../src/MultichainHardhatRuntimeEnvironmentField";

import { useEnvironment, useHardhatNode } from "./helpers";
import { DeployedLocalEnvironmentContracts } from "../src/types";
import { useEnvironment } from "./helpers";

use(chaiAsPromised);

Expand All @@ -32,13 +34,8 @@ describe("Integration tests examples", function () {
});
});

describe("Hardhat Runtime Environment extension", function () {
useEnvironment("hardhat-project");
});

describe("Hardhat Runtime Environment extension - initLocalEnvironment", function () {
useEnvironment("hardhat-localhost");
useHardhatNode();

it("Should deploy all required contracts on testnet", async function () {
const addresses = await this.hre.multichain.initLocalEnvironment();
Expand All @@ -51,4 +48,45 @@ describe("Integration tests examples", function () {
});
});
});

describe("Hardhat Runtime Environment extension - deploy methods", function () {
useEnvironment("hardhat-localhost");

let addresses: DeployedLocalEnvironmentContracts;

beforeEach(async function () {
addresses = await this.hre.multichain.initLocalEnvironment();

/* Manually set domains for testing purposes */
// @ts-ignore
this.hre.multichain.domains = [
{
id: 1,
chainId: 69,
name: "hardhat",
type: Network.EVM,
},
];
// @ts-ignore
this.hre.multichain.isInitiated = true;
});

it("Should successfully run deployMultichainBytecode", async function () {
const tx = await this.hre.multichain.deployMultichainBytecode(
HelloSygma.bytecode,
HelloSygma.abi,
{
hardhat: {
args: ["1"],
initData: {
initMethodName: "setName",
initMethodArgs: ["Hell-o"],
},
},
},
{ adapterAddress: addresses.adapterAddress }
);
assert.exists(tx.transactionHash);
});
});
});