diff --git a/app/Http/Requests/Invoice/BulkInvoiceRequest.php b/app/Http/Requests/Invoice/BulkInvoiceRequest.php index 577518d8ab..5f726e7835 100644 --- a/app/Http/Requests/Invoice/BulkInvoiceRequest.php +++ b/app/Http/Requests/Invoice/BulkInvoiceRequest.php @@ -45,9 +45,10 @@ class BulkInvoiceRequest extends Request throw new DuplicatePaymentException('Action still processing, please wait. ', 429); } - $delay = $this->input('action', 'delete') == 'delete' ? (min(count($this->input('ids', 2)), 3)) : 1; - \Illuminate\Support\Facades\Cache::put(($this->ip()."|".$this->input('action', 0)."|".$user->company()->company_key), true, $delay); - + if($this->input('ids', false)){ + $delay = $this->input('action', 'delete') == 'delete' ? (min(count($this->input('ids', 2)), 3)) : 1; + \Illuminate\Support\Facades\Cache::put(($this->ip()."|".$this->input('action', 0)."|".$user->company()->company_key), true, $delay); + } } } diff --git a/tests/Unit/InvoiceTest.php b/tests/Unit/InvoiceTest.php index 18ffa74d4a..7d3d8710ad 100644 --- a/tests/Unit/InvoiceTest.php +++ b/tests/Unit/InvoiceTest.php @@ -52,6 +52,22 @@ class InvoiceTest extends TestCase } + public function testBulkInvoiceValidationRequestFailsWithMissingIds() + { + $data = [ + 'action' => 'archive', + ]; + + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->postJson('/api/v1/invoices/bulk', $data); + + $response->assertStatus(422); + $response->assertJsonValidationErrors('ids'); + + } public function testInvoiceItemRoundingWithDiscountIsPercent() {