@bowtieddevops/bowtieddevops-test-package-3
Version:
Clarunit, enables writing unit tests in Clarity
62 lines (57 loc) • 1.75 kB
text/typescript
import { ParsedTransactionResult } from "@hirosystems/clarinet-sdk";
import { Cl, ClarityType, cvToString } from "@stacks/transactions";
import { expect } from "vitest";
const okTrueString = cvToString(Cl.ok(Cl.bool(true)));
/**
* checks whether the function is a valid test function starting with "test-"
* and not having any arguments
* @param functionCall
* @returns
*/
export function isValidTestFunction(functionCall: any) {
if (functionCall.name.startsWith("test-") && functionCall.args.length > 0) {
throw new Error("test functions must not have arguments");
}
return (
functionCall.name.startsWith("test-") && functionCall.args.length === 0
);
}
/**
* expect the result of tx index in the given block to be (ok true)
* @param block
* @param contractFQN
* @param functionName
* @param index
*/
export function expectOkTrue(
block: ParsedTransactionResult[],
contractFQN: string,
functionName: string,
index: number = 0
) {
if (block[index].result.type === ClarityType.ResponseErr) {
console.log(cvToString(block[index].result));
}
expect(cvToString(block[index].result), `${contractFQN}::${functionName}`).toBe(okTrueString);
}
/**
* expect the result of tx index in the given block to be succesfull (ok ...)
* @param block
* @param contractFQN
* @param functionName
* @param index
*/
export function expectOk(
block: ParsedTransactionResult[],
contractFQN: string,
functionName: string,
index: number = 0
) {
if (block[index].result.type === ClarityType.ResponseErr) {
console.log(cvToString(block[index].result));
}
expect(
block[index].result.type,
`${contractFQN}, ${functionName}, ${cvToString(block[index].result)}`
).toBe(ClarityType.ResponseOk);
}