test

You should have running nodeos

eoslime test

Will prepare the mocha testing framework for you and provide you some testing utils.

The testing utils (eoslime.tests) are only available when your are using eoslime

const assert = require('assert');

const TOKEN_WASM_PATH = './contracts/example/eosio.token.wasm';
const TOKEN_ABI_PATH = './contracts/example/eosio.token.abi';

describe("EOSIO Token", function (eoslime) {

    // Increase mocha(testing framework) time, otherwise tests fails
    this.timeout(15000);

    let tokenContract;
    let tokensIssuer;
    let tokensHolder;

    const TOTAL_SUPPLY = "1000000000.0000 SYS";
    const HOLDER_SUPPLY = "100.0000 SYS";

    before(async () => {
        let accounts = await eoslime.Account.createRandoms(2);
        tokensIssuer = accounts[0];
        tokensHolder = accounts[1];
    });

    beforeEach(async () => {
        tokenContract = await eoslime.Contract.deploy(TOKEN_WASM_PATH, TOKEN_ABI_PATH);
    });

    it("Should create a new token", async () => {
        await tokenContract.actions.create(tokensIssuer.name, TOTAL_SUPPLY);
        let tokenInitialization = await tokenContract.provider.eos.getCurrencyStats(tokenContract.name, "SYS");

        assert.equal(tokenInitialization.SYS.max_supply, TOTAL_SUPPLY, "Incorrect tokens supply");
        assert.equal(tokenInitialization.SYS.issuer, tokensIssuer.name, "Incorrect tokens issuer");
    });

    it("Should issue tokens", async () => {
        await tokenContract.actions.create(tokensIssuer.name, TOTAL_SUPPLY);
        await tokenContract.actions.issue(tokensHolder.name, HOLDER_SUPPLY, "memo", { from: tokensIssuer });

        let holderBalance = await tokensHolder.getBalance("SYS", tokenContract.name);
        assert.equal(holderBalance[0], HOLDER_SUPPLY, "Incorrect holder balance");
    });

    it("Should throw if tokens quantity is negative", async () => {
        await tokenContract.actions.create(tokensIssuer.name, TOTAL_SUPPLY);
        const INVALID_ISSUING_AMOUNT = "-100.0000 SYS";
        
        await eoslime.tests.expectAssert(tokenContract.actions.issue(tokensHolder.name, INVALID_ISSUING_AMOUNT, "memo", { from: tokensIssuer }));

        let holderBalance = await tokensHolder.getBalance("SYS", tokenContract.name);
        assert.equal(holderBalance.length, 0, "Incorrect holder balance");
    });
});

Last updated