committed by
Nicolás Venturo
parent
66c1968913
commit
b52912c702
@ -1,36 +1,36 @@
|
|||||||
const { expectThrow } = require('../../helpers/expectThrow');
|
const { expectThrow } = require('../../helpers/expectThrow');
|
||||||
|
|
||||||
const BigNumber = web3.BigNumber;
|
const BigNumber = web3.BigNumber;
|
||||||
|
|
||||||
require('chai')
|
require('chai')
|
||||||
.use(require('chai-bignumber')(BigNumber))
|
.use(require('chai-bignumber')(BigNumber))
|
||||||
.should();
|
.should();
|
||||||
|
|
||||||
function shouldBehaveLikeCappedToken (minter, [anyone], cap) {
|
function shouldBehaveLikeCappedToken (minter, [anyone], cap) {
|
||||||
describe('capped token', function () {
|
describe('capped token', function () {
|
||||||
const from = minter;
|
const from = minter;
|
||||||
|
|
||||||
it('should start with the correct cap', async function () {
|
it('should start with the correct cap', async function () {
|
||||||
(await this.token.cap()).should.be.bignumber.equal(cap);
|
(await this.token.cap()).should.be.bignumber.equal(cap);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should mint when amount is less than cap', async function () {
|
it('should mint when amount is less than cap', async function () {
|
||||||
const result = await this.token.mint(anyone, cap.sub(1), { from });
|
const result = await this.token.mint(anyone, cap.sub(1), { from });
|
||||||
result.logs[0].event.should.equal('Mint');
|
result.logs[0].event.should.equal('Mint');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should fail to mint if the ammount exceeds the cap', async function () {
|
it('should fail to mint if the ammount exceeds the cap', async function () {
|
||||||
await this.token.mint(anyone, cap.sub(1), { from });
|
await this.token.mint(anyone, cap.sub(1), { from });
|
||||||
await expectThrow(this.token.mint(anyone, 100, { from }));
|
await expectThrow(this.token.mint(anyone, 100, { from }));
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should fail to mint after cap is reached', async function () {
|
it('should fail to mint after cap is reached', async function () {
|
||||||
await this.token.mint(anyone, cap, { from });
|
await this.token.mint(anyone, cap, { from });
|
||||||
await expectThrow(this.token.mint(anyone, 1, { from }));
|
await expectThrow(this.token.mint(anyone, 1, { from }));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
shouldBehaveLikeCappedToken,
|
shouldBehaveLikeCappedToken,
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,19 +1,19 @@
|
|||||||
const { ether } = require('../../helpers/ether');
|
const { ether } = require('../../helpers/ether');
|
||||||
const { shouldBehaveLikeRBACMintableToken } = require('./RBACMintableToken.behavior');
|
const { shouldBehaveLikeRBACMintableToken } = require('./RBACMintableToken.behavior');
|
||||||
const { shouldBehaveLikeMintableToken } = require('./MintableToken.behavior');
|
const { shouldBehaveLikeMintableToken } = require('./MintableToken.behavior');
|
||||||
const { shouldBehaveLikeCappedToken } = require('./CappedToken.behavior');
|
const { shouldBehaveLikeCappedToken } = require('./CappedToken.behavior');
|
||||||
|
|
||||||
const RBACCappedTokenMock = artifacts.require('RBACCappedTokenMock');
|
const RBACCappedTokenMock = artifacts.require('RBACCappedTokenMock');
|
||||||
|
|
||||||
contract('RBACCappedToken', function ([_, owner, minter, ...otherAccounts]) {
|
contract('RBACCappedToken', function ([_, owner, minter, ...otherAccounts]) {
|
||||||
const cap = ether(1000);
|
const cap = ether(1000);
|
||||||
|
|
||||||
beforeEach(async function () {
|
beforeEach(async function () {
|
||||||
this.token = await RBACCappedTokenMock.new(cap, { from: owner });
|
this.token = await RBACCappedTokenMock.new(cap, { from: owner });
|
||||||
await this.token.addMinter(minter, { from: owner });
|
await this.token.addMinter(minter, { from: owner });
|
||||||
});
|
});
|
||||||
|
|
||||||
shouldBehaveLikeMintableToken(owner, minter, otherAccounts);
|
shouldBehaveLikeMintableToken(owner, minter, otherAccounts);
|
||||||
shouldBehaveLikeRBACMintableToken(owner, otherAccounts);
|
shouldBehaveLikeRBACMintableToken(owner, otherAccounts);
|
||||||
shouldBehaveLikeCappedToken(minter, otherAccounts, cap);
|
shouldBehaveLikeCappedToken(minter, otherAccounts, cap);
|
||||||
});
|
});
|
||||||
|
|||||||
@ -1,32 +1,32 @@
|
|||||||
const { expectThrow } = require('../../helpers/expectThrow');
|
const { expectThrow } = require('../../helpers/expectThrow');
|
||||||
|
|
||||||
const ROLE_MINTER = 'minter';
|
const ROLE_MINTER = 'minter';
|
||||||
|
|
||||||
function shouldBehaveLikeRBACMintableToken (owner, [anyone]) {
|
function shouldBehaveLikeRBACMintableToken (owner, [anyone]) {
|
||||||
describe('handle roles', function () {
|
describe('handle roles', function () {
|
||||||
it('owner can add and remove a minter role', async function () {
|
it('owner can add and remove a minter role', async function () {
|
||||||
await this.token.addMinter(anyone, { from: owner });
|
await this.token.addMinter(anyone, { from: owner });
|
||||||
let hasRole = await this.token.hasRole(anyone, ROLE_MINTER);
|
let hasRole = await this.token.hasRole(anyone, ROLE_MINTER);
|
||||||
hasRole.should.be.true;
|
hasRole.should.be.true;
|
||||||
|
|
||||||
await this.token.removeMinter(anyone, { from: owner });
|
await this.token.removeMinter(anyone, { from: owner });
|
||||||
hasRole = await this.token.hasRole(anyone, ROLE_MINTER);
|
hasRole = await this.token.hasRole(anyone, ROLE_MINTER);
|
||||||
hasRole.should.be.false;
|
hasRole.should.be.false;
|
||||||
});
|
});
|
||||||
|
|
||||||
it('anyone can\'t add or remove a minter role', async function () {
|
it('anyone can\'t add or remove a minter role', async function () {
|
||||||
await expectThrow(
|
await expectThrow(
|
||||||
this.token.addMinter(anyone, { from: anyone })
|
this.token.addMinter(anyone, { from: anyone })
|
||||||
);
|
);
|
||||||
|
|
||||||
await this.token.addMinter(anyone, { from: owner });
|
await this.token.addMinter(anyone, { from: owner });
|
||||||
await expectThrow(
|
await expectThrow(
|
||||||
this.token.removeMinter(anyone, { from: anyone })
|
this.token.removeMinter(anyone, { from: anyone })
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
shouldBehaveLikeRBACMintableToken,
|
shouldBehaveLikeRBACMintableToken,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user