fix(capacity): Fix three defects - caching, save, filters
1. Slow Team Member Dropdown - Fixed - Added cached team members store with 5-minute TTL - Dropdown now loads instantly on subsequent visits 2. Error Preventing Capacity Save - Fixed - Added saveAvailability API endpoint - Added backend service method to persist availability overrides - Added proper error handling and success feedback - Cache invalidation on save 3. Filters Not Working - Fixed - Fixed PTOManager to use shared selectedMemberId - Filters now react to team member selection Test Results: - Backend: 76 passed ✅ - Frontend Unit: 10 passed ✅ - E2E: 130 passed, 24 skipped ✅ Refs: openspec/changes/headroom-foundation
This commit is contained in:
@@ -149,6 +149,31 @@ test('4.1.16 GET /api/capacity/revenue calculates possible revenue', function ()
|
||||
expect(round($response->json('data.possible_revenue'), 2))->toBe(round($expectedRevenue, 2));
|
||||
});
|
||||
|
||||
test('4.1.25 POST /api/capacity/availability saves entry', function () {
|
||||
$token = loginAsManager($this);
|
||||
$role = Role::factory()->create();
|
||||
$member = TeamMember::factory()->create(['role_id' => $role->id]);
|
||||
|
||||
$payload = [
|
||||
'team_member_id' => $member->id,
|
||||
'date' => '2026-02-03',
|
||||
'availability' => 0.5,
|
||||
];
|
||||
|
||||
$response = $this->postJson('/api/capacity/availability', $payload, [
|
||||
'Authorization' => "Bearer {$token}",
|
||||
]);
|
||||
|
||||
$response->assertStatus(201);
|
||||
$response->assertJsonPath('data.date', '2026-02-03');
|
||||
|
||||
assertDatabaseHas('team_member_daily_availabilities', [
|
||||
'team_member_id' => $member->id,
|
||||
'date' => '2026-02-03 00:00:00',
|
||||
'availability' => 0.5,
|
||||
]);
|
||||
});
|
||||
|
||||
test('4.1.17 POST /api/holidays creates holiday', function () {
|
||||
$token = loginAsManager($this);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user