From c8bc6c6e3711719d45e083d53fa00b728502b080 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Mon, 27 Jun 2022 15:01:14 +0200 Subject: [PATCH] Test executeMultiple --- .../src/signingcosmwasmclient.spec.ts | 62 +++++++++++++++++++ .../cosmwasm-stargate/src/testutils.spec.ts | 1 + 2 files changed, 63 insertions(+) diff --git a/packages/cosmwasm-stargate/src/signingcosmwasmclient.spec.ts b/packages/cosmwasm-stargate/src/signingcosmwasmclient.spec.ts index 3093b718..8f9884d0 100644 --- a/packages/cosmwasm-stargate/src/signingcosmwasmclient.spec.ts +++ b/packages/cosmwasm-stargate/src/signingcosmwasmclient.spec.ts @@ -530,6 +530,68 @@ describe("SigningCosmWasmClient", () => { }); }); + describe("executeMultiple", () => { + it("works", async () => { + pendingWithoutWasmd(); + const wallet = await DirectSecp256k1HdWallet.fromMnemonic(alice.mnemonic, { prefix: wasmd.prefix }); + const options = { ...defaultSigningClientOptions, prefix: wasmd.prefix }; + const client = await SigningCosmWasmClient.connectWithSigner(wasmd.endpoint, wallet, options); + const { codeId } = await client.upload(alice.address0, getHackatom().data, defaultUploadFee); + // instantiate + const funds = [coin(233444, "ucosm"), coin(5454, "ustake")]; + const beneficiaryAddress1 = makeRandomAddress(); + const beneficiaryAddress2 = makeRandomAddress(); + const { contractAddress: contractAddress1 } = await client.instantiate( + alice.address0, + codeId, + { + verifier: alice.address0, + beneficiary: beneficiaryAddress1, + }, + "amazing random contract", + defaultInstantiateFee, + { funds: funds }, + ); + const { contractAddress: contractAddress2 } = await client.instantiate( + alice.address0, + codeId, + { + verifier: alice.address0, + beneficiary: beneficiaryAddress2, + }, + "amazing random contract", + defaultInstantiateFee, + { funds: funds }, + ); + // execute + const result = await client.executeMultiple( + alice.address0, + [ + { contractAddress: contractAddress1, msg: { release: {} } }, + { contractAddress: contractAddress2, msg: { release: {} } }, + ], + "auto", + ); + expect(result.logs.length).toEqual(2); + const wasmEvent1 = result.logs[0].events.find((e) => e.type === "wasm"); + assert(wasmEvent1, "Event of type wasm expected"); + expect(wasmEvent1.attributes).toContain({ key: "action", value: "release" }); + expect(wasmEvent1.attributes).toContain({ + key: "destination", + value: beneficiaryAddress1, + }); + const wasmEvent2 = result.logs[1].events.find((e) => e.type === "wasm"); + assert(wasmEvent2, "Event of type wasm expected"); + expect(wasmEvent2.attributes).toContain({ key: "action", value: "release" }); + expect(wasmEvent2.attributes).toContain({ + key: "destination", + value: beneficiaryAddress2, + }); + + client.disconnect(); + }); + }); + describe("sendTokens", () => { it("works with direct signer", async () => { pendingWithoutWasmd(); diff --git a/packages/cosmwasm-stargate/src/testutils.spec.ts b/packages/cosmwasm-stargate/src/testutils.spec.ts index ca5f4790..c4166443 100644 --- a/packages/cosmwasm-stargate/src/testutils.spec.ts +++ b/packages/cosmwasm-stargate/src/testutils.spec.ts @@ -55,6 +55,7 @@ export const wasmd = { export const defaultSigningClientOptions: SigningCosmWasmClientOptions = { broadcastPollIntervalMs: 300, broadcastTimeoutMs: 8_000, + gasPrice: defaultGasPrice, }; export function getHackatom(): ContractUploadInstructions {