🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

smartweave-testing

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

smartweave-testing

A testing client for SmartWeave contracts.

latest
Source
npmnpm
Version
0.2.0
Version published
Weekly downloads
25
257.14%
Maintainers
1
Weekly downloads
 
Created
Source

SmartWeave Testing

A testing client for SmartWeave contracts. You can execute any kind of interactWrite input against your contract. It does not require any connection to Arweave. This enables fast and reliable testing. The new state of the contract will be stored and by this enabling multi input testing.

Installation

yarn add --dev smartweave-testing

Usage

import SmartWeaveTester from "smartweave-testing"
import { handle } from [my-contract]

const caller = "..." // -> e.g your Arweave Address
const initialState = {}
const smartweave = new SmartWeaveTester(handle, initialState, caller)

Executing an action

input = { function: "my_function" };
result = await smartweave.execute(input); // -> state of the contract

In case you don't want to update the state of your contract use execute({}, false)

Manipulating block height

If your contract uses SmartWeave.block.height, the client will make use of it's internal block logic. Every time you execute an action, the block height will increase by 1. You can use smartweave.block.height = ... to manually adjust the block height.

Setting transaction information

If you want to use custom transaction information like tags, quantity or a target, you can add these into the constructor or the execute function:

import {TransactionInput} from "smartweave-testing/faces";

const txInformation: TransactionInput = {
  quantity: {winston: "1"} // -> quantity in winston,
  target: "...."
} 
result = await smartweave.execute(input, true, txInformation);

Examples

import SmartWeaveTester from "smartweave-testing"
import { handle } from [my-contract]

const caller = "..." // -> e.g your Arweave Address

const initialState = {
  balances: {}
}

const smartweave = new SmartWeaveTester(handle, initialState, caller)

let input, result;

// the dispense function increases the callers balance by 100
input = { function: "dispense" };
result = await smartweave.execute(input);
if (result.balances[caller] !== 100) throw Error("Dispense does not work")

// be rerunning the action, the old state is preserved and get's updated
input = { function: "dispense" };
result = await smartweave.execute(input);
if (result.balances[caller] !== 200) throw Error("Dispense does not work")

FAQs

Package last updated on 07 Apr 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts