@openzeppelin/test-helpers

    0.5.15 • Public • Published

    OpenZeppelin Test Helpers

    Docs NPM Package Build Status

    Assertion library for Ethereum smart contract testing. Make sure your contracts behave as expected.

    Overview

    Installation

    npm install --save-dev @openzeppelin/test-helpers

    Hardhat (formerly Buidler)

    Install web3 and the hardhat-web3 plugin.

    npm install --save-dev @nomiclabs/hardhat-web3 web3
    

    Remember to include the plugin in your configuration as explained in the installation instructions.

    Usage

    Import @openzeppelin/test-helpers in your test files to access the different assertions and utilities.

    const {
      BN,           // Big Number support
      constants,    // Common constants, like the zero address and largest integers
      expectEvent,  // Assertions for emitted events
      expectRevert, // Assertions for transactions that should fail
    } = require('@openzeppelin/test-helpers');
    
    const ERC20 = artifacts.require('ERC20');
    
    contract('ERC20', function ([sender, receiver]) {
      beforeEach(async function () {
        // The bundled BN library is the same one web3 uses under the hood
        this.value = new BN(1);
    
        this.erc20 = await ERC20.new();
      });
    
      it('reverts when transferring tokens to the zero address', async function () {
        // Conditions that trigger a require statement can be precisely tested
        await expectRevert(
          this.erc20.transfer(constants.ZERO_ADDRESS, this.value, { from: sender }),
          'ERC20: transfer to the zero address',
        );
      });
    
      it('emits a Transfer event on successful transfers', async function () {
        const receipt = await this.erc20.transfer(
          receiver, this.value, { from: sender }
        );
    
        // Event assertions can verify that the arguments are the expected ones
        expectEvent(receipt, 'Transfer', {
          from: sender,
          to: receiver,
          value: this.value,
        });
      });
    
      it('updates balances on successful transfers', async function () {
        this.erc20.transfer(receiver, this.value, { from: sender });
    
        // BN assertions are automatically available via chai-bn (if using Chai)
        expect(await this.erc20.balanceOf(receiver))
          .to.be.bignumber.equal(this.value);
      });
    });

    Learn More

    License

    MIT

    Install

    npm i @openzeppelin/test-helpers

    DownloadsWeekly Downloads

    17,346

    Version

    0.5.15

    License

    MIT

    Unpacked Size

    44 kB

    Total Files

    19

    Last publish

    Collaborators

    • ericglau
    • frangio
    • amxx