2026-06-28 07:11:02 +03:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
|
|
|
|
use App\Jobs\External\RefreshExternalBalancesJob;
|
|
|
|
|
use App\Services\External\BalanceReading;
|
|
|
|
|
use App\Services\External\DadataBalanceProvider;
|
2026-07-16 13:57:20 +03:00
|
|
|
use App\Services\External\ExternalBalanceRefresher;
|
2026-06-28 07:11:02 +03:00
|
|
|
use App\Services\External\SupplierBalanceProvider;
|
2026-07-02 13:34:13 +03:00
|
|
|
use App\Services\External\Yandex360BalanceProvider;
|
2026-06-28 07:11:02 +03:00
|
|
|
use App\Services\External\YandexCloudBalanceProvider;
|
|
|
|
|
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
|
|
|
|
use Illuminate\Support\Facades\DB;
|
2026-07-02 13:34:13 +03:00
|
|
|
use Illuminate\Support\Facades\Mail;
|
2026-06-28 07:11:02 +03:00
|
|
|
use Tests\Concerns\SharesSupplierPdo;
|
|
|
|
|
|
|
|
|
|
uses(DatabaseTransactions::class, SharesSupplierPdo::class); // запись идёт через pgsql_supplier
|
|
|
|
|
|
2026-07-02 13:34:13 +03:00
|
|
|
beforeEach(function () {
|
2026-07-16 13:57:20 +03:00
|
|
|
Mail::fake();
|
|
|
|
|
foreach ([
|
|
|
|
|
DadataBalanceProvider::class => 'dadata',
|
|
|
|
|
SupplierBalanceProvider::class => 'supplier',
|
|
|
|
|
YandexCloudBalanceProvider::class => 'yandex_cloud',
|
|
|
|
|
Yandex360BalanceProvider::class => 'email',
|
|
|
|
|
] as $cls => $key) {
|
|
|
|
|
app()->instance($cls, fakeProvider($key, BalanceReading::ok($key, 50000, 'RUB', null)));
|
|
|
|
|
}
|
|
|
|
|
ExternalBalanceRefresher::useLivenessProbes([]);
|
2026-07-02 13:34:13 +03:00
|
|
|
});
|
|
|
|
|
|
2026-07-16 13:57:20 +03:00
|
|
|
afterEach(fn () => ExternalBalanceRefresher::resetLivenessProbes());
|
2026-07-02 08:20:41 +03:00
|
|
|
|
2026-07-16 13:57:20 +03:00
|
|
|
it('джоба собирает балансы всех денежных сервисов (делегирует рефрешеру)', function () {
|
|
|
|
|
(new RefreshExternalBalancesJob)->handle(app(ExternalBalanceRefresher::class));
|
2026-06-28 07:11:02 +03:00
|
|
|
|
2026-07-16 13:57:20 +03:00
|
|
|
$keys = DB::connection('pgsql_supplier')->table('external_service_balances')->pluck('service_key');
|
|
|
|
|
expect($keys)->toContain('dadata')->toContain('supplier')->toContain('yandex_cloud')->toContain('email');
|
2026-07-02 08:20:41 +03:00
|
|
|
});
|