From cf8ecc475b583e6988b7be70af61b6f01e139b6c Mon Sep 17 00:00:00 2001 From: root Date: Mon, 22 Jun 2026 01:55:02 -0400 Subject: [PATCH] fix: resolve test failures for Sanctum auth guard and AttendanceMailerService binding - Add SanctumServiceProvider explicitly to bootstrap/providers.php to ensure sanctum auth driver is registered in CI environments - Add mockService() to 3 validation tests that were missing it (test_record_returns_validation_errors_for_bad_payload, test_send_manual_email_validates_payload, test_save_notification_note_validates_payload) to prevent container resolution failure during middleware gathering - Update test URLs from /api/attendance-tracking/ to /api/v1/attendance-tracking/ to match current route structure --- bootstrap/providers.php | 2 ++ .../AttendanceTrackingControllerTest.php | 32 +++++++++++-------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/bootstrap/providers.php b/bootstrap/providers.php index 78c06f72..6c52d27b 100644 --- a/bootstrap/providers.php +++ b/bootstrap/providers.php @@ -2,8 +2,10 @@ use App\Providers\AppServiceProvider; use App\Providers\EventServiceProvider; +use Laravel\Sanctum\SanctumServiceProvider; return [ AppServiceProvider::class, EventServiceProvider::class, + SanctumServiceProvider::class, ]; diff --git a/tests/Feature/Api/V1/AttendanceTracking/AttendanceTrackingControllerTest.php b/tests/Feature/Api/V1/AttendanceTracking/AttendanceTrackingControllerTest.php index 2c5ee2e2..92969735 100644 --- a/tests/Feature/Api/V1/AttendanceTracking/AttendanceTrackingControllerTest.php +++ b/tests/Feature/Api/V1/AttendanceTracking/AttendanceTrackingControllerTest.php @@ -38,7 +38,7 @@ class AttendanceTrackingControllerTest extends TestCase 'semester' => 'Fall', ]); - $response = $this->getJson('/api/attendance-tracking/pending-violations?school_year=2025-2026&semester=Fall'); + $response = $this->getJson('/api/v1/attendance-tracking/pending-violations?school_year=2025-2026&semester=Fall'); $response->assertOk() ->assertJson([ @@ -63,7 +63,7 @@ class AttendanceTrackingControllerTest extends TestCase 'semester' => 'Fall', ]); - $response = $this->getJson('/api/attendance-tracking/notified-violations?school_year=2025-2026&semester=Fall'); + $response = $this->getJson('/api/v1/attendance-tracking/notified-violations?school_year=2025-2026&semester=Fall'); $response->assertOk() ->assertJson([ @@ -89,7 +89,7 @@ class AttendanceTrackingControllerTest extends TestCase ], ]); - $response = $this->getJson('/api/attendance-tracking/student-case/10'); + $response = $this->getJson('/api/v1/attendance-tracking/student-case/10'); $response->assertOk() ->assertJson([ @@ -112,7 +112,7 @@ class AttendanceTrackingControllerTest extends TestCase 'status' => 404, ]); - $response = $this->getJson('/api/attendance-tracking/student-case/999'); + $response = $this->getJson('/api/v1/attendance-tracking/student-case/999'); $response->assertStatus(404) ->assertJson([ @@ -141,7 +141,7 @@ class AttendanceTrackingControllerTest extends TestCase 'message' => 'Notification queued.', ]); - $response = $this->postJson('/api/attendance-tracking/record', $payload); + $response = $this->postJson('/api/v1/attendance-tracking/record', $payload); $response->assertOk() ->assertJson([ @@ -152,7 +152,9 @@ class AttendanceTrackingControllerTest extends TestCase public function test_record_returns_validation_errors_for_bad_payload(): void { - $response = $this->postJson('/api/attendance-tracking/record', [ + $this->mockService(); + + $response = $this->postJson('/api/v1/attendance-tracking/record', [ 'student_id' => 0, 'date' => 'bad-date', ]); @@ -176,7 +178,7 @@ class AttendanceTrackingControllerTest extends TestCase 'details' => [], ]); - $response = $this->postJson('/api/attendance-tracking/send-auto-emails', [ + $response = $this->postJson('/api/v1/attendance-tracking/send-auto-emails', [ 'variant' => 'default', ]); @@ -204,7 +206,7 @@ class AttendanceTrackingControllerTest extends TestCase ], ]); - $response = $this->getJson('/api/attendance-tracking/compose?student_id=10&code=ABS_1&variant=default&incident_date=2026-03-01'); + $response = $this->getJson('/api/v1/attendance-tracking/compose?student_id=10&code=ABS_1&variant=default&incident_date=2026-03-01'); $response->assertOk() ->assertJson([ @@ -238,7 +240,7 @@ class AttendanceTrackingControllerTest extends TestCase 'message' => 'Email sent successfully.', ]); - $response = $this->postJson('/api/attendance-tracking/send-manual-email', $payload); + $response = $this->postJson('/api/v1/attendance-tracking/send-manual-email', $payload); $response->assertOk() ->assertJson([ @@ -249,7 +251,9 @@ class AttendanceTrackingControllerTest extends TestCase public function test_send_manual_email_validates_payload(): void { - $response = $this->postJson('/api/attendance-tracking/send-manual-email', [ + $this->mockService(); + + $response = $this->postJson('/api/v1/attendance-tracking/send-manual-email', [ 'student_id' => 0, 'to' => 'not-an-email', ]); @@ -273,7 +277,7 @@ class AttendanceTrackingControllerTest extends TestCase ], ]); - $response = $this->getJson('/api/attendance-tracking/parents-info?student_id=10'); + $response = $this->getJson('/api/v1/attendance-tracking/parents-info?student_id=10'); $response->assertOk() ->assertJson([ @@ -304,7 +308,7 @@ class AttendanceTrackingControllerTest extends TestCase 'message' => 'Note saved.', ]); - $response = $this->postJson('/api/attendance-tracking/save-notification-note', $payload); + $response = $this->postJson('/api/v1/attendance-tracking/save-notification-note', $payload); $response->assertOk() ->assertJson([ @@ -315,7 +319,9 @@ class AttendanceTrackingControllerTest extends TestCase public function test_save_notification_note_validates_payload(): void { - $response = $this->postJson('/api/attendance-tracking/save-notification-note', [ + $this->mockService(); + + $response = $this->postJson('/api/v1/attendance-tracking/save-notification-note', [ 'student_id' => 0, 'code' => '', 'note' => '',