diff --git a/app/Http/Requests/Settings/StoreAccountRequest.php b/app/Http/Requests/Settings/StoreAccountRequest.php index 89d989df..f63fdf49 100644 --- a/app/Http/Requests/Settings/StoreAccountRequest.php +++ b/app/Http/Requests/Settings/StoreAccountRequest.php @@ -39,9 +39,7 @@ class StoreAccountRequest extends FormRequest $rules = [ 'name' => ['required', 'string'], - 'bank_id' => $isRealEstate - ? ['nullable', 'exists:banks,id'] - : ['required', 'exists:banks,id'], + 'bank_id' => ['nullable', 'exists:banks,id'], 'currency_code' => [ 'required', 'string', diff --git a/app/Http/Requests/Settings/UpdateAccountRequest.php b/app/Http/Requests/Settings/UpdateAccountRequest.php index 3f7bf9c6..54729218 100644 --- a/app/Http/Requests/Settings/UpdateAccountRequest.php +++ b/app/Http/Requests/Settings/UpdateAccountRequest.php @@ -31,9 +31,7 @@ class UpdateAccountRequest extends FormRequest $rules = [ 'name' => ['required', 'string'], - 'bank_id' => $isRealEstate - ? ['nullable', 'exists:banks,id'] - : ['required', 'exists:banks,id'], + 'bank_id' => ['nullable', 'exists:banks,id'], 'currency_code' => [ 'required', 'string', diff --git a/resources/js/components/accounts/account-form.tsx b/resources/js/components/accounts/account-form.tsx index f3547a9c..61066bd6 100644 --- a/resources/js/components/accounts/account-form.tsx +++ b/resources/js/components/accounts/account-form.tsx @@ -294,7 +294,6 @@ export function AccountForm({ type="hidden" name="bank_id" value={selectedBankId ?? ''} - required /> assertRedirect(); }); -it('requires bank_id for non-real-estate account types', function () { +it('does not require bank_id for non-real-estate account types', function () { actingAs($this->user); $data = [ @@ -222,7 +222,7 @@ it('requires bank_id for non-real-estate account types', function () { $response = $this->post(route('accounts.store'), $data); - $response->assertSessionHasErrors(['bank_id']); + $response->assertSessionMissing('errors'); }); // ------------------------------------------------------------------- diff --git a/tests/Feature/Settings/AccountTest.php b/tests/Feature/Settings/AccountTest.php index a80e2c54..7bf4e00f 100644 --- a/tests/Feature/Settings/AccountTest.php +++ b/tests/Feature/Settings/AccountTest.php @@ -55,12 +55,33 @@ it('can create a new account with plaintext name', function () { ]); }); +it('can create a new account without a bank', function () { + actingAs($this->user); + + $data = [ + 'name' => 'My Savings Account', + 'currency_code' => 'USD', + 'type' => AccountType::Savings->value, + ]; + + $response = $this->post(route('accounts.store'), $data); + + $response->assertRedirect(); + assertDatabaseHas('accounts', [ + 'user_id' => $this->user->id, + 'bank_id' => null, + 'name' => 'My Savings Account', + 'currency_code' => 'USD', + 'type' => AccountType::Savings->value, + ]); +}); + it('validates required fields when creating account', function () { actingAs($this->user); $response = $this->post(route('accounts.store'), []); - $response->assertSessionHasErrors(['name', 'bank_id', 'currency_code', 'type']); + $response->assertSessionHasErrors(['name', 'currency_code', 'type']); }); it('validates currency_code must be in allowed list', function () {