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