Skip to content

Commit d0371a2

Browse files
committed
update MultiWalletGiftTest
1 parent 39dc347 commit d0371a2

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

tests/MultiWalletGiftTest.php

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<?php
2+
3+
namespace Bavix\Wallet\Test;
4+
5+
use Bavix\Wallet\Models\Transfer;
6+
use Bavix\Wallet\Test\Models\Item;
7+
use Bavix\Wallet\Test\Models\UserMulti;
8+
9+
class MultiWalletGiftTest extends TestCase
10+
{
11+
12+
/**
13+
* @return void
14+
*/
15+
public function testGiftWalletToUser(): void
16+
{
17+
/**
18+
* @var UserMulti $first
19+
* @var UserMulti $second
20+
*/
21+
[$first, $second] = factory(UserMulti::class, 2)->create();
22+
$this->assertNull($first->getWallet('gifter'));
23+
24+
$first->deposit(1);
25+
$second->deposit(2);
26+
27+
$wallet = $first->createWallet(['name' => 'Gift', 'slug' => 'gifter']);
28+
$this->assertNotNull($wallet);
29+
$this->assertNotNull($first->wallet);
30+
$this->assertNotNull($first->wallet->id, $wallet->id);
31+
32+
/**
33+
* @var Item $item
34+
*/
35+
$item = factory(Item::class)->create();
36+
$transaction = $wallet->deposit($item->getAmountProduct());
37+
$this->assertEquals($transaction->amount, $wallet->balance);
38+
$this->assertEquals($item->getAmountProduct(), $wallet->balance);
39+
$this->assertNotNull($transaction);
40+
41+
$transfer = $wallet->gift($second, $item);
42+
$this->assertNotNull($transfer);
43+
44+
$this->assertEquals($wallet->balance, 0);
45+
$this->assertEquals($first->balance, 1);
46+
$this->assertEquals($second->balance, 2);
47+
$this->assertEquals($transfer->status, Transfer::STATUS_GIFT);
48+
49+
$this->assertEquals($second->id, $transfer->from->holder_id);
50+
$this->assertInstanceOf(UserMulti::class, $transfer->from->holder);
51+
52+
$this->assertFalse((bool)$wallet->paid($item));
53+
$this->assertFalse((bool)$first->wallet->paid($item));
54+
$this->assertFalse((bool)$second->wallet->paid($item));
55+
56+
$this->assertFalse((bool)$wallet->paid($item, true));
57+
$this->assertFalse((bool)$first->wallet->paid($item, true));
58+
$this->assertTrue((bool)$second->wallet->paid($item, true));
59+
}
60+
61+
}

0 commit comments

Comments
 (0)