test

circle-exclamation
eoslime test

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

circle-info

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