fix: resolve test failures for Sanctum auth guard and AttendanceMailerService binding
API CI/CD / Validate (composer + pint) (push) Successful in 2m12s
API CI/CD / Test (PHPUnit) (push) Failing after 2m29s
API CI/CD / Build frontend assets (push) Successful in 2m19s
API CI/CD / Security audit (push) Successful in 32s
API CI/CD / Deploy to shared hosting (PHP) (push) Has been skipped

- 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
This commit is contained in:
root
2026-06-22 01:55:02 -04:00
parent fd4f1d5506
commit cf8ecc475b
2 changed files with 21 additions and 13 deletions
+2
View File
@@ -2,8 +2,10 @@
use App\Providers\AppServiceProvider; use App\Providers\AppServiceProvider;
use App\Providers\EventServiceProvider; use App\Providers\EventServiceProvider;
use Laravel\Sanctum\SanctumServiceProvider;
return [ return [
AppServiceProvider::class, AppServiceProvider::class,
EventServiceProvider::class, EventServiceProvider::class,
SanctumServiceProvider::class,
]; ];
@@ -38,7 +38,7 @@ class AttendanceTrackingControllerTest extends TestCase
'semester' => 'Fall', '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() $response->assertOk()
->assertJson([ ->assertJson([
@@ -63,7 +63,7 @@ class AttendanceTrackingControllerTest extends TestCase
'semester' => 'Fall', '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() $response->assertOk()
->assertJson([ ->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() $response->assertOk()
->assertJson([ ->assertJson([
@@ -112,7 +112,7 @@ class AttendanceTrackingControllerTest extends TestCase
'status' => 404, 'status' => 404,
]); ]);
$response = $this->getJson('/api/attendance-tracking/student-case/999'); $response = $this->getJson('/api/v1/attendance-tracking/student-case/999');
$response->assertStatus(404) $response->assertStatus(404)
->assertJson([ ->assertJson([
@@ -141,7 +141,7 @@ class AttendanceTrackingControllerTest extends TestCase
'message' => 'Notification queued.', 'message' => 'Notification queued.',
]); ]);
$response = $this->postJson('/api/attendance-tracking/record', $payload); $response = $this->postJson('/api/v1/attendance-tracking/record', $payload);
$response->assertOk() $response->assertOk()
->assertJson([ ->assertJson([
@@ -152,7 +152,9 @@ class AttendanceTrackingControllerTest extends TestCase
public function test_record_returns_validation_errors_for_bad_payload(): void 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, 'student_id' => 0,
'date' => 'bad-date', 'date' => 'bad-date',
]); ]);
@@ -176,7 +178,7 @@ class AttendanceTrackingControllerTest extends TestCase
'details' => [], 'details' => [],
]); ]);
$response = $this->postJson('/api/attendance-tracking/send-auto-emails', [ $response = $this->postJson('/api/v1/attendance-tracking/send-auto-emails', [
'variant' => 'default', '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() $response->assertOk()
->assertJson([ ->assertJson([
@@ -238,7 +240,7 @@ class AttendanceTrackingControllerTest extends TestCase
'message' => 'Email sent successfully.', '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() $response->assertOk()
->assertJson([ ->assertJson([
@@ -249,7 +251,9 @@ class AttendanceTrackingControllerTest extends TestCase
public function test_send_manual_email_validates_payload(): void 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, 'student_id' => 0,
'to' => 'not-an-email', '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() $response->assertOk()
->assertJson([ ->assertJson([
@@ -304,7 +308,7 @@ class AttendanceTrackingControllerTest extends TestCase
'message' => 'Note saved.', '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() $response->assertOk()
->assertJson([ ->assertJson([
@@ -315,7 +319,9 @@ class AttendanceTrackingControllerTest extends TestCase
public function test_save_notification_note_validates_payload(): void 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, 'student_id' => 0,
'code' => '', 'code' => '',
'note' => '', 'note' => '',