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.

52 lines (48 loc) 2.05 kB
import { ViewTracingTree } from "../../internal/tracing/viewTraceTree/viewTracingTree"; import { Addressable, TraceType } from "../../internal/tracing/types"; import { supportWithNamedArgs } from "./withNamedArgs"; import { supportWithCount } from "./count"; import { getMessage } from "../utils"; import AssertionStatic = Chai.AssertionStatic; export const supportEmitAndCall = (Assertion: Chai.AssertionStatic, utils: Chai.ChaiUtils) => { Assertion.addMethod("emit", function (this: AssertionStatic, eventName: string, contract?: Addressable) { const rewriteThis: AssertionStatic & { __flags: { negate: boolean; object: ViewTracingTree } } = this as AssertionStatic & { __flags: { negate: boolean; object: ViewTracingTree } }; const viewTracingTree = rewriteThis.__flags.object; const events = getMessage({ contract, viewTracingTree, msgName: eventName, msgType: TraceType.EVENT, }); this.assert( events.length > 0, `Expected event "${eventName}" to be emitted, but it wasn't`, `Expected event "${eventName}" NOT to be emitted, but it was`, true, ); utils.flag(this, "messages", events); return this; }); Assertion.addMethod("call", function (this: AssertionStatic, methodName: string, contract?: Addressable) { const rewriteThis: AssertionStatic & { __flags: { negate: boolean; object: ViewTracingTree } } = this as AssertionStatic & { __flags: { negate: boolean; object: ViewTracingTree } }; const viewTracingTree = rewriteThis.__flags.object; const calls = getMessage({ contract, viewTracingTree, msgName: methodName, msgType: TraceType.FUNCTION_CALL, }); this.assert( calls.length > 0, `Expected method "${methodName}" to be called, but it wasn't`, `Expected method "${methodName}" NOT to be called, but it was`, true, ); utils.flag(this, "messages", calls); return this; }); supportWithNamedArgs(Assertion, utils); supportWithCount(Assertion, utils); };