UNPKG

locklift

Version:

Node JS framework for working with Ever contracts. Inspired by Truffle and Hardhat. Helps you to build, test, run and maintain your smart contracts.

48 lines (42 loc) 1.81 kB
import { ViewTracingTree } from "../../internal/tracing/viewTraceTree/viewTracingTree"; import { Address, Contract } from "everscale-inpage-provider"; import AssertionStatic = Chai.AssertionStatic; export const supportMessageErrors = (Assertion: Chai.AssertionStatic, utils: Chai.ChaiUtils) => { Assertion.addMethod( "error", function (this: AssertionStatic, errorCode?: number | null, contract?: Contract<any> | Address | string) { const rewriteThis: AssertionStatic & { __flags: { object: ViewTracingTree } } = this as AssertionStatic & { __flags: { negate: boolean; object: ViewTracingTree }; }; const viewTracingTree = rewriteThis.__flags.object; const errors = contract ? viewTracingTree.getErrorsByContract(contract)?.map(error => ({ ...error, contract })) || [] : viewTracingTree.getAllErrors(); if (errorCode !== null && typeof errorCode !== "number") { this.assert( errors.length > 0, "Expected errors to be through, but it wasn't", `Expected errors NOT to be through, but it was \n ${JSON.stringify( errors.map(({ trace, contract, ...rest }) => ({ ...rest, contract: `${trace.contract.name}(${contract})`, method: `${trace.decodedMsg?.method}(${JSON.stringify(trace.decodedMsg?.params)})`, })), null, 4, )}`, true, ); } else { this.assert( errors.filter(({ code }) => code === errorCode).length > 0, `Expected error "${errorCode}" to be thrown, but it wasn't`, `Expected error "${errorCode}" NOT to be thrown, but it was`, true, ); } utils.flag(this, "errors", errors); return this; }, ); };