whisper-money/tests/Feature
Víctor Falcón e5eca1eacb
feat: Add label support to single transaction update endpoint (#75)
## Summary
- Added label update support to the single transaction `update()`
endpoint
- Previously, labels could only be updated via the bulk update endpoint
- Now both endpoints support label updates with consistent behavior

## Changes
- **UpdateTransactionRequest**: Added `label_ids` validation (array of
UUIDs that must belong to user)
- **TransactionController@update**: Now handles label updates alongside
other attributes
  - Syncs labels when `label_ids` is provided
  - Reloads labels relationship for fresh data in events
  - Fires single `updated` event after all changes
- **AssignTransactionToBudget listener**: Ensures labels are loaded
fresh after queue serialization
- **Tests**: Added 6 comprehensive tests covering all label update
scenarios

## Behavior
- **Don't send `label_ids`** → labels unchanged (partial update)
- **Send `label_ids: []`** → removes all labels
- **Send `label_ids: [uuid1, uuid2]`** → replaces labels with these

## Testing
When labels are updated, the `TransactionUpdated` event fires and the
transaction is automatically assigned to matching budgets (via queued
listener).

All tests pass (29 tests, 134 assertions).

Fixes the issue where transactions wouldn't appear in budget after
adding a matching label via the single transaction update endpoint.
2026-01-24 17:54:54 +01:00
..
Auth feat(queue): Implement queueable email jobs with rate limiting 2025-12-30 07:22:18 +01:00
Console test: Improve demo reset tests performance 2026-01-22 10:24:07 +01:00
Jobs/Drip Add subscription cancellation email with manual trigger command (#47) 2025-12-30 20:32:44 +01:00
Listeners Add subscription cancellation email with manual trigger command (#47) 2025-12-30 20:32:44 +01:00
Onboarding User Onboarding Flow (#23) 2025-12-12 13:06:08 +01:00
Settings Add currency selection to user profile settings (#41) 2025-12-30 07:22:19 +01:00
Sync chore: Simplify IndexedDB sync by moving to Inertia shared props (#63) 2026-01-19 19:15:26 +01:00
AccountBalanceControllerTest.php Accounts: new pages to list, and see account details (#13) 2025-12-05 14:33:18 +01:00
AccountControllerTest.php test: Optimize tests performance 2026-01-17 19:20:23 +01:00
AutomationRuleTest.php chore: Simplify IndexedDB sync by moving to Inertia shared props (#63) 2026-01-19 19:15:26 +01:00
BudgetFeatureFlagTest.php Add Budgeting Feature to Track and Manage Spending (#36) 2026-01-21 15:25:50 +01:00
BudgetHistoricalAssignmentTest.php feat: Load transactions history on budget created (#72) 2026-01-22 11:10:15 +01:00
BudgetTest.php Add Budgeting Feature to Track and Manage Spending (#36) 2026-01-21 15:25:50 +01:00
BudgetTransactionServiceTest.php feat: Load transactions history on budget created (#72) 2026-01-22 11:10:15 +01:00
BulkUpdateTransactionsTest.php test: Optimize tests performance 2026-01-17 19:20:23 +01:00
CashflowAnalyticsTest.php test: Optimize tests performance 2026-01-17 19:20:23 +01:00
DashboardAnalyticsTest.php test: Optimize tests performance 2026-01-17 19:20:23 +01:00
DashboardTest.php User Onboarding Flow (#23) 2025-12-12 13:06:08 +01:00
DeleteUserCommandTest.php test: Optimize tests performance 2026-01-17 19:20:23 +01:00
DemoAccountRestrictionsTest.php Demo Account Experience (#51) 2026-01-07 10:58:14 +01:00
EncryptionTest.php User Onboarding Flow (#23) 2025-12-12 13:06:08 +01:00
ExampleTest.php Install Pest 2025-11-07 12:01:58 +00:00
IdorVulnerabilityTest.php chore: Simplify IndexedDB sync by moving to Inertia shared props (#63) 2026-01-19 19:15:26 +01:00
InertiaSharedDataTest.php SEO landing page 2025-11-25 11:33:11 +01:00
LabelTest.php feat: add transaction labels feature (#24) 2025-12-13 13:02:19 +01:00
SitemapTest.php User Onboarding Flow (#23) 2025-12-12 13:06:08 +01:00
SubscriptionTest.php User Onboarding Flow (#23) 2025-12-12 13:06:08 +01:00
TransactionTest.php feat: Add label support to single transaction update endpoint (#75) 2026-01-24 17:54:54 +01:00
UserLeadTest.php Add User Lead functionality and tests 2025-11-25 10:31:25 +01:00