From fb0a96332c9f553605038dcbe73062ab46d05844 Mon Sep 17 00:00:00 2001 From: Jorge Izquierdo Date: Wed, 8 Feb 2017 15:27:39 +0100 Subject: [PATCH] GrantableTokenMock --- contracts/test-helpers/GrantableTokenMock.sol | 7 ++ contracts/token/GrantableToken.sol | 2 +- test/AGrantableToken.js | 66 +++++++++++++++++++ 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 contracts/test-helpers/GrantableTokenMock.sol create mode 100644 test/AGrantableToken.js diff --git a/contracts/test-helpers/GrantableTokenMock.sol b/contracts/test-helpers/GrantableTokenMock.sol new file mode 100644 index 000000000..3f663caf1 --- /dev/null +++ b/contracts/test-helpers/GrantableTokenMock.sol @@ -0,0 +1,7 @@ +pragma solidity ^0.4.4; +import "./StandardTokenMock.sol"; + +contract GrantableTokenMock is StandardTokenMock { + function GrantableTokenMock(address initialAccount, uint initialBalance) + StandardTokenMock(initialAccount, initialBalance) {} +} diff --git a/contracts/token/GrantableToken.sol b/contracts/token/GrantableToken.sol index 9cce5813b..45153bde9 100644 --- a/contracts/token/GrantableToken.sol +++ b/contracts/token/GrantableToken.sol @@ -28,7 +28,7 @@ contract GrantableToken is StandardToken { grantStock(_to, _value); } - function removeStockGrant(address _holder, uint _grantId) { + function revokeStockGrant(address _holder, uint _grantId) { StockGrant grant = grants[_holder][_grantId]; if (grant.granter != msg.sender) throw; diff --git a/test/AGrantableToken.js b/test/AGrantableToken.js new file mode 100644 index 000000000..0bfbd5421 --- /dev/null +++ b/test/AGrantableToken.js @@ -0,0 +1,66 @@ +const assertJump = require('./helpers/assertJump'); + +contract('GrantableToken', function(accounts) { + + it("should return the correct totalSupply after construction", async function() { + let token = await StandardTokenMock.new(accounts[0], 100); + let totalSupply = await token.totalSupply(); + + assert.equal(totalSupply, 100); + }) + + it("should return the correct allowance amount after approval", async function() { + let token = await StandardTokenMock.new(); + let approve = await token.approve(accounts[1], 100); + let allowance = await token.allowance(accounts[0], accounts[1]); + + assert.equal(allowance, 100); + }); + + it("should return correct balances after transfer", async function() { + let token = await StandardTokenMock.new(accounts[0], 100); + let transfer = await token.transfer(accounts[1], 100); + let balance0 = await token.balanceOf(accounts[0]); + assert.equal(balance0, 0); + + let balance1 = await token.balanceOf(accounts[1]); + assert.equal(balance1, 100); + }); + + it("should throw an error when trying to transfer more than balance", async function() { + let token = await StandardTokenMock.new(accounts[0], 100); + try { + let transfer = await token.transfer(accounts[1], 101); + } catch(error) { + return assertJump(error); + } + assert.fail('should have thrown before'); + }); + + it("should return correct balances after transfering from another account", async function() { + let token = await StandardTokenMock.new(accounts[0], 100); + let approve = await token.approve(accounts[1], 100); + let transferFrom = await token.transferFrom(accounts[0], accounts[2], 100, {from: accounts[1]}); + + let balance0 = await token.balanceOf(accounts[0]); + assert.equal(balance0, 0); + + let balance1 = await token.balanceOf(accounts[2]); + assert.equal(balance1, 100); + + let balance2 = await token.balanceOf(accounts[1]); + assert.equal(balance2, 0); + }); + + it("should throw an error when trying to transfer more than allowed", async function() { + let token = await StandardTokenMock.new(); + let approve = await token.approve(accounts[1], 99); + try { + let transfer = await token.transferFrom(accounts[0], accounts[2], 100, {from: accounts[1]}); + } catch (error) { + return assertJump(error); + } + assert.fail('should have thrown before'); + }); + +});