Skip to content

Commit cd330b3

Browse files
committed
Add test on crowdsale buy tokens
Adds a success case and a failure case when trying to buy tokens after the end2 timestamp
1 parent 7756b76 commit cd330b3

File tree

1 file changed

+58
-20
lines changed

1 file changed

+58
-20
lines changed

test/Crowdsale.js

Lines changed: 58 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@ let help = require('./helpers');
55
var latestTime = require('./helpers/latestTime');
66
var {duration,increaseTimeTestRPCTo} = require('./helpers/increaseTime');
77

8-
const defaultStart = latestTime() + duration.days(1);
8+
const defaultTimeDelta = duration.days(1); // time delta used in time calculations (for start, end1 & end2)
9+
910
const defaults = {
10-
start: defaultStart,
11-
end1: defaultStart + duration.days(1),
12-
end2: defaultStart + duration.days(2),
1311
rate1: 100,
1412
rate2: 110,
1513
setWeiLockSeconds: duration.minutes(30),
@@ -20,9 +18,9 @@ const defaults = {
2018
contract('LifToken Crowdsale', function(accounts) {
2119

2220
async function createCrowdsale(params) {
23-
const startTimestamp = params.start === undefined ? defaults.start : params.start,
24-
end1Timestamp = params.end1 === undefined ? defaults.end1 : params.end1,
25-
end2Timestamp = params.end2 === undefined ? defaults.end2 : params.end2,
21+
const startTimestamp = params.start === undefined ? (latestTime() + defaultTimeDelta) : params.start,
22+
end1Timestamp = params.end1 === undefined ? (startTimestamp + defaultTimeDelta) : params.end1,
23+
end2Timestamp = params.end2 === undefined ? (end1Timestamp + defaultTimeDelta) : params.end2,
2624
rate1 = params.rate1 === undefined ? defaults.rate1 : params.rate1,
2725
rate2 = params.rate2 === undefined ? defaults.rate2 : params.rate2,
2826
setWeiLockSeconds = params.setWeiLockSeconds === undefined ? defaults.setWeiLockSeconds : params.setWeiLockSeconds,
@@ -39,11 +37,19 @@ contract('LifToken Crowdsale', function(accounts) {
3937
}
4038

4139
it('can create a Crowdsale', async function() {
42-
const crowdsale = await createCrowdsale({});
43-
44-
assert.equal(defaults.start, parseInt(await crowdsale.startTimestamp.call()));
45-
assert.equal(defaults.end1, parseInt(await crowdsale.end1Timestamp.call()));
46-
assert.equal(defaults.end2, parseInt(await crowdsale.end2Timestamp.call()));
40+
const start = latestTime() + defaultTimeDelta,
41+
end1 = start + defaultTimeDelta,
42+
end2 = end1 + defaultTimeDelta;
43+
44+
const crowdsale = await createCrowdsale({
45+
start: start,
46+
end1: end1,
47+
end2: end2
48+
});
49+
50+
assert.equal(start, parseInt(await crowdsale.startTimestamp.call()));
51+
assert.equal(end1, parseInt(await crowdsale.end1Timestamp.call()));
52+
assert.equal(end2, parseInt(await crowdsale.end2Timestamp.call()));
4753
assert.equal(defaults.rate1, parseInt(await crowdsale.rate1.call()));
4854
assert.equal(defaults.rate2, parseInt(await crowdsale.rate2.call()));
4955
assert.equal(accounts[defaults.foundationWalletIndex], parseInt(await crowdsale.foundationWallet.call()));
@@ -79,16 +85,20 @@ contract('LifToken Crowdsale', function(accounts) {
7985

8086
it('fails to create a Crowdsale with end timestamp not after start timestamp', async function() {
8187
try {
82-
await createCrowdsale({end1: defaults.start});
88+
const start = latestTime() + defaultTimeDelta;
89+
await createCrowdsale({start: start, end1: start});
8390
assert(false, 'create crowdsale should have thrown');
8491
} catch(e) {
8592
if (!help.isInvalidOpcodeEx(e)) throw e;
8693
}
8794
});
8895

8996
it('fails to create a Crowdsale with end2 timestamp not after end1 timestamp', async function() {
97+
const start = latestTime() + defaultTimeDelta,
98+
end1 = start + defaultTimeDelta;
99+
90100
try {
91-
await createCrowdsale({end2: defaults.end1});
101+
await createCrowdsale({start: start, end1: end1, end2: end1});
92102
assert(false, 'create crowdsale should have thrown');
93103
} catch(e) {
94104
if (!help.isInvalidOpcodeEx(e)) throw e;
@@ -123,28 +133,56 @@ contract('LifToken Crowdsale', function(accounts) {
123133
});
124134

125135
it('returns the current rate at different points in time', async function() {
126-
const crowdsale = await createCrowdsale({});
136+
const start = latestTime() + defaultTimeDelta,
137+
end1 = start + defaultTimeDelta,
138+
end2 = end1 + defaultTimeDelta,
139+
crowdsale = await createCrowdsale({
140+
start: start,
141+
end1: end1,
142+
end2: end2
143+
});
127144

128145
assert.equal(0, parseInt(await crowdsale.getRate()));
129146

130-
await increaseTimeTestRPCTo(defaults.start);
147+
await increaseTimeTestRPCTo(start);
131148

132149
assert.equal(defaults.rate1, parseInt(await crowdsale.getRate()));
133150

134-
await increaseTimeTestRPCTo(defaults.end1 - 2);
151+
await increaseTimeTestRPCTo(end1 - 2);
135152
assert.equal(defaults.rate1, parseInt(await crowdsale.getRate()),
136153
'rate should still be rate1 close but before end1 timestamp');
137154

138-
await increaseTimeTestRPCTo(defaults.end1 + 1);
155+
await increaseTimeTestRPCTo(end1 + 1);
139156
assert.equal(defaults.rate2, parseInt(await crowdsale.getRate()),
140157
'rate should be rate 2 between end1 and end2');
141158

142-
await increaseTimeTestRPCTo(defaults.end2 - 2);
159+
await increaseTimeTestRPCTo(end2 - 2);
143160
assert.equal(defaults.rate2, parseInt(await crowdsale.getRate()),
144161
'rate should be rate 2 close but before end2 timestamp');
145162

146-
await increaseTimeTestRPCTo(defaults.end2 + 1);
163+
await increaseTimeTestRPCTo(end2 + 1);
147164
assert.equal(0, parseInt(await crowdsale.getRate()),
148165
'rate should be 0 after end2 timestamp');
149166
});
167+
168+
it('handles a buyTokens tx fine', async function() {
169+
const crowdsale = await createCrowdsale({});
170+
await crowdsale.setWeiPerUSDinTGE(10000);
171+
await increaseTimeTestRPCTo(latestTime() + defaultTimeDelta + 2);
172+
await crowdsale.buyTokens(accounts[6], {value: 1000, from: accounts[5]});
173+
174+
assert.equal(1000, await crowdsale.purchases(accounts[6]));
175+
});
176+
177+
it('fails on buyTokens from address(0)', async function() {
178+
const crowdsale = await createCrowdsale({});
179+
await crowdsale.setWeiPerUSDinTGE(10000);
180+
await increaseTimeTestRPCTo(latestTime() + defaultTimeDelta + 2);
181+
try {
182+
await crowdsale.buyTokens(help.zeroAddress, {value: 1000, from: accounts[5]});
183+
assert(false, 'should have thrown');
184+
} catch(e) {
185+
assert(help.isInvalidOpcodeEx(e));
186+
}
187+
});
150188
});

0 commit comments

Comments
 (0)