diff --git a/app/Http/Controllers/BankTransactionController.php b/app/Http/Controllers/BankTransactionController.php index 15c6928958d6..70059132ef2f 100644 --- a/app/Http/Controllers/BankTransactionController.php +++ b/app/Http/Controllers/BankTransactionController.php @@ -547,7 +547,7 @@ class BankTransactionController extends BaseController public function match(MatchBankTransactionRequest $request) { - + return response()->json(['message' => 'Processing....'], 200); } diff --git a/app/Http/Requests/BankTransaction/MatchBankTransactionRequest.php b/app/Http/Requests/BankTransaction/MatchBankTransactionRequest.php index 584677bde220..a71fe4b5d780 100644 --- a/app/Http/Requests/BankTransaction/MatchBankTransactionRequest.php +++ b/app/Http/Requests/BankTransaction/MatchBankTransactionRequest.php @@ -25,4 +25,25 @@ class MatchBankTransactionRequest extends Request { return auth()->user()->isAdmin(); } + + public function rules() + { + + return [ + '*.id' => 'required|bail', + '*.invoice_id' => 'nullable|sometimes', + '*.expense_id' => 'nullable|sometimes' + ]; + + } + + public function prepareForValidation() + { + $input = $this->all(); + + $input = $this->decodePrimaryKeys($input); + + $this->replace($input); + + } } diff --git a/app/Http/Requests/Request.php b/app/Http/Requests/Request.php index b9fcf766e29d..141226755f78 100644 --- a/app/Http/Requests/Request.php +++ b/app/Http/Requests/Request.php @@ -109,6 +109,10 @@ class Request extends FormRequest $input['invoice_id'] = $this->decodePrimaryKey($input['invoice_id']); } + if (array_key_exists('expense_id', $input) && is_string($input['expense_id'])) { + $input['expense_id'] = $this->decodePrimaryKey($input['expense_id']); + } + if (array_key_exists('design_id', $input) && is_string($input['design_id'])) { $input['design_id'] = $this->decodePrimaryKey($input['design_id']); } diff --git a/tests/Feature/Bank/BankTransactionTest.php b/tests/Feature/Bank/BankTransactionTest.php new file mode 100644 index 000000000000..e3dc19a1e5a6 --- /dev/null +++ b/tests/Feature/Bank/BankTransactionTest.php @@ -0,0 +1,67 @@ +makeTestData(); + + $this->withoutMiddleware( + ThrottleRequests::class + ); + } + + public function testMatchBankTransactionsValidationShouldFail() + { + $data = [ + ['bad_key' => 10], + ]; + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->postJson('/api/v1/bank_transactions/match', $data); + + $response->assertStatus(422); + } + + + public function testMatchBankTransactionValidationShouldPass() + { + $data = [ + ['id' => 'Wpmbk5ezJn'], + ]; + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->postJson('/api/v1/bank_transactions/match', $data); + + $response->assertStatus(200); + } + +} \ No newline at end of file