not->toBeFalse(); $guardCount = preg_match_all('/\$this->ensureEconomicTransferQueueIsAvailable\(\);/', (string)$content); $queueInitCount = preg_match_all('/new economic_transfer_queue\(\);/', (string)$content); expect($guardCount)->toBe(6); expect($queueInitCount)->toBe(6); $endpointPatterns = [ "/\\\$this->post\\('\\/economic\\/invoice\\/draft\\/export'.*?\\\$this->ensureEconomicTransferQueueIsAvailable\\(\\);.*?new economic_transfer_queue\\(\\);/s", "/\\\$this->post\\('\\/economic\\/invoice\\/export'.*?\\\$this->ensureEconomicTransferQueueIsAvailable\\(\\);.*?new economic_transfer_queue\\(\\);/s", "/\\\$this->get\\('\\/economic\\/invoice\\/draft\\/export\\/status'.*?\\\$this->ensureEconomicTransferQueueIsAvailable\\(\\);.*?new economic_transfer_queue\\(\\);/s", "/\\\$this->post\\('\\/economic\\/invoice\\/draft\\/export\\/retry'.*?\\\$this->ensureEconomicTransferQueueIsAvailable\\(\\);.*?new economic_transfer_queue\\(\\);/s", "/\\\$this->get\\('\\/economic\\/invoice\\/export\\/status'.*?\\\$this->ensureEconomicTransferQueueIsAvailable\\(\\);.*?new economic_transfer_queue\\(\\);/s", "/\\\$this->post\\('\\/economic\\/invoice\\/export\\/retry'.*?\\\$this->ensureEconomicTransferQueueIsAvailable\\(\\);.*?new economic_transfer_queue\\(\\);/s", ]; foreach ($endpointPatterns as $pattern) { expect(preg_match($pattern, (string)$content))->toBe(1); } }); it('guards collected-invoice and stripe draft-producing endpoints before constructing queue service', function (): void { $content = file_get_contents(app_path('routes/orderInvoicesRoute.php')); expect($content)->not->toBeFalse(); $guardCount = preg_match_all('/\$this->ensureEconomicTransferQueueIsAvailable\(\);/', (string)$content); $queueInitCount = preg_match_all('/new economic_transfer_queue\(\);/', (string)$content); expect($guardCount)->toBe(5); expect($queueInitCount)->toBe(5); $endpointPatterns = [ "/\\\$this->post\\('\\/collected-invoices\\/economic'.*?\\\$this->ensureEconomicTransferQueueIsAvailable\\(\\);.*?new economic_transfer_queue\\(\\);/s", "/\\\$this->get\\('\\/collected-invoices\\/economic\\/queue'.*?\\\$this->ensureEconomicTransferQueueIsAvailable\\(\\);.*?new economic_transfer_queue\\(\\);/s", "/\\\$this->get\\('\\/collected-invoices\\/economic\\/queue\\/status'.*?\\\$this->ensureEconomicTransferQueueIsAvailable\\(\\);.*?new economic_transfer_queue\\(\\);/s", "/\\\$this->post\\('\\/collected-invoices\\/economic\\/queue\\/retry'.*?\\\$this->ensureEconomicTransferQueueIsAvailable\\(\\);.*?new economic_transfer_queue\\(\\);/s", "/\\\$this->post\\('\\/collected-invoices\\/stripe\\/book'.*?\\\$this->ensureEconomicTransferQueueIsAvailable\\(\\);.*?new economic_transfer_queue\\(\\);/s", ]; foreach ($endpointPatterns as $pattern) { expect(preg_match($pattern, (string)$content))->toBe(1); } expect($content)->not->toContain('exportCollectedInvoiceSynchronously'); expect($content)->toContain('private function isEconomicTransferQueueAvailable(): bool'); }); it('uses a consistent unavailable-service contract for missing queue dependencies', function (): void { $invoiceRouteContent = file_get_contents(app_path('routes/economicInvoiceRoute.php')); $orderInvoicesRouteContent = file_get_contents(app_path('routes/orderInvoicesRoute.php')); expect($invoiceRouteContent)->not->toBeFalse(); expect($orderInvoicesRouteContent)->not->toBeFalse(); expect($invoiceRouteContent)->toContain('private function ensureEconomicTransferQueueIsAvailable(): void'); expect($invoiceRouteContent)->toContain("!class_exists('\\\\classes\\\\economic_transfer_executor')"); expect($invoiceRouteContent)->toContain("!class_exists('\\\\classes\\\\economic_transfer_queue_schema_bootstrap')"); expect($invoiceRouteContent)->toContain('!class_exists(economic_transfer_queue::class)'); expect($orderInvoicesRouteContent)->toContain('private function isEconomicTransferQueueAvailable(): bool'); expect($orderInvoicesRouteContent)->toContain("class_exists('\\\\classes\\\\economic_transfer_executor')"); expect($orderInvoicesRouteContent)->toContain("class_exists('\\\\classes\\\\economic_transfer_queue_schema_bootstrap')"); expect($orderInvoicesRouteContent)->toContain('class_exists(economic_transfer_queue::class)'); expect(preg_match_all('/if \\(!\\$this->isEconomicTransferQueueAvailable\\(\\)\\) \\{/', (string)$orderInvoicesRouteContent))->toBe(1); expect($invoiceRouteContent)->toContain('private function ensureEconomicTransferQueueIsAvailable(): void'); expect($invoiceRouteContent)->toContain("Economic transfer queue is unavailable in this deployment', 503"); expect($invoiceRouteContent)->not->toContain("require_once __DIR__ . '/../classes/economic_transfer_executor.php';"); expect($invoiceRouteContent)->not->toContain("require_once __DIR__ . '/../classes/economic_transfer_queue_schema_bootstrap.php';"); expect($invoiceRouteContent)->not->toContain("require_once __DIR__ . '/../classes/economic_transfer_queue.php';"); expect($orderInvoicesRouteContent)->toContain('private function ensureEconomicTransferQueueIsAvailable(): void'); expect($orderInvoicesRouteContent)->toContain("Economic transfer queue is unavailable in this deployment', 503"); expect($orderInvoicesRouteContent)->not->toContain('exportCollectedInvoiceSynchronously'); expect($orderInvoicesRouteContent)->not->toContain("require_once __DIR__ . '/../classes/economic_transfer_executor.php';"); expect($orderInvoicesRouteContent)->not->toContain("require_once __DIR__ . '/../classes/economic_transfer_queue_schema_bootstrap.php';"); expect($orderInvoicesRouteContent)->not->toContain("require_once __DIR__ . '/../classes/economic_transfer_queue.php';"); });