@@ -5,11 +5,9 @@ let help = require('./helpers');
5
5
var latestTime = require ( './helpers/latestTime' ) ;
6
6
var { duration, increaseTimeTestRPCTo} = require ( './helpers/increaseTime' ) ;
7
7
8
- const defaultStart = latestTime ( ) + duration . days ( 1 ) ;
8
+ const defaultTimeDelta = duration . days ( 1 ) ; // time delta used in time calculations (for start, end1 & end2)
9
+
9
10
const defaults = {
10
- start : defaultStart ,
11
- end1 : defaultStart + duration . days ( 1 ) ,
12
- end2 : defaultStart + duration . days ( 2 ) ,
13
11
rate1 : 100 ,
14
12
rate2 : 110 ,
15
13
setWeiLockSeconds : duration . minutes ( 30 ) ,
@@ -20,9 +18,9 @@ const defaults = {
20
18
contract ( 'LifToken Crowdsale' , function ( accounts ) {
21
19
22
20
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 ,
26
24
rate1 = params . rate1 === undefined ? defaults . rate1 : params . rate1 ,
27
25
rate2 = params . rate2 === undefined ? defaults . rate2 : params . rate2 ,
28
26
setWeiLockSeconds = params . setWeiLockSeconds === undefined ? defaults . setWeiLockSeconds : params . setWeiLockSeconds ,
@@ -39,11 +37,19 @@ contract('LifToken Crowdsale', function(accounts) {
39
37
}
40
38
41
39
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 ( ) ) ) ;
47
53
assert . equal ( defaults . rate1 , parseInt ( await crowdsale . rate1 . call ( ) ) ) ;
48
54
assert . equal ( defaults . rate2 , parseInt ( await crowdsale . rate2 . call ( ) ) ) ;
49
55
assert . equal ( accounts [ defaults . foundationWalletIndex ] , parseInt ( await crowdsale . foundationWallet . call ( ) ) ) ;
@@ -79,16 +85,20 @@ contract('LifToken Crowdsale', function(accounts) {
79
85
80
86
it ( 'fails to create a Crowdsale with end timestamp not after start timestamp' , async function ( ) {
81
87
try {
82
- await createCrowdsale ( { end1 : defaults . start } ) ;
88
+ const start = latestTime ( ) + defaultTimeDelta ;
89
+ await createCrowdsale ( { start : start , end1 : start } ) ;
83
90
assert ( false , 'create crowdsale should have thrown' ) ;
84
91
} catch ( e ) {
85
92
if ( ! help . isInvalidOpcodeEx ( e ) ) throw e ;
86
93
}
87
94
} ) ;
88
95
89
96
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
+
90
100
try {
91
- await createCrowdsale ( { end2 : defaults . end1 } ) ;
101
+ await createCrowdsale ( { start : start , end1 : end1 , end2 : end1 } ) ;
92
102
assert ( false , 'create crowdsale should have thrown' ) ;
93
103
} catch ( e ) {
94
104
if ( ! help . isInvalidOpcodeEx ( e ) ) throw e ;
@@ -123,28 +133,56 @@ contract('LifToken Crowdsale', function(accounts) {
123
133
} ) ;
124
134
125
135
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
+ } ) ;
127
144
128
145
assert . equal ( 0 , parseInt ( await crowdsale . getRate ( ) ) ) ;
129
146
130
- await increaseTimeTestRPCTo ( defaults . start ) ;
147
+ await increaseTimeTestRPCTo ( start ) ;
131
148
132
149
assert . equal ( defaults . rate1 , parseInt ( await crowdsale . getRate ( ) ) ) ;
133
150
134
- await increaseTimeTestRPCTo ( defaults . end1 - 2 ) ;
151
+ await increaseTimeTestRPCTo ( end1 - 2 ) ;
135
152
assert . equal ( defaults . rate1 , parseInt ( await crowdsale . getRate ( ) ) ,
136
153
'rate should still be rate1 close but before end1 timestamp' ) ;
137
154
138
- await increaseTimeTestRPCTo ( defaults . end1 + 1 ) ;
155
+ await increaseTimeTestRPCTo ( end1 + 1 ) ;
139
156
assert . equal ( defaults . rate2 , parseInt ( await crowdsale . getRate ( ) ) ,
140
157
'rate should be rate 2 between end1 and end2' ) ;
141
158
142
- await increaseTimeTestRPCTo ( defaults . end2 - 2 ) ;
159
+ await increaseTimeTestRPCTo ( end2 - 2 ) ;
143
160
assert . equal ( defaults . rate2 , parseInt ( await crowdsale . getRate ( ) ) ,
144
161
'rate should be rate 2 close but before end2 timestamp' ) ;
145
162
146
- await increaseTimeTestRPCTo ( defaults . end2 + 1 ) ;
163
+ await increaseTimeTestRPCTo ( end2 + 1 ) ;
147
164
assert . equal ( 0 , parseInt ( await crowdsale . getRate ( ) ) ,
148
165
'rate should be 0 after end2 timestamp' ) ;
149
166
} ) ;
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
+ } ) ;
150
188
} ) ;
0 commit comments