Skip to content

Commit 7c4e213

Browse files
committed
example 2 for #501
1 parent 91fbee3 commit 7c4e213

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

tests/Units/Domain/TransactionsFilterTest.php

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Bavix\Wallet\Models\Transaction;
99
use Bavix\Wallet\Test\Infra\Factories\BuyerFactory;
1010
use Bavix\Wallet\Test\Infra\Models\Buyer;
11+
use Bavix\Wallet\Test\Infra\PackageModels\Wallet;
1112
use Bavix\Wallet\Test\Infra\TestCase;
1213
use function now;
1314

@@ -131,4 +132,47 @@ public function testPagination(): void
131132
self::assertCount(1, $page3->items());
132133
self::assertFalse($page3->hasMorePages());
133134
}
135+
136+
/**
137+
* @see https://github.com/bavix/laravel-wallet/issues/501
138+
*/
139+
public function testPagination2(): void
140+
{
141+
/** @var Buyer $buyer */
142+
$buyer = BuyerFactory::new()->create();
143+
$db = app(DatabaseServiceInterface::class);
144+
$db->transaction(function () use ($buyer): void {
145+
foreach (range(1, 21) as $item) {
146+
$buyer->deposit($item);
147+
}
148+
});
149+
150+
self::assertSame(21, $buyer->transactions()->count());
151+
152+
$walletTableName = (new Wallet())->getTable();
153+
$transactionTableName = (new Transaction())->getTable();
154+
155+
$query = Transaction::query()
156+
->where(function ($query) use ($buyer, $walletTableName, $transactionTableName) {
157+
$query->where('payable_id', '=', $buyer->getKey())
158+
->join($walletTableName, $transactionTableName.'.wallet_id', '=', $walletTableName.'.id')
159+
->select($transactionTableName.'.*', $walletTableName.'.name')
160+
->get()
161+
;
162+
})
163+
->orderBy('created_at', 'desc')
164+
;
165+
166+
$page1 = (clone $query)->paginate(10, page: 1);
167+
self::assertCount(10, $page1->items());
168+
self::assertTrue($page1->hasMorePages());
169+
170+
$page2 = (clone $query)->paginate(10, page: 2);
171+
self::assertCount(10, $page2->items());
172+
self::assertTrue($page2->hasMorePages());
173+
174+
$page3 = (clone $query)->paginate(10, page: 3);
175+
self::assertCount(1, $page3->items());
176+
self::assertFalse($page3->hasMorePages());
177+
}
134178
}

0 commit comments

Comments
 (0)