Skip to content

Commit fcec13c

Browse files
committed
passing at constructor the firstDayCap && updated tests
1 parent 32948a6 commit fcec13c

File tree

5 files changed

+26
-24
lines changed

5 files changed

+26
-24
lines changed

contracts/foundation/AgiCrowdsale.sol

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@ contract AgiCrowdsale is Ownable, ReentrancyGuard {
1919

2020
// We have a window in the first 24hrs that permits to allocate all whitelist
2121
// participants with an equal distribution => firstDayCap = cap / whitelist participants.
22-
23-
uint256 public firstDayCap = 5 * 10**uint256(18);
22+
uint256 public firstDayCap;
2423
uint256 public cap;
2524
uint256 public goal;
2625
uint256 public rate;
@@ -54,6 +53,7 @@ contract AgiCrowdsale is Ownable, ReentrancyGuard {
5453
uint256 _endTime,
5554
uint256 _rate,
5655
uint256 _cap,
56+
uint256 _firstDayCap,
5757
uint256 _goal
5858
) {
5959
require(_startTime >= getBlockTimestamp());
@@ -69,6 +69,7 @@ contract AgiCrowdsale is Ownable, ReentrancyGuard {
6969
startTime = _startTime;
7070
endTime = _endTime;
7171
firstDay = startTime + 1 * 1 days;
72+
firstDayCap = _firstDayCap;
7273
rate = _rate;
7374
goal = _goal;
7475
cap = _cap;
@@ -143,14 +144,15 @@ contract AgiCrowdsale is Ownable, ReentrancyGuard {
143144
}
144145
}
145146

146-
// add to whitelist array of addresses
147+
// add/remove to whitelist array of addresses based on boolean status
147148
function updateWhitelist(address[] addresses, bool status) public onlyOwner {
148149
for (uint256 i = 0; i < addresses.length; i++) {
149150
address contributorAddress = addresses[i];
150151
whitelist[contributorAddress] = status;
151152
}
152153
}
153154

155+
//Only owner can manually finalize the sale
154156
function finalize() onlyOwner {
155157
require(!isFinalized);
156158
require(hasEnded());

migrations/3_deploy_crowdsale_contract.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ const AgiCrowdsale = artifacts.require("foundation/AgiCrowdsale.sol")
33
const SingularityNetToken = artifacts.require("token/SingularityNetToken.sol")
44

55
function latestTime() {
6-
return web3.eth.getBlock('latest').timestamp;
6+
return web3.eth.getBlock('latest').timestamp
77
}
88

99
const duration = {
@@ -16,12 +16,13 @@ const duration = {
1616
}
1717

1818
module.exports = function(deployer, network, accounts) {
19-
const startTime = latestTime() + duration.minutes(5);
20-
const endTime = startTime + duration.days(20);
21-
const rate = new web3.BigNumber(1000);
22-
const wallet = web3.eth.accounts[0];
23-
const goal = new web3.BigNumber(3000 * Math.pow(10, 18));
24-
const cap = new web3.BigNumber(15000 * Math.pow(10, 18));
19+
const startTime = latestTime() + duration.minutes(5)
20+
const endTime = startTime + duration.days(20)
21+
const rate = new web3.BigNumber(1000)
22+
const wallet = web3.eth.accounts[0]
23+
const goal = new web3.BigNumber(3000 * Math.pow(10, 18))
24+
const cap = new web3.BigNumber(15000 * Math.pow(10, 18))
25+
const firstDayCap = new web3.BigNumber(5 * Math.pow(10, 18))
2526

2627
deployer.deploy(
2728
AgiCrowdsale,
@@ -31,6 +32,7 @@ module.exports = function(deployer, network, accounts) {
3132
endTime,
3233
rate,
3334
cap,
35+
firstDayCap,
3436
goal
3537
).then(() => {
3638
const fileName = "addresses.json"

test/TestAgiCrowdsale.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ contract('AgiCrowdsale', async ([miner, firstContributor, secondContributor, whi
2121
const rate = new web3.BigNumber(1000)
2222
const goal = new web3.BigNumber(3 * Math.pow(10, 18))
2323
const cap = new web3.BigNumber(15 * Math.pow(10, 18))
24-
agiCrowdsale = await Crowdsale.new(token.address, wallet, startTime, endTime, rate, cap, goal, { from: miner })
24+
const firstDayCap = new web3.BigNumber(5 * Math.pow(10, 18))
25+
agiCrowdsale = await Crowdsale.new(token.address, wallet, startTime, endTime, rate, cap, firstDayCap, goal, { from: miner })
2526
await agiCrowdsale.setBlockTimestamp(startTime + duration.days(2))
2627
})
2728

test/TestSingularityNetToken.js

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const SingularityNetToken = artifacts.require('./helpers/SingularityNetTokenMock.sol')
22
const Crowdsale = artifacts.require('./helpers/AgiCrowdsaleMock.sol')
33

4-
4+
const assertFail = require('./helpers/assertFail.js')
55
const { latestTime, duration } = require('./helpers/latestTime')
66

77
contract('SingularityNetToken', (accounts) => {
@@ -46,7 +46,8 @@ contract('SingularityNetToken', (accounts) => {
4646
const rate = new web3.BigNumber(1000)
4747
const goal = new web3.BigNumber(3000 * Math.pow(10, 18))
4848
const cap = new web3.BigNumber(15000 * Math.pow(10, 18))
49-
agiCrowdsale = await Crowdsale.new(token.address, accounts[2], startTime, endTime, rate, cap, goal)
49+
const firstDayCap = new web3.BigNumber(5000 * Math.pow(10, 18))
50+
agiCrowdsale = await Crowdsale.new(token.address, accounts[2], startTime, endTime, rate, cap, firstDayCap, goal)
5051
await agiCrowdsale.setBlockTimestamp(startTime + duration.days(1))
5152

5253
//should be the new owner and start the sale
@@ -100,21 +101,16 @@ contract('SingularityNetToken', (accounts) => {
100101
const rate = new web3.BigNumber(1000)
101102
const goal = new web3.BigNumber(3000 * Math.pow(10, 18))
102103
const cap = new web3.BigNumber(15000 * Math.pow(10, 18))
103-
agiCrowdsale = await Crowdsale.new(token.address, accounts[2], startTime, endTime, rate, cap, goal)
104+
const firstDayCap = new web3.BigNumber(5 * Math.pow(10, 18))
105+
106+
agiCrowdsale = await Crowdsale.new(token.address, accounts[2], startTime, endTime, rate, cap, firstDayCap, goal)
104107
await agiCrowdsale.setBlockTimestamp(startTime + duration.days(1))
105108

106109
// First time should be ok
107110
await token.setOwnership(agiCrowdsale.address)
108111

109112
// Callisg anthoer time, not
110-
try {
111-
await token.setOwnership(agiCrowdsale.address)
112-
113-
assert.fail('should have thrown before')
114-
} catch (error) {
115-
assert.ok(error.message.search('invalid opcode'), 'Invalid opcode error must be returned');
116-
}
117-
113+
await assertFail(async () => await token.setOwnership(agiCrowdsale.address), 'should have thrown before')
118114
})
119115

120116
it('should transfer tokens to someone if owner', async function () {

test/helpers/AgiCrowdsaleMock.sol

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ contract AgiCrowdsaleMock is AgiCrowdsale {
1818
uint256 _startTime,
1919
uint256 _endTime,
2020
uint256 _rate,
21-
uint256 _cap,
21+
uint256 _cap,
22+
uint256 _firstDayCap,
2223
uint256 _goal)
23-
AgiCrowdsale(_token, _wallet, _startTime, _endTime, _rate, _cap, _goal)
24+
AgiCrowdsale(_token, _wallet, _startTime, _endTime, _rate, _cap, _firstDayCap, _goal)
2425
{
2526
}
2627

0 commit comments

Comments
 (0)