One of the most used contracts in the EOS world at this time is the eosio.token one.
Here are the steps you would need to run the test example
have running local nodeos
eoslime init --with-example
eoslime test
Let's test it!
const assert = require('assert');
const TOKEN_WASM_PATH = './example/eosio-token/contract/eosio.token.wasm';
const TOKEN_ABI_PATH = './example/eosio-token/contract/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 () => {
/*
`deploy` creates for you a new account behind the scene
on which the contract code is deployed
You can access the contract account as -> tokenContract.executor
*/
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);
/*
You have access to the EOS(eosjs) instance:
eoslime.Provider.eos
*/
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';
/*
eoslime provides you testing utils (Available only if testing with `eoslime test`)
*/
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');
});
});
The famous "Hello World"
For the very beginning of every introduction of something new, there is always the famous "Hello World" example. However, this time our "Hello World" example is going to be a bit more blockchain related.
We are going to use the code of one member of our community. With many thanks to the Jack Tanner who prepared the below example for you.
Here are the steps you would need to run the example
Clone the repo
git clone https://github.com/theblockstalk/eosio-contracts.git
cd commit_hash_reveal
npm install