Skip to content

Commit e7de267

Browse files
committed
Frozen balance (demo) #939
1 parent 41dac42 commit e7de267

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

tests/Units/Domain/CreditWalletTest.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,13 @@
44

55
namespace Bavix\Wallet\Test\Units\Domain;
66

7+
use Bavix\Wallet\Services\AtomicServiceInterface;
8+
use Bavix\Wallet\Test\Infra\Factories\BuyerFactory;
79
use Bavix\Wallet\Test\Infra\Factories\UserMultiFactory;
10+
use Bavix\Wallet\Test\Infra\Models\Buyer;
811
use Bavix\Wallet\Test\Infra\Models\UserMulti;
912
use Bavix\Wallet\Test\Infra\TestCase;
13+
use Illuminate\Support\Facades\DB;
1014

1115
/**
1216
* @internal
@@ -60,4 +64,28 @@ public function testCreditLimitBalanceZero(): void
6064
self::assertNotNull($transaction);
6165
self::assertSame(-10000, $wallet->balanceInt);
6266
}
67+
68+
public function testFrozenBalance(): void
69+
{
70+
/** @var Buyer $user */
71+
$user = BuyerFactory::new()->create();
72+
73+
self::assertFalse($user->relationLoaded('wallet'));
74+
self::assertEquals(0, $user->wallet->balanceInt);
75+
76+
app(AtomicServiceInterface::class)->block($user, function () use ($user) {
77+
$user->deposit(1000);
78+
79+
$meta = $user->wallet->meta ?? [];
80+
$meta['credit'] = ($meta['credit'] ?? 0) - 1000;
81+
82+
$user->wallet->meta = $meta;
83+
$user->wallet->saveOrFail();
84+
});
85+
86+
self::assertEquals(1000, $user->wallet->balanceInt);
87+
self::assertEquals(-1000.0, (float) $user->wallet->getCreditAttribute());
88+
89+
self::assertFalse($user->canWithdraw(1));
90+
}
6391
}

0 commit comments

Comments
 (0)