create(); AdWallet::create(['tenant_id' => $tenant->id, 'balance_rub' => '3000.00', 'frozen_rub' => '0.00']); $svc = app(AdWalletService::class); $svc->freeze($tenant->id, 'yandex', 'campaign', 1, '1000.00'); // Яндекс отклонил весь набор объявлений: джоб возвращает клиенту заморозку целиком. podBoevoyRolyu(fn () => $svc->release($tenant->id, 'yandex', 'campaign', 1)); // Читаем суперюзером — прибор не должен зависеть от той же защиты, что проверяем. expect((string) AdWallet::where('tenant_id', $tenant->id)->first()->frozen_rub)->toBe('0.00'); }); it('замораживает под боевой ролью без контекста клиента', function () { $tenant = Tenant::factory()->create(); AdWallet::create(['tenant_id' => $tenant->id, 'balance_rub' => '3000.00', 'frozen_rub' => '0.00']); $svc = app(AdWalletService::class); podBoevoyRolyu(fn () => $svc->freeze($tenant->id, 'yandex', 'campaign', 2, '700.00')); expect((string) AdWallet::where('tenant_id', $tenant->id)->first()->frozen_rub)->toBe('700.00'); });