@@ -237,6 +237,59 @@ contract('InviteToken', function(accounts) {
237
237
} ) ;
238
238
} ) ;
239
239
240
+ it ( "should transfer 1 token correctly using 3rd approved address" , function ( ) {
241
+ var token ;
242
+
243
+ var amount = 10 ;
244
+
245
+ var contract_owner = accounts [ 0 ] ;
246
+ var token_owner = accounts [ 3 ] ;
247
+ var spender = accounts [ 2 ] ;
248
+ var transfer_to = accounts [ 4 ] ;
249
+
250
+ var allowance_before_transfer ;
251
+ var allowance_after_transfer ;
252
+
253
+ var amount_transferred = 1 ;
254
+
255
+ var account_one_starting_balance ;
256
+ var account_two_starting_balance ;
257
+ var account_one_ending_balance ;
258
+ var account_two_ending_balance ;
259
+
260
+ return InviteToken . deployed ( ) . then ( function ( instance ) {
261
+ token = instance ;
262
+ return token . transfer ( token_owner , amount , { from : contract_owner } ) ;
263
+ } ) . then ( function ( ) {
264
+ return token . balanceOf . call ( token_owner ) ;
265
+ } ) . then ( function ( balance ) {
266
+ account_one_starting_balance = balance . toNumber ( ) ;
267
+ return token . balanceOf . call ( transfer_to ) ;
268
+ } ) . then ( function ( balance ) {
269
+ account_two_starting_balance = balance . toNumber ( ) ;
270
+ return token . approve ( spender , amount , { from :token_owner } ) ;
271
+ } ) . then ( function ( ) {
272
+ return token . allowance . call ( token_owner , spender ) ;
273
+ } ) . then ( function ( allowance ) {
274
+ allowance_before_transfer = allowance . toNumber ( ) ;
275
+ return token . transferFrom ( token_owner , transfer_to , amount_transferred , { from : spender } ) ;
276
+ } ) . then ( function ( ) {
277
+ return token . allowance . call ( token_owner , spender ) ;
278
+ } ) . then ( function ( allowance ) {
279
+ allowance_after_transfer = allowance . toNumber ( ) ;
280
+ assert . equal ( allowance_after_transfer , allowance_before_transfer - amount_transferred , "Allowance not updated correctly" ) ;
281
+ } ) . then ( function ( ) {
282
+ return token . balanceOf . call ( token_owner ) ;
283
+ } ) . then ( function ( balance ) {
284
+ account_one_ending_balance = balance . toNumber ( ) ;
285
+ return token . balanceOf . call ( transfer_to ) ;
286
+ } ) . then ( function ( balance ) {
287
+ account_two_ending_balance = balance . toNumber ( ) ;
288
+ assert . equal ( account_one_ending_balance , account_one_starting_balance - amount_transferred , "Amount wasn't correctly taken from the sender" ) ;
289
+ assert . equal ( account_two_ending_balance , account_two_starting_balance + amount_transferred , "Amount wasn't correctly sent to the receiver" ) ;
290
+ } ) ;
291
+ } ) ;
292
+
240
293
it ( "should increase approval 1 token correctly" , function ( ) {
241
294
var token ;
242
295
0 commit comments