Files
portal/app/tests/Feature/External/RefreshExternalBalancesJobTest.php
T

40 lines
1.6 KiB
PHP
Raw Normal View History

<?php
declare(strict_types=1);
use App\Jobs\External\RefreshExternalBalancesJob;
use App\Services\External\BalanceReading;
use App\Services\External\DadataBalanceProvider;
use App\Services\External\ExternalBalanceRefresher;
use App\Services\External\SupplierBalanceProvider;
use App\Services\External\Yandex360BalanceProvider;
use App\Services\External\YandexCloudBalanceProvider;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Mail;
use Tests\Concerns\SharesSupplierPdo;
uses(DatabaseTransactions::class, SharesSupplierPdo::class); // запись идёт через pgsql_supplier
beforeEach(function () {
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([]);
});
afterEach(fn () => ExternalBalanceRefresher::resetLivenessProbes());
it('джоба собирает балансы всех денежных сервисов (делегирует рефрешеру)', function () {
(new RefreshExternalBalancesJob)->handle(app(ExternalBalanceRefresher::class));
$keys = DB::connection('pgsql_supplier')->table('external_service_balances')->pluck('service_key');
expect($keys)->toContain('dadata')->toContain('supplier')->toContain('yandex_cloud')->toContain('email');
});