39228168c8
API CI/CD / Validate (composer + pint) (push) Successful in 3m14s
API CI/CD / Test (PHPUnit) (push) Failing after 3m28s
API CI/CD / Build frontend assets (push) Successful in 1m2s
API CI/CD / Security audit (push) Failing after 56s
API CI/CD / Deploy to shared hosting (PHP) (push) Has been skipped
17445 lines
893 KiB
Plaintext
17445 lines
893 KiB
Plaintext
|
||
FAIL Tests\Unit\ApiDocsServiceTest
|
||
⨯ public bootstrap matches ci public flags 0.01s
|
||
⨯ full bootstrap enables try and welcome 0.01s
|
||
|
||
FAIL Tests\Unit\ApiLoginSecurityServiceTest
|
||
✓ roles object map preserves role names 0.02s
|
||
⨯ build login response includes teacher class context 0.01s
|
||
⨯ build login response includes teacher assistant class context
|
||
|
||
PASS Tests\Unit\AuthSessionServiceTest
|
||
✓ sanitize redirect relative 0.01s
|
||
✓ sanitize redirect empty
|
||
✓ sanitize rejects protocol relative
|
||
|
||
PASS Tests\Unit\Http\Controllers\Api\AttendanceCommentTemplateControllerTest
|
||
✓ index returns success json 0.10s
|
||
✓ index passes active only true 0.01s
|
||
✓ show returns template 0.01s
|
||
✓ store returns created response 0.02s
|
||
✓ update returns success response 0.01s
|
||
✓ destroy returns success response 0.02s
|
||
✓ list data returns templates key 0.01s
|
||
|
||
PASS Tests\Unit\Grading\ScoreValueValidatorTest
|
||
✓ blank score remains null 0.04s
|
||
✓ score must be inside range
|
||
✓ status inference preserves legacy pending behavior
|
||
|
||
PASS Tests\Unit\Listeners\DeleteUnverifiedUserListenerTest
|
||
✓ listener invokes service 0.02s
|
||
|
||
PASS Tests\Unit\Models\AdditionalChargeTest
|
||
✓ scope by parent term filters status and orders desc 0.04s
|
||
✓ mark applied updates status and invoice 0.01s
|
||
✓ list all for term falls back to year 0.01s
|
||
✓ list all for term filters by search query 0.01s
|
||
|
||
PASS Tests\Unit\Models\AdminNotificationSubjectModelTest
|
||
✓ admin relationship returns user 0.04s
|
||
✓ timestamps are set on create 0.01s
|
||
|
||
PASS Tests\Unit\Models\AttendanceCommentTemplateModelTest
|
||
✓ get active templates filters and orders 0.03s
|
||
|
||
PASS Tests\Unit\Models\AttendanceDataTest
|
||
✓ get attendance by class and get attendance 0.03s
|
||
✓ unreported term rows filters unreported 0.01s
|
||
✓ get unreported absences and lates groups rows 0.01s
|
||
✓ mark reported and notified updates flags 0.01s
|
||
|
||
PASS Tests\Unit\Models\AttendanceDayTest
|
||
✓ get or create draft creates once and reuses 0.30s
|
||
✓ find by section date returns model or null 0.01s
|
||
✓ submit sets submitted fields 0.01s
|
||
✓ finalize is alias to submit 0.01s
|
||
✓ publish sets published fields 0.01s
|
||
✓ reopen sets reopen fields and status 0.01s
|
||
✓ reopen rejects invalid status 0.01s
|
||
✓ is finalized true for published or legacy finalized 0.01s
|
||
|
||
FAIL Tests\Unit\Models\AttendanceEmailTemplateTest
|
||
⨯ get template returns exact active variant when available 0.02s
|
||
⨯ get template falls back to default when requested variant missing 0.02s
|
||
⨯ get template ignores inactive exact variant and uses active default 0.01s
|
||
⨯ get template returns null when no active template exists 0.01s
|
||
|
||
PASS Tests\Unit\Models\AttendanceRecordTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\AttendanceTrackingTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\AuthorizedUserTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\BadgePrintLogTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\CalendarTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\ClassPrepAdjustmentTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\ClassPreparationLogTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\ClassProgressAttachmentTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\ClassProgressReportTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\ClassSectionTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\ClassTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\CommunicationLogTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\CompetitionClassWinnerTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\CompetitionScoreTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\CompetitionTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\CompetitionWinnerTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\ConfigurationTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\ContactUsTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\CurrentFlagTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\DiscountUsageTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\DiscountVoucherTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\EarlyDismissalSignatureTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\EmailTemplateTest
|
||
⨯ get template returns exact variant when active 0.02s
|
||
⨯ get template falls back to default variant 0.01s
|
||
⨯ get template ignores inactive templates and can return null 0.01s
|
||
⨯ get template prefers exact variant over default 0.01s
|
||
|
||
PASS Tests\Unit\Models\EmergencyContactTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\EnrollmentTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\EventChargesTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\EventTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\ExamDraftTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\ExamTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\ExpenseTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\FamilyCommPrefTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\FamilyGuardianTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\FamilyStudentTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\FamilyTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\FinalExamTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\FinalScoreTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\GradingLockTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\HomeworkTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\IncidentTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\InventoryCategoryTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\InventoryItemTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\InventoryMovementTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\InvoiceEventTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\InvoiceStudentListTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\InvoiceTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\IpAttemptTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\LateSlipLogTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\LoginActivityTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\ManualPaymentTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\MessageTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\MidtermExamTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\MissingScoreOverrideTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\NavItemTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\NotificationTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\ParentAttendanceReportTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\ParentMeetingScheduleTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\ParentNotificationTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\ParentTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\ParticipationTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\PasswordResetRequestTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\PasswordResetTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\PayPalPaymentTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\PaymentErrorTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\PaymentNotificationLogTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\PaymentTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\PaymentTransactionTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\PaypalTransactionTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\PermissionTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\PlacementBatchTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\PlacementLevelTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\PlacementScoreTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\PreferencesTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\PrintRequestTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\ProjectTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\PromotionQueueTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\PurchaseOrderItemTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\PurchaseOrderTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\QuizTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\RefundTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\ReimbursementBatchAdminFileTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\ReimbursementBatchItemTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\ReimbursementBatchTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\ReimbursementTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\RoleNavItemTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\RolePermissionTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\RoleTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\ScoreCommentTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\SectionTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\SemesterScoreTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\SettingsTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\StaffAttendanceTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\StaffTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\StatsTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\StudentAllergyTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\StudentClassTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\StudentMedicalConditionTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\StudentTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\SubjectCurriculumTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\TeacherClassTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\TeacherSubmissionNotificationHistoryTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\TeacherTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\UserNotificationTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\UserRoleTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
FAIL Tests\Unit\Models\UserTest
|
||
⨯ model metadata is converted
|
||
✓ model class loads
|
||
✓ password mutator preserves pbkdf2 hashes 0.62s
|
||
|
||
PASS Tests\Unit\Models\WhatsappGroupLinkTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\WhatsappGroupMembershipTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Models\WhatsappInviteLogTest
|
||
✓ model metadata is converted
|
||
✓ model class loads
|
||
|
||
PASS Tests\Unit\Http\Requests\AttendanceCommentTemplate\StoreAttendanceCommentTemplateRequestTest
|
||
✓ rules pass with valid data 0.01s
|
||
✓ rules fail when required fields missing 0.01s
|
||
✓ rules fail when max score less than min score 0.01s
|
||
✓ rules fail when score out of range 0.01s
|
||
|
||
PASS Tests\Unit\Http\Requests\AttendanceCommentTemplate\UpdateAttendanceCommentTemplateRequestTest
|
||
✓ rules pass with partial valid data 0.01s
|
||
✓ rules pass when both scores valid 0.01s
|
||
✓ rules fail when both scores invalid relation 0.01s
|
||
✓ rules fail on invalid boolean 0.01s
|
||
|
||
PASS Tests\Unit\Resources\ClassProgress\ClassProgressReportResourceTest
|
||
✓ resource has expected keys 0.03s
|
||
|
||
PASS Tests\Unit\Resources\Frontend\FrontendPageResourceTest
|
||
✓ resource returns page 0.01s
|
||
|
||
PASS Tests\Unit\Resources\Frontend\PageContentResourceTest
|
||
✓ resource returns content 0.01s
|
||
|
||
FAIL Tests\Unit\Resources\Messaging\MessageResourceTest
|
||
⨯ resource returns expected shape 0.02s
|
||
|
||
PASS Tests\Unit\Resources\Messaging\RecipientResourceTest
|
||
✓ resource returns expected shape 0.02s
|
||
|
||
PASS Tests\Unit\Resources\Notifications\NotificationResourceTest
|
||
✓ resource returns expected shape 0.01s
|
||
|
||
PASS Tests\Unit\Resources\Notifications\UserNotificationResourceTest
|
||
✓ resource returns expected shape 0.01s
|
||
|
||
PASS Tests\Unit\Resources\Roles\PermissionResourceTest
|
||
✓ resource shape 0.01s
|
||
|
||
PASS Tests\Unit\Resources\Roles\RolePermissionResourceTest
|
||
✓ resource shape 0.01s
|
||
|
||
PASS Tests\Unit\Resources\Roles\RoleResourceTest
|
||
✓ resource shape 0.01s
|
||
|
||
PASS Tests\Unit\Resources\Roles\UserWithRolesResourceTest
|
||
✓ resource shape 0.02s
|
||
|
||
PASS Tests\Unit\Resources\Settings\SchoolCalendarEventResourceTest
|
||
✓ resource returns expected shape 0.02s
|
||
|
||
PASS Tests\Unit\Resources\Settings\SettingsResourceTest
|
||
✓ resource returns expected shape 0.01s
|
||
|
||
FAIL Tests\Unit\Resources\Staff\StaffResourceTest
|
||
⨯ resource returns expected shape 0.02s
|
||
|
||
PASS Tests\Unit\Resources\Support\ContactMessageResourceTest
|
||
✓ resource returns expected shape 0.01s
|
||
|
||
FAIL Tests\Unit\Resources\Support\SupportRequestResourceTest
|
||
⨯ resource returns expected shape 0.01s
|
||
|
||
PASS Tests\Unit\Resources\Ui\UiStyleResourceTest
|
||
✓ resource returns expected shape 0.02s
|
||
|
||
PASS Tests\Unit\Services\Administrator\AdminNotificationSubjectServiceTest
|
||
✓ alerts data includes admins 0.02s
|
||
|
||
PASS Tests\Unit\Services\Administrator\AdminNotificationUserServiceTest
|
||
✓ fetch admin notification users excludes parents 0.02s
|
||
|
||
PASS Tests\Unit\Services\Administrator\AdminPrintRecipientServiceTest
|
||
✓ data returns admins and assigned 0.02s
|
||
|
||
FAIL Tests\Unit\Services\Administrator\AdministratorAbsenceServiceTest
|
||
⨯ submit requires reason 0.02s
|
||
|
||
PASS Tests\Unit\Services\Administrator\AdministratorDashboardServiceTest
|
||
✓ delegates to metrics and search 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Administrator\AdministratorEnrollmentEventServiceTest
|
||
⨯ dispatch grouped events with empty groups 0.02s
|
||
|
||
PASS Tests\Unit\Services\Administrator\AdministratorEnrollmentQueryServiceTest
|
||
✓ enrollment withdrawal data returns structure 0.01s
|
||
|
||
PASS Tests\Unit\Services\Administrator\AdministratorEnrollmentRefundServiceTest
|
||
✓ process refunds reports missing invoice 0.01s
|
||
|
||
PASS Tests\Unit\Services\Administrator\AdministratorEnrollmentServiceTest
|
||
✓ delegates to query and status services 0.02s
|
||
|
||
PASS Tests\Unit\Services\Administrator\AdministratorEnrollmentStatusServiceTest
|
||
✓ update statuses requires payload 0.01s
|
||
|
||
PASS Tests\Unit\Services\Administrator\AdministratorMetricsServiceTest
|
||
✓ metrics returns counts 0.01s
|
||
|
||
PASS Tests\Unit\Services\Administrator\AdministratorNotificationServiceTest
|
||
✓ delegates to subject and print services 0.02s
|
||
|
||
PASS Tests\Unit\Services\Administrator\AdministratorSharedServiceTest
|
||
✓ get previous school year 0.01s
|
||
|
||
PASS Tests\Unit\Services\Administrator\AdministratorTeacherSubmissionServiceTest
|
||
✓ delegates to report and notification 0.01s
|
||
|
||
PASS Tests\Unit\Services\Administrator\AdministratorUserSearchServiceTest
|
||
✓ empty query returns no results 0.02s
|
||
|
||
FAIL Tests\Unit\Services\Administrator\TeacherSubmissionNotificationServiceTest
|
||
⨯ send requires targets 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Administrator\TeacherSubmissionReportServiceTest
|
||
⨯ report returns summary 0.01s
|
||
|
||
PASS Tests\Unit\Services\Administrator\TeacherSubmissionSupportServiceTest
|
||
✓ submission status labels 0.02s
|
||
✓ build missing items 0.01s
|
||
|
||
PASS Tests\Unit\Services\Assignment\AssignmentContextServiceTest
|
||
✓ get current term values 0.01s
|
||
|
||
PASS Tests\Unit\Services\Assignment\AssignmentDataLoaderServiceTest
|
||
✓ load teacher classes includes teacher name 0.02s
|
||
✓ load student classes filters inactive 0.01s
|
||
|
||
PASS Tests\Unit\Services\Assignment\AssignmentMetaServiceTest
|
||
✓ get school years uses fallback 0.01s
|
||
✓ get school years returns distinct sorted 0.01s
|
||
✓ first non empty returns first value 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Assignment\AssignmentSectionServiceTest
|
||
⨯ get section names map 0.01s
|
||
|
||
FAIL Tests\Unit\Services\AssignmentServiceTest
|
||
✓ get current semester returns config value 0.02s
|
||
✓ get current school year returns config value 0.02s
|
||
⨯ get assignments overview returns grouped sections 0.02s
|
||
✓ get assignments overview uses fallback config values when metadata… 0.01s
|
||
✓ get assignments overview excludes inactive students 0.02s
|
||
⨯ get assignments overview sorts sections by name 0.01s
|
||
✓ get assignments overview collects school years descending 0.01s
|
||
✓ store assignment creates new row 0.02s
|
||
✓ store assignment updates existing row 0.01s
|
||
⨯ get class assignment data returns all sections 0.02s
|
||
✓ get class assignment data deduplicates teacher names 0.01s
|
||
|
||
PASS Tests\Feature\Api\Attendance\AdminAttendanceApiControllerTest
|
||
✓ daily data returns success 0.05s
|
||
|
||
PASS Tests\Unit\Services\Attendance\AttendanceAutoPublishJobServiceTest
|
||
✓ run publishes due records 0.01s
|
||
|
||
PASS Tests\Unit\Services\Attendance\AttendanceAutoPublishServiceTest
|
||
✓ second sunday after end of day 0.02s
|
||
✓ second sunday backward date 0.01s
|
||
|
||
PASS Tests\Unit\Services\Attendance\AttendanceCommentServiceTest
|
||
✓ comment from score uses template and name 0.01s
|
||
✓ comment from score falls back to this student 0.02s
|
||
|
||
PASS Tests\Unit\Services\Attendance\AttendanceConsequenceServiceTest
|
||
✓ send follow up requires parent email 0.03s
|
||
✓ send follow up marks tracking and notifies 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Attendance\AttendanceDailySummaryServiceTest
|
||
⨯ send absentees summary notifies parent 0.02s
|
||
|
||
PASS Tests\Unit\Services\Attendance\AttendancePolicyServiceTest
|
||
✓ teacher can edit draft 0.01s
|
||
✓ teacher cannot edit finalized 0.01s
|
||
✓ admin like by permission 0.01s
|
||
✓ can manage early dismissals for teacher 0.01s
|
||
|
||
PASS Tests\Unit\Services\Attendance\AttendanceQueryServiceTest
|
||
✓ teacher grid returns section labels and grid 0.02s
|
||
|
||
PASS Tests\Unit\Services\Attendance\AttendanceRecordSyncServiceTest
|
||
✓ update attendance record adjusts totals 0.02s
|
||
✓ add new attendance record creates row 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Attendance\AttendanceSemesterRangeServiceTest
|
||
⨯ get semester range 0.01s
|
||
✓ build sunday list returns sundays 0.02s
|
||
|
||
PASS Tests\Unit\Services\Attendance\AttendanceServiceTest
|
||
✓ update attendance management throws when locked 0.02s
|
||
✓ update attendance management saves row 0.02s
|
||
|
||
PASS Tests\Unit\Services\Attendance\AttendanceSummaryRebuildServiceTest
|
||
✓ rebuild inserts summary rows 0.02s
|
||
|
||
FAIL Tests\Unit\Services\Attendance\LateSlipLogCommandServiceTest
|
||
⨯ delete removes log 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Attendance\LateSlipLogQueryServiceTest
|
||
⨯ paginate filters by date 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Attendance\SemesterRangeServiceTest
|
||
✓ normalize semester
|
||
⨯ get school year range
|
||
✓ build sunday list
|
||
|
||
PASS Tests\Feature\Api\Attendance\StaffAttendanceApiControllerTest
|
||
✓ month data returns success 0.02s
|
||
✓ admins data returns success 0.02s
|
||
|
||
PASS Tests\Unit\Services\Attendance\StaffAttendanceServiceTest
|
||
✓ month data returns sections and days 0.02s
|
||
|
||
PASS Tests\Unit\Services\Attendance\StudentAttendanceWriterServiceTest
|
||
✓ resolve student school id from student 0.02s
|
||
✓ save or update updates existing and syncs record 0.01s
|
||
|
||
PASS Tests\Feature\Api\Attendance\TeacherAttendanceApiControllerTest
|
||
✓ teacher grid endpoint returns success 0.02s
|
||
✓ teacher form endpoint returns success or validation message 0.02s
|
||
|
||
PASS Tests\Unit\Services\Attendance\TeacherAttendanceSubmissionServiceTest
|
||
✓ submit requires attendance data 0.02s
|
||
|
||
PASS Tests\Unit\Services\AttendanceManagement\AttendanceManagementServiceTest
|
||
✓ badge scan persists school year and semester for the event date 0.02s
|
||
✓ dashboard derives academic context for legacy rows and applies filt… 0.02s
|
||
|
||
PASS Tests\Unit\Services\AttendanceTracking\AttendanceCaseQueryServiceTest
|
||
✓ returns not found when student missing 0.02s
|
||
|
||
PASS Tests\Unit\Services\AttendanceTracking\AttendanceCommunicationSupportServiceTest
|
||
✓ compose requires student id 0.02s
|
||
✓ get violation dates for student 0.02s
|
||
|
||
PASS Tests\Unit\Services\AttendanceTracking\AttendanceEmailComposerServiceTest
|
||
✓ render template replaces tokens 0.01s
|
||
✓ pick variant fallback 0.01s
|
||
|
||
PASS Tests\Unit\Services\AttendanceTracking\AttendanceNotificationLogServiceTest
|
||
✓ log notification creates and updates 0.02s
|
||
|
||
PASS Tests\Unit\Services\AttendanceTracking\AttendanceNotificationWorkflowServiceTest
|
||
✓ record requires parent email 0.02s
|
||
|
||
PASS Tests\Unit\Services\AttendanceTracking\AttendanceParentLookupServiceTest
|
||
✓ get primary parent for student 0.01s
|
||
✓ get secondary parent falls back to parent row 0.02s
|
||
|
||
PASS Tests\Unit\Services\AttendanceTracking\AttendancePendingViolationServiceTest
|
||
✓ returns error when no students 0.01s
|
||
|
||
FAIL Tests\Unit\Services\AttendanceTracking\AttendanceTrackingServiceTest
|
||
⨯ service instantiates 0.01s
|
||
|
||
PASS Tests\Unit\Services\AttendanceTracking\AttendanceViolationStudentResolverServiceTest
|
||
✓ resolve for school year returns students 0.02s
|
||
|
||
PASS Tests\Unit\Services\AttendanceTracking\ViolationRuleEngineServiceTest
|
||
✓ school year helpers 0.01s
|
||
✓ window weeks for violation code 0.01s
|
||
|
||
PASS Tests\Unit\Services\Auth\PasswordResetCleanupServiceTest
|
||
✓ cleanup removes old requests 0.02s
|
||
|
||
PASS Tests\Unit\Services\Auth\PermissionCheckServiceTest
|
||
✓ has permission returns true when assigned 0.01s
|
||
|
||
PASS Tests\Unit\Services\Auth\RegistrationCaptchaServiceTest
|
||
✓ generate sets cache value 0.01s
|
||
✓ verify and clear 0.02s
|
||
|
||
PASS Tests\Unit\Services\Auth\RegistrationFormatterServiceTest
|
||
✓ format normalizes parent fields 0.01s
|
||
✓ format includes second parent when present 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Auth\RegistrationServiceTest
|
||
⨯ register creates parent user 0.02s
|
||
⨯ register rejects pending activation 0.32s
|
||
|
||
PASS Tests\Unit\Services\Auth\UserRoleServiceTest
|
||
✓ has permission for crud checks roles 0.01s
|
||
|
||
PASS Tests\Unit\Services\Badges\BadgeFormDataServiceTest
|
||
✓ build formats users and assigns latest class for teacherish roles 0.02s
|
||
✓ build defaults invalid active role to teacher 0.01s
|
||
|
||
PASS Tests\Unit\Services\Badges\BadgePdfServiceTest
|
||
✓ generate returns pdf response and logs prints 0.10s
|
||
✓ generate returns empty state pdf when no valid users found 0.09s
|
||
✓ generate deduplicates same badge content 0.08s
|
||
|
||
PASS Tests\Unit\Services\Badges\BadgePrintLogServiceTest
|
||
✓ get status normalizes ids before calling model 0.02s
|
||
✓ log normalizes ids and returns inserted count 0.01s
|
||
✓ log safely swallows exceptions and logs error 0.01s
|
||
|
||
PASS Tests\Unit\Services\Badges\BadgeTextFormatterTest
|
||
✓ normalize ids filters and deduplicates 0.02s
|
||
✓ norm removes extra spaces and control chars 0.01s
|
||
✓ format role handles special words and acronyms 0.01s
|
||
✓ format roles csv formats each role 0.01s
|
||
✓ format class normalizes known values 0.01s
|
||
✓ resolve role prefers first available candidate 0.01s
|
||
✓ to pdf returns string 0.01s
|
||
✓ fit text returns size within bounds 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Billing\BalanceCalculationServiceTest
|
||
⨯ calculate family account applies balance formula 0.02s
|
||
✓ overpayment records account credit 0.01s
|
||
✓ student rows include event charges 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Billing\BillingTotalsServiceTest
|
||
⨯ event and additional subtotals 0.02s
|
||
⨯ additional subtotal by parent sums applied charges 0.02s
|
||
✓ event subtotals by student groups amounts 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Billing\ChargeServiceTest
|
||
✓ create extra charge blocks duplicate 0.02s
|
||
✓ create event charge blocks duplicate 0.01s
|
||
✓ create event charge succeeds 0.01s
|
||
⨯ cancel event charge zeros charge and creates credit 0.01s
|
||
✓ apply extra charge marks applied 0.02s
|
||
✓ list for parent returns both charge types 0.01s
|
||
|
||
PASS Tests\Unit\Services\BroadcastEmail\BroadcastEmailComposerServiceTest
|
||
✓ sanitize removes script and events 0.01s
|
||
✓ compose replaces name when personalized 0.01s
|
||
|
||
PASS Tests\Unit\Services\BroadcastEmail\BroadcastEmailRecipientServiceTest
|
||
✓ parents with emails filters missing email 0.02s
|
||
✓ recipients by ids returns names 0.02s
|
||
|
||
PASS Tests\Unit\Services\BroadcastEmail\BroadcastEmailSenderOptionsServiceTest
|
||
✓ list options from env 0.02s
|
||
|
||
PASS Tests\Unit\Services\CertificateAdminServiceTest
|
||
✓ dashboard groups students and uses saved decisions as source of tru… 0.02s
|
||
✓ issue certificates reuses existing record and creates new one for u… 0.02s
|
||
✓ audit log returns year summary and filtered records 0.02s
|
||
|
||
PASS Tests\Unit\Services\ClassPrep\ClassRosterServiceTest
|
||
✓ list students by class 0.01s
|
||
|
||
PASS Tests\Unit\Services\ClassPrep\StickerCountServiceTest
|
||
✓ list all returns totals excluding youth 0.01s
|
||
✓ list for class limits results 0.02s
|
||
|
||
PASS Tests\Unit\Services\ClassPreparation\ClassPreparationAdjustmentServiceTest
|
||
✓ apply adjustments updates counts 0.01s
|
||
|
||
FAIL Tests\Unit\Services\ClassPreparation\ClassPreparationAdjustmentWriterServiceTest
|
||
⨯ save adjustments persists allowed items 0.02s
|
||
|
||
PASS Tests\Unit\Services\ClassPreparation\ClassPreparationCalculatorServiceTest
|
||
✓ get class level by section 0.02s
|
||
✓ calculate prep items for lower grades 0.01s
|
||
|
||
PASS Tests\Unit\Services\ClassPreparation\ClassPreparationContextServiceTest
|
||
✓ has roster for semester 0.01s
|
||
|
||
PASS Tests\Unit\Services\ClassPreparation\ClassPreparationInventoryServiceTest
|
||
✓ build availability uses max value 0.02s
|
||
|
||
FAIL Tests\Unit\Services\ClassPreparation\ClassPreparationLogServiceTest
|
||
✓ has prep changed detects diff 0.01s
|
||
⨯ create log and get latest 0.01s
|
||
|
||
FAIL Tests\Unit\Services\ClassPreparation\ClassPreparationPrintServiceTest
|
||
⨯ print prep creates log 0.02s
|
||
✓ print prep handles log failure 0.02s
|
||
|
||
PASS Tests\Unit\Services\ClassPreparation\ClassPreparationRosterServiceTest
|
||
✓ get class section student counts 0.01s
|
||
✓ get student count for section 0.02s
|
||
|
||
FAIL Tests\Unit\Services\ClassPreparation\ClassPreparationServiceTest
|
||
✓ list prep returns sections and totals 0.01s
|
||
⨯ mark printed creates logs 0.01s
|
||
|
||
PASS Tests\Unit\Services\ClassProgress\ClassProgressAttachmentServiceTest
|
||
✓ store attachments persists records 0.03s
|
||
|
||
PASS Tests\Unit\Services\ClassProgress\ClassProgressMetaServiceTest
|
||
✓ subject sections return configured values 0.01s
|
||
|
||
FAIL Tests\Unit\Services\ClassProgress\ClassProgressMutationServiceTest
|
||
⨯ create reports persists multiple subjects 0.02s
|
||
⨯ update report changes status 0.02s
|
||
⨯ delete report removes record 0.01s
|
||
|
||
PASS Tests\Unit\Services\ClassProgress\ClassProgressQueryServiceTest
|
||
✓ list reports filters by class section 0.02s
|
||
|
||
PASS Tests\Unit\Services\ClassProgress\ClassProgressRuleServiceTest
|
||
✓ build unit chapter summary limits length
|
||
✓ ensure week end defaults to six days
|
||
|
||
PASS Tests\Unit\Services\ClassSections\ClassAttendanceServiceTest
|
||
✓ get attendance payload includes students 0.02s
|
||
|
||
PASS Tests\Unit\Services\ClassSections\ClassSectionCommandServiceTest
|
||
✓ create update delete 0.01s
|
||
|
||
PASS Tests\Unit\Services\ClassSections\ClassSectionQueryServiceTest
|
||
✓ list filters by search 0.01s
|
||
|
||
PASS Tests\Unit\Services\ClassSections\ClassSectionSeedServiceTest
|
||
✓ seed defaults creates rows 0.02s
|
||
|
||
PASS Tests\Unit\Services\Communication\CommunicationTemplateServiceTest
|
||
✓ list active templates maps columns 0.01s
|
||
|
||
PASS Tests\Unit\Services\CompetitionScores\CompetitionScoresSaveServiceTest
|
||
✓ filter scores rejects non integers 0.01s
|
||
✓ save scores upserts 0.02s
|
||
|
||
PASS Tests\Unit\Services\Dashboard\DashboardRouteServiceTest
|
||
✓ resolve returns fallback when no roles 0.02s
|
||
✓ resolve returns dashboard route for role 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Discounts\DiscountApplyServiceTest
|
||
⨯ apply voucher returns error when no remaining uses 0.02s
|
||
|
||
PASS Tests\Unit\Services\Email\EmailExtractorServiceTest
|
||
✓ list and compare emails 0.01s
|
||
|
||
PASS Tests\Unit\Services\Email\EmailProfileServiceTest
|
||
✓ resolve profile maps aliases 0.01s
|
||
✓ env key from profile 0.01s
|
||
✓ sanitize reply to name 0.01s
|
||
|
||
PASS Tests\Unit\Services\EmergencyContacts\EmergencyContactDirectoryServiceTest
|
||
✓ groups include parent students contacts and phones 0.02s
|
||
|
||
PASS Tests\Unit\Services\Events\EventCategoryServiceTest
|
||
✓ categories returns list 0.02s
|
||
|
||
PASS Tests\Unit\Services\Events\EventChargeQueryServiceTest
|
||
✓ list returns paginated charges 0.01s
|
||
|
||
PASS Tests\Unit\Services\Events\EventChargeServiceTest
|
||
✓ seed charges creates event charges 0.01s
|
||
|
||
PASS Tests\Unit\Services\Events\EventListServiceTest
|
||
✓ list filters active events 0.02s
|
||
|
||
PASS Tests\Unit\Services\Events\EventManagementServiceTest
|
||
✓ update returns not found 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Events\EventStudentChargeServiceTest
|
||
⨯ list students with charges 0.01s
|
||
|
||
PASS Tests\Unit\Services\Exams\ExamDraftTeacherServiceTest
|
||
✓ store creates draft 0.02s
|
||
|
||
FAIL Tests\Unit\Services\Expenses\ExpenseReceiptServiceTest
|
||
⨯ store receipt returns filename and url 0.01s
|
||
|
||
PASS Tests\Unit\Services\Expenses\ExpenseStaffServiceTest
|
||
✓ list staff users excludes parents 0.02s
|
||
|
||
PASS Tests\Unit\Services\ExtraCharges\ExtraChargesMetaServiceTest
|
||
✓ get school years uses fallback 0.01s
|
||
✓ get school years merges sources 0.01s
|
||
|
||
PASS Tests\Unit\Services\Families\FamilyFinanceServiceTest
|
||
✓ load financials for parents returns summary 0.01s
|
||
|
||
PASS Tests\Unit\Services\Families\FamilyMutationServiceTest
|
||
✓ bootstrap creates family 0.02s
|
||
✓ attach second by email creates guardian 0.02s
|
||
✓ set primary home updates flag 0.01s
|
||
|
||
PASS Tests\Unit\Services\Families\FamilyNotificationServiceTest
|
||
✓ send compose email delegates to dispatcher 0.02s
|
||
|
||
PASS Tests\Unit\Services\Families\FamilyQueryServiceTest
|
||
✓ admin index returns families 0.01s
|
||
✓ search suggestions returns items 0.01s
|
||
✓ family card returns payload 0.02s
|
||
|
||
PASS Tests\Unit\Services\FeeCalculationServiceTest
|
||
✓ calculate refund returns calculator amount 0.01s
|
||
|
||
PASS Tests\Unit\Services\Fees\FeeGradeServiceTest
|
||
✓ grade level parsing 0.01s
|
||
✓ compare grades orders numeric then suffix 0.02s
|
||
|
||
PASS Tests\Unit\Services\Fees\FeeRefundCalculatorServiceTest
|
||
✓ calculate refund caps at total paid 0.01s
|
||
✓ returns zero when parent has no payments 0.01s
|
||
✓ returns zero when no withdrawn students 0.02s
|
||
✓ withdrawn student breakdown carries assigned tuition fee 0.01s
|
||
✓ multi student family only refunds withdrawn students 0.01s
|
||
✓ withdrawal after deadline is not eligible 0.01s
|
||
✓ missing withdrawal date is skipped with reason 0.02s
|
||
|
||
FAIL Tests\Unit\Services\Fees\FeeRefundDetailServiceTest
|
||
⨯ calculate refund details returns amount 0.01s
|
||
|
||
PASS Tests\Unit\Services\Fees\FeeStudentFeeServiceTest
|
||
✓ total tuition fee applies tiers and youth fee 0.01s
|
||
✓ assign fees stores tuition fee and fee category on each student 0.02s
|
||
✓ calculate breakdown includes billable and non billable students 0.01s
|
||
✓ is billable and is withdrawn classifiers 0.01s
|
||
|
||
PASS Tests\Unit\Services\Fees\TuitionCalculationServiceTest
|
||
✓ calculate returns family total and per student breakdown 0.02s
|
||
✓ calculate excludes non billable students from family total 0.01s
|
||
✓ calculate applies per student discount 0.01s
|
||
✓ family total helper 0.01s
|
||
|
||
PASS Tests\Unit\Services\Files\ExamDraftDownloadNameServiceTest
|
||
✓ build returns slugified name 0.02s
|
||
|
||
PASS Tests\Unit\Services\Files\FileServeServiceTest
|
||
✓ meta returns file metadata 0.01s
|
||
✓ serve inline returns 304 when etag matches 0.01s
|
||
✓ serve inline rejects invalid extension 0.02s
|
||
|
||
PASS Tests\Unit\Services\Finance\FinancialChartServiceTest
|
||
✓ generate charts returns null in tests 0.01s
|
||
|
||
PASS Tests\Unit\Services\Finance\FinancialPaymentServiceTest
|
||
✓ payment aggregates exclude void statuses 0.02s
|
||
|
||
PASS Tests\Unit\Services\Finance\FinancialPdfReportServiceTest
|
||
✓ build pdf returns bytes 0.02s
|
||
|
||
PASS Tests\Unit\Services\Finance\FinancialReportServiceTest
|
||
✓ report returns grouped data 0.02s
|
||
|
||
PASS Tests\Unit\Services\Finance\FinancialSchoolYearServiceTest
|
||
✓ list years returns distinct sorted years 0.01s
|
||
|
||
PASS Tests\Unit\Services\Finance\FinancialSummaryServiceTest
|
||
✓ summary calculates totals 0.02s
|
||
|
||
PASS Tests\Unit\Services\Finance\FinancialUnpaidParentsServiceTest
|
||
✓ unpaid parents returns installment data 0.02s
|
||
|
||
PASS Tests\Unit\Services\Frontend\ContactSubmissionServiceTest
|
||
✓ submit creates contact record 0.02s
|
||
|
||
PASS Tests\Unit\Services\Frontend\FrontendPageServiceTest
|
||
✓ page returns payload 0.02s
|
||
|
||
PASS Tests\Unit\Services\Frontend\LandingPageContextServiceTest
|
||
✓ context returns config values 0.01s
|
||
|
||
PASS Tests\Unit\Services\Frontend\LandingPageParentDashboardServiceTest
|
||
✓ summary returns parent payload 0.01s
|
||
|
||
PASS Tests\Unit\Services\Frontend\LandingPageRoleServiceTest
|
||
✓ resolve role returns guest when missing 0.02s
|
||
✓ resolve role returns first role 0.01s
|
||
|
||
PASS Tests\Unit\Services\Frontend\LandingPageServiceTest
|
||
✓ dashboard for user returns guest 0.01s
|
||
✓ dashboard for user returns admin 0.02s
|
||
|
||
PASS Tests\Unit\Services\Frontend\LandingPageTeacherSummaryServiceTest
|
||
✓ summary returns dashboard payload 0.02s
|
||
|
||
PASS Tests\Unit\Services\Frontend\ProfileIconServiceTest
|
||
✓ build for user returns initials 0.02s
|
||
|
||
PASS Tests\Unit\Services\Frontend\StaticPageServiceTest
|
||
✓ load returns content 0.02s
|
||
✓ load missing returns error 0.01s
|
||
|
||
PASS Tests\Unit\Services\Grading\BelowSixtyEmailServiceTest
|
||
✓ send requires student id 0.01s
|
||
✓ send delivers to guardians 0.02s
|
||
|
||
PASS Tests\Unit\Services\Grading\GradingBelowSixtyServiceTest
|
||
✓ list rows returns students below sixty 0.02s
|
||
|
||
PASS Tests\Unit\Services\Grading\GradingLockServiceTest
|
||
✓ toggle creates lock 0.01s
|
||
✓ lock all locks sections 0.02s
|
||
|
||
PASS Tests\Unit\Services\Grading\HomeworkTrackingServiceTest
|
||
✓ report returns teacher rows 0.02s
|
||
|
||
PASS Tests\Unit\Services\Incidents\IncidentAnalysisServiceTest
|
||
✓ analyze groups incidents by student 0.01s
|
||
|
||
PASS Tests\Unit\Services\Incidents\IncidentHistoryServiceTest
|
||
✓ processed enriches grade and updater names 0.02s
|
||
|
||
PASS Tests\Unit\Services\Incidents\IncidentLookupServiceTest
|
||
✓ grade options with active students 0.01s
|
||
✓ updater name map 0.01s
|
||
|
||
PASS Tests\Unit\Services\Inventory\InventoryCategoryServiceTest
|
||
✓ create category 0.02s
|
||
✓ update category 0.01s
|
||
|
||
PASS Tests\Unit\Services\Inventory\InventoryItemServiceTest
|
||
✓ create creates item and movement 0.02s
|
||
✓ update updates item 0.02s
|
||
|
||
PASS Tests\Unit\Services\Inventory\InventoryMovementServiceTest
|
||
✓ create movement 0.01s
|
||
|
||
PASS Tests\Unit\Services\Inventory\InventorySummaryServiceTest
|
||
✓ summary returns items 0.01s
|
||
|
||
PASS Tests\Unit\Services\Inventory\InventoryTeacherDistributionServiceTest
|
||
✓ form data requires teacher role 0.02s
|
||
✓ distribute success 0.02s
|
||
|
||
PASS Tests\Unit\Services\Inventory\SupplierServiceTest
|
||
✓ create supplier 0.01s
|
||
✓ update supplier 0.02s
|
||
|
||
PASS Tests\Unit\Services\Inventory\SupplyCategoryServiceTest
|
||
✓ create category 0.01s
|
||
✓ update category 0.01s
|
||
|
||
PASS Tests\Unit\Services\Invoices\InvoiceConfigServiceTest
|
||
✓ config service reads values 0.02s
|
||
|
||
PASS Tests\Unit\Services\Invoices\InvoiceGenerationServiceTest
|
||
✓ generate invoice creates new invoice 0.02s
|
||
|
||
PASS Tests\Unit\Services\Invoices\InvoiceGradeServiceTest
|
||
✓ grade parsing handles common cases 0.01s
|
||
✓ compare grades orders numeric then suffix 0.02s
|
||
|
||
PASS Tests\Unit\Services\Invoices\InvoiceManagementServiceTest
|
||
✓ management data returns parent invoice summary 0.02s
|
||
|
||
PASS Tests\Unit\Services\Invoices\InvoicePaymentServiceTest
|
||
✓ parent invoice summary includes refunds and last payment 0.01s
|
||
|
||
PASS Tests\Unit\Services\Invoices\InvoicePdfServiceTest
|
||
✓ build pdf returns bytes 0.02s
|
||
|
||
PASS Tests\Unit\Services\Invoices\InvoiceServiceTest
|
||
✓ has class assignment returns true 0.02s
|
||
|
||
PASS Tests\Unit\Services\Invoices\InvoiceTuitionServiceTest
|
||
✓ calculate tuition fee counts regular and youth 0.01s
|
||
✓ refund deadline includes withdrawn when passed 0.02s
|
||
|
||
PASS Tests\Unit\Services\Messaging\MessageCommandServiceTest
|
||
✓ create sends message 0.02s
|
||
✓ create rejects invalid role 0.01s
|
||
|
||
PASS Tests\Unit\Services\Messaging\MessageQueryServiceTest
|
||
✓ inbox filters messages 0.02s
|
||
|
||
PASS Tests\Unit\Services\Messaging\MessageRecipientServiceTest
|
||
✓ teachers returns list 0.01s
|
||
✓ parents returns list 0.02s
|
||
|
||
FAIL Tests\Unit\Services\Navigation\NavBuilderServiceTest
|
||
✓ save creates nav item and roles 0.02s
|
||
⨯ reorder updates sort order 0.01s
|
||
|
||
PASS Tests\Unit\Services\Navigation\NavbarServiceTest
|
||
✓ get menu for roles builds tree 0.01s
|
||
|
||
PASS Tests\Unit\Services\Notifications\NotificationActiveServiceTest
|
||
✓ list filters by target group 0.02s
|
||
|
||
PASS Tests\Unit\Services\Notifications\NotificationCleanupServiceTest
|
||
✓ cleanup expired soft deletes rows 0.01s
|
||
|
||
PASS Tests\Unit\Services\Notifications\NotificationDeletedServiceTest
|
||
✓ list returns deleted notifications 0.01s
|
||
|
||
PASS Tests\Unit\Services\Notifications\NotificationDispatchServiceTest
|
||
✓ dispatch logs email and sms 0.02s
|
||
|
||
PASS Tests\Unit\Services\Notifications\NotificationManagementServiceTest
|
||
✓ update modifies notification 0.01s
|
||
✓ update returns false when missing 0.01s
|
||
✓ delete and restore notification 0.02s
|
||
|
||
PASS Tests\Unit\Services\Notifications\NotificationReadServiceTest
|
||
✓ mark read updates row 0.01s
|
||
✓ mark read returns false when missing 0.01s
|
||
|
||
PASS Tests\Unit\Services\Notifications\NotificationRecipientServiceTest
|
||
✓ get recipients by role 0.02s
|
||
|
||
FAIL Tests\Unit\Services\Notifications\NotificationSendServiceTest
|
||
⨯ send creates notification and user notifications 0.02s
|
||
|
||
PASS Tests\Unit\Services\Notifications\NotificationShowServiceTest
|
||
✓ get for user returns notification 0.01s
|
||
✓ get for user returns null when missing 0.02s
|
||
|
||
PASS Tests\Unit\Services\Notifications\NotificationTriggerServiceTest
|
||
✓ trigger dispatches event 0.01s
|
||
✓ to user dispatches event 0.01s
|
||
|
||
PASS Tests\Unit\Services\Notifications\NotificationUserListServiceTest
|
||
✓ list filters by read status 0.02s
|
||
|
||
PASS Tests\Unit\Services\Notifications\UserNotificationDispatchServiceTest
|
||
✓ notify user creates notification 0.02s
|
||
✓ notify user rejects invalid user 0.01s
|
||
|
||
PASS Tests\Unit\Services\Parents\ParentAttendanceReportServiceTest
|
||
✓ form data returns students 0.02s
|
||
|
||
PASS Tests\Unit\Services\Parents\ParentAttendanceServiceTest
|
||
✓ list attendance returns rows 0.02s
|
||
|
||
PASS Tests\Unit\Services\Parents\ParentConfigServiceTest
|
||
✓ context returns config values 0.01s
|
||
|
||
PASS Tests\Unit\Services\Parents\ParentEmergencyContactServiceTest
|
||
✓ store creates contact 0.02s
|
||
|
||
PASS Tests\Unit\Services\Parents\ParentEnrollmentServiceTest
|
||
✓ overview returns students 0.02s
|
||
|
||
PASS Tests\Unit\Services\Parents\ParentInvoiceServiceTest
|
||
✓ list invoices filters by parent 0.02s
|
||
|
||
PASS Tests\Unit\Services\Parents\ParentRegistrationServiceTest
|
||
✓ register creates student and contact 0.02s
|
||
|
||
PASS Tests\Unit\Services\Payments\PaymentBalanceServiceTest
|
||
✓ update balance adjusts payment totals 0.01s
|
||
|
||
PASS Tests\Unit\Services\Payments\PaymentEnrollmentEventServiceTest
|
||
✓ build event data requires parent 0.02s
|
||
✓ build event data returns parent payload when no students 0.02s
|
||
|
||
PASS Tests\Unit\Services\Payments\PaymentEventChargesServiceTest
|
||
✓ get enrolled students returns grade 0.01s
|
||
|
||
PASS Tests\Unit\Services\Payments\PaymentLookupServiceTest
|
||
✓ get by parent filters school year 0.01s
|
||
|
||
PASS Tests\Unit\Services\Payments\PaymentManualServiceTest
|
||
✓ record payment rejects invalid method 0.02s
|
||
✓ suggest returns matches 0.01s
|
||
|
||
PASS Tests\Unit\Services\Payments\PaymentMissedCheckServiceTest
|
||
✓ find users with missed payments 0.01s
|
||
✓ send reminders sends email and notification 0.02s
|
||
|
||
PASS Tests\Unit\Services\Payments\PaymentNotificationDispatchServiceTest
|
||
✓ notify user creates notification records 0.01s
|
||
|
||
PASS Tests\Unit\Services\Payments\PaymentNotificationServiceTest
|
||
✓ send records log and returns sent count 0.02s
|
||
✓ list logs filters by type 0.02s
|
||
|
||
PASS Tests\Unit\Services\Payments\PaymentPlanServiceTest
|
||
✓ create plan uses defaults when missing 0.02s
|
||
|
||
PASS Tests\Unit\Services\Payments\PaymentTestNotificationServiceTest
|
||
✓ send logs and sends email 0.02s
|
||
|
||
PASS Tests\Unit\Services\Payments\PaymentTransactionServiceTest
|
||
✓ create and update transaction 0.02s
|
||
|
||
PASS Tests\Unit\Services\Payments\PaypalPaymentServiceTest
|
||
✓ create payment falls back to hosted when sdk missing 0.01s
|
||
✓ execute payment throws when sdk missing 0.01s
|
||
|
||
PASS Tests\Unit\Services\Payments\PaypalPaymentSyncServiceTest
|
||
✓ sync applies payment and marks synced 0.02s
|
||
|
||
PASS Tests\Unit\Services\Payments\PaypalTransactionsServiceTest
|
||
✓ list all filters by keyword 0.01s
|
||
|
||
PASS Tests\Unit\Services\Phone\PhoneFormatterServiceTest
|
||
✓ format returns null for invalid 0.01s
|
||
✓ format formats digits 0.02s
|
||
|
||
PASS Tests\Unit\Services\Policy\PolicyContentServiceTest
|
||
✓ get policy returns content 0.01s
|
||
|
||
PASS Tests\Unit\Services\Preferences\PreferencesCommandServiceTest
|
||
✓ upsert creates record 0.01s
|
||
|
||
PASS Tests\Unit\Services\Preferences\PreferencesOptionsServiceTest
|
||
✓ defaults include expected keys 0.02s
|
||
|
||
PASS Tests\Unit\Services\Preferences\PreferencesQueryServiceTest
|
||
✓ get for user returns defaults when missing 0.01s
|
||
✓ paginate filters by user id 0.01s
|
||
|
||
PASS Tests\Unit\Services\Promotions\LevelProgressionServiceTest
|
||
✓ seed defaults creates baseline levels 0.02s
|
||
✓ resolve by class id uses mapping when present 0.02s
|
||
✓ resolve falls back to class id plus one when no mapping 0.01s
|
||
✓ upsert mapping updates existing row 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Promotions\PromotionEligibilityServiceTest
|
||
✓ passing student becomes awaiting parent enrollment 0.02s
|
||
✓ failing student becomes repeated 0.02s
|
||
✓ missing scores marks on hold 0.01s
|
||
⨯ terminal level is graduated 0.02s
|
||
✓ audit log records status changes 0.02s
|
||
|
||
PASS Tests\Unit\Services\Promotions\PromotionEnrollmentServiceTest
|
||
✓ completing checklist finalises promotion and creates enrollment 0.02s
|
||
✓ partial checklist keeps status in progress 0.02s
|
||
✓ submit requires complete checklist 0.01s
|
||
✓ other parent cannot act on record 0.01s
|
||
✓ expired records become not enrolled 0.01s
|
||
|
||
PASS Tests\Unit\Services\Promotions\PromotionStatusServiceTest
|
||
✓ allowed transition updates status and audit log 0.02s
|
||
✓ disallowed transition throws 0.01s
|
||
✓ force status bypasses transition map 0.01s
|
||
✓ no op transition returns record unchanged 0.01s
|
||
|
||
PASS Tests\Unit\Services\PurchaseOrders\PurchaseOrderCreateServiceTest
|
||
✓ create persists purchase order and items 0.01s
|
||
|
||
FAIL Tests\Unit\Services\PurchaseOrders\PurchaseOrderReceiveServiceTest
|
||
⨯ receive updates items and inventory 0.01s
|
||
|
||
PASS Tests\Unit\Services\PurchaseOrders\PurchaseOrderStatusServiceTest
|
||
✓ cancel marks purchase order canceled 0.02s
|
||
|
||
PASS Tests\Unit\Services\Refunds\RefundDecisionServiceTest
|
||
✓ approve updates refund status 0.01s
|
||
|
||
PASS Tests\Unit\Services\Refunds\RefundInvoiceAdjustmentServiceTest
|
||
✓ apply book charge inserts additional charge 0.01s
|
||
|
||
PASS Tests\Unit\Services\Refunds\RefundNotificationServiceTest
|
||
✓ notify pending logs event 0.02s
|
||
|
||
FAIL Tests\Unit\Services\Refunds\RefundOverpaymentServiceTest
|
||
⨯ recalculate creates overpayment refund 0.01s
|
||
|
||
PASS Tests\Unit\Services\Refunds\RefundPayoutServiceTest
|
||
✓ record payment marks partial 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Refunds\RefundPolicyServiceTest
|
||
⨯ process withdrawal refund creates refund 0.02s
|
||
|
||
PASS Tests\Unit\Services\Refunds\RefundQueryServiceTest
|
||
✓ list filters by status 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Refunds\RefundRequestServiceTest
|
||
⨯ request overpayment creates refund 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Refunds\RefundSummaryServiceTest
|
||
⨯ summary calculates unapplied balance 0.02s
|
||
|
||
PASS Tests\Unit\Services\Reimbursements\ReimbursementBatchAssignmentServiceTest
|
||
✓ assign and unassign batch item 0.02s
|
||
|
||
PASS Tests\Unit\Services\Reimbursements\ReimbursementBatchServiceTest
|
||
✓ create batch assigns sequence and title 0.01s
|
||
|
||
PASS Tests\Unit\Services\Reimbursements\ReimbursementDonationServiceTest
|
||
✓ mark donation updates expense and unassigns 0.02s
|
||
|
||
PASS Tests\Unit\Services\Reimbursements\ReimbursementRecipientServiceTest
|
||
✓ recipient options include staff and specials 0.02s
|
||
|
||
PASS Tests\Unit\Services\Reports\ReportCards\ReportCardServiceTest
|
||
✓ meta returns data sets 0.02s
|
||
✓ completeness returns summary 0.02s
|
||
✓ acknowledgement returns signed data 0.01s
|
||
✓ generate single report returns pdf 0.02s
|
||
✓ generate single report handles missing scores 0.01s
|
||
|
||
PASS Tests\Unit\Services\Reports\SlipPrinterFormatterServiceTest
|
||
✓ to db date parses us format 0.02s
|
||
✓ to db time parses string 0.01s
|
||
|
||
PASS Tests\Unit\Services\Reports\Stickers\StickerPresetServiceTest
|
||
✓ presets include alias fields 0.01s
|
||
|
||
PASS Tests\Unit\Services\Reports\Stickers\StickerPrintServiceTest
|
||
✓ generate returns pdf content 0.02s
|
||
✓ generate returns error when no students 0.02s
|
||
|
||
PASS Tests\Unit\Services\Reports\Stickers\StickerQueryServiceTest
|
||
✓ list students by class returns rows 0.01s
|
||
✓ list students for print all excludes youth and kg 0.02s
|
||
|
||
PASS Tests\Unit\Services\Roles\PermissionCrudServiceTest
|
||
✓ create and update permission 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Roles\RoleAssignmentServiceTest
|
||
⨯ assign roles creates user roles and staff 0.02s
|
||
|
||
PASS Tests\Unit\Services\Roles\RoleCrudServiceTest
|
||
✓ create and update role 0.02s
|
||
|
||
PASS Tests\Unit\Services\Roles\RoleDashboardServiceTest
|
||
✓ best dashboard route for returns route 0.01s
|
||
|
||
PASS Tests\Unit\Services\Roles\RolePermissionServiceTest
|
||
✓ save role permissions persists rows 0.02s
|
||
|
||
PASS Tests\Unit\Services\Roles\RoleQueryServiceTest
|
||
✓ list roles returns paginator 0.02s
|
||
✓ list users with roles returns roles 0.01s
|
||
|
||
PASS Tests\Unit\Services\Roles\RoleSwitchServiceTest
|
||
✓ get user role names returns roles 0.01s
|
||
|
||
PASS Tests\Unit\Services\School\AccountEventServiceTest
|
||
✓ new account added creates family links 0.02s
|
||
✓ delete unverified user handles missing admin emails 0.01s
|
||
|
||
FAIL Tests\Unit\Services\School\EnrollmentEventServiceTest
|
||
⨯ admission under review sends email 0.01s
|
||
⨯ admission under review requires email 0.02s
|
||
|
||
FAIL Tests\Unit\Services\School\PaymentEventServiceTest
|
||
⨯ payment received sends email 0.01s
|
||
⨯ extra charge requires email 0.01s
|
||
|
||
PASS Tests\Unit\Services\School\SemesterSelectionServiceTest
|
||
✓ selected teacher semester prefers session value 0.02s
|
||
✓ selected teacher semester falls back to config 0.01s
|
||
|
||
FAIL Tests\Unit\Services\SchoolIds\SchoolIdAssignmentServiceTest
|
||
⨯ assigns school id when missing 0.01s
|
||
✓ assign returns existing school id 0.02s
|
||
|
||
PASS Tests\Unit\Services\SchoolIds\SchoolIdGenerationServiceTest
|
||
✓ generates student school id with prefix 0.01s
|
||
✓ generates user school id with prefix 0.01s
|
||
|
||
PASS Tests\Unit\Services\Scores\AttendanceCalculatorTest
|
||
✓ calculate uses configured days 0.02s
|
||
|
||
PASS Tests\Unit\Services\Scores\ExamScoreServiceTest
|
||
✓ list returns latest exam score 0.01s
|
||
✓ update creates exam score and missing override 0.01s
|
||
|
||
PASS Tests\Unit\Services\Scores\HomeworkCalculatorTest
|
||
✓ calculate returns average score 0.02s
|
||
|
||
PASS Tests\Unit\Services\Scores\HomeworkScoreServiceTest
|
||
✓ list includes semester variants 0.02s
|
||
✓ add column inserts next index 0.01s
|
||
|
||
PASS Tests\Unit\Services\Scores\ParticipationScoreServiceTest
|
||
✓ list returns participation scores 0.02s
|
||
✓ update updates existing scores 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Scores\ProjectCalculatorTest
|
||
⨯ calculate returns average score 0.01s
|
||
|
||
PASS Tests\Unit\Services\Scores\ProjectScoreServiceTest
|
||
✓ list returns headers and scores 0.02s
|
||
✓ update creates scores and missing overrides 0.01s
|
||
✓ add column inserts next index 0.01s
|
||
|
||
PASS Tests\Unit\Services\Scores\QuizCalculatorTest
|
||
✓ calculate returns average score 0.02s
|
||
|
||
PASS Tests\Unit\Services\Scores\QuizScoreServiceTest
|
||
✓ list returns headers and scores 0.01s
|
||
✓ update creates scores and missing overrides 0.01s
|
||
✓ add column inserts next index 0.02s
|
||
|
||
PASS Tests\Unit\Services\Scores\ScoreCommentServiceTest
|
||
✓ list returns comments for students 0.01s
|
||
✓ save returns validation errors for short comment 0.01s
|
||
|
||
PASS Tests\Unit\Services\Scores\ScoreDashboardServiceTest
|
||
✓ overview returns students and scores 0.02s
|
||
✓ view student scores groups by year and semester 0.01s
|
||
|
||
PASS Tests\Unit\Services\Scores\ScorePredictorServiceTest
|
||
✓ report builds predictions 0.01s
|
||
|
||
PASS Tests\Unit\Services\Scores\ScoreTermServiceTest
|
||
✓ semester and school year fallback to configuration 0.02s
|
||
✓ normalize and variants 0.01s
|
||
|
||
PASS Tests\Unit\Services\Scores\SemesterScoreServiceTest
|
||
✓ update student scores upserts semester scores 0.02s
|
||
|
||
FAIL Tests\Unit\Services\Security\IpBanCommandServiceTest
|
||
⨯ ban now updates blocked until 0.02s
|
||
⨯ unban all resets active 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Security\IpBanQueryServiceTest
|
||
⨯ paginate filters active 0.01s
|
||
|
||
PASS Tests\Unit\Services\Security\Pbkdf2HasherTest
|
||
✓ hash and verify 0.94s
|
||
|
||
PASS Tests\Unit\Services\Semesters\SemesterConfigServiceTest
|
||
✓ reads dates from configuration 0.01s
|
||
|
||
PASS Tests\Unit\Services\Semesters\SemesterRangeServiceTest
|
||
✓ get school year range falls back when config missing 0.01s
|
||
✓ get semester for date uses config dates 0.02s
|
||
✓ normalize semester 0.01s
|
||
|
||
PASS Tests\Unit\Services\Settings\ConfigurationServiceTest
|
||
✓ store creates config 0.01s
|
||
|
||
PASS Tests\Unit\Services\Settings\SchoolCalendar\SchoolCalendarContextServiceTest
|
||
✓ event types returns list 0.02s
|
||
|
||
PASS Tests\Unit\Services\Settings\SchoolCalendar\SchoolCalendarFormatterServiceTest
|
||
✓ format event sets background for no school 0.01s
|
||
✓ format event normalizes iso dates to plain calendar date 0.01s
|
||
|
||
PASS Tests\Unit\Services\Settings\SchoolCalendar\SchoolCalendarMeetingServiceTest
|
||
✓ list meetings filters for parent 0.02s
|
||
|
||
FAIL Tests\Unit\Services\Settings\SchoolCalendar\SchoolCalendarMutationServiceTest
|
||
✓ create persists event 0.01s
|
||
⨯ update persists changes 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Settings\SchoolCalendar\SchoolCalendarNotificationServiceTest
|
||
⨯ notify returns empty when no targets 0.02s
|
||
|
||
PASS Tests\Unit\Services\Settings\SchoolCalendar\SchoolCalendarQueryServiceTest
|
||
✓ list events filters by school year 0.01s
|
||
✓ filter events for audience limits visibility 0.01s
|
||
|
||
PASS Tests\Unit\Services\Settings\SettingsServiceTest
|
||
✓ update persists settings 0.02s
|
||
|
||
PASS Tests\Unit\Services\Staff\StaffCommandServiceTest
|
||
✓ create requires user 0.01s
|
||
✓ create with user id 0.01s
|
||
|
||
PASS Tests\Unit\Services\Staff\StaffQueryServiceTest
|
||
✓ paginate returns staff 0.02s
|
||
|
||
PASS Tests\Unit\Services\Staff\StaffTimeOffLinkServiceTest
|
||
✓ token round trip 0.02s
|
||
✓ token invalid on expiry 2.02s
|
||
|
||
PASS Tests\Unit\Services\Students\StudentAssignmentServiceTest
|
||
✓ assign creates student class rows 0.03s
|
||
✓ remove deletes assignment 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Students\StudentProfileServiceTest
|
||
⨯ update student saves allergies 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Students\StudentScoreCardServiceTest
|
||
⨯ score card returns rows and comments 0.02s
|
||
|
||
PASS Tests\Unit\Services\Subjects\SubjectCurriculumServiceTest
|
||
✓ store creates entry 0.01s
|
||
✓ update changes title 0.01s
|
||
|
||
PASS Tests\Unit\Services\Support\ContactMessageServiceTest
|
||
✓ send returns payload 0.02s
|
||
|
||
PASS Tests\Unit\Services\Support\SupportRequestServiceTest
|
||
✓ create persists request 0.02s
|
||
|
||
PASS Tests\Unit\Services\System\CleanupSchedulerServiceTest
|
||
✓ should run when no cache 0.01s
|
||
✓ mark run sets cache 0.02s
|
||
✓ run unverified cleanup calls artisan 0.01s
|
||
|
||
PASS Tests\Unit\Services\System\ConfigUpdateServiceTest
|
||
✓ run task rejects unknown task 0.01s
|
||
✓ run task sets config when forced 0.02s
|
||
|
||
PASS Tests\Unit\Services\System\GlobalConfigServiceTest
|
||
✓ get semester and school year 0.01s
|
||
|
||
PASS Tests\Unit\Services\System\HealthCheckServiceTest
|
||
✓ check returns payload 0.01s
|
||
|
||
PASS Tests\Unit\Services\System\TimeServiceTest
|
||
✓ to utc and to local round trip 0.02s
|
||
|
||
FAIL Tests\Unit\Services\Teachers\TeacherAbsenceServiceTest
|
||
⨯ form data returns available dates 0.02s
|
||
⨯ submit creates staff attendance 0.01s
|
||
|
||
PASS Tests\Unit\Services\Teachers\TeacherAssignmentServiceTest
|
||
✓ assign creates teacher class row 0.02s
|
||
✓ delete removes assignment 0.02s
|
||
|
||
PASS Tests\Unit\Services\Teachers\TeacherDashboardServiceTest
|
||
✓ class view returns students 0.02s
|
||
|
||
PASS Tests\Unit\Services\TrophyReportServiceTest
|
||
✓ calculate threshold enforces minimum of three winners 0.02s
|
||
✓ projection marks students without fall scores as not projected 0.02s
|
||
✓ final report classifies confirmed surprise and missed winners 0.02s
|
||
|
||
PASS Tests\Unit\Services\Ui\UiStyleServiceTest
|
||
✓ update creates preferences 0.02s
|
||
|
||
PASS Tests\Unit\Services\Users\DeleteUnverifiedUserServiceTest
|
||
✓ delete after timeout deletes user 0.01s
|
||
✓ delete after timeout skips recent user 0.01s
|
||
|
||
PASS Tests\Unit\Services\Users\InactiveUserCleanupServiceTest
|
||
✓ cleanup removes inactive users and roles 0.02s
|
||
|
||
PASS Tests\Unit\Services\Users\LoginActivityServiceTest
|
||
✓ list returns paginated payload 0.01s
|
||
|
||
PASS Tests\Unit\Services\Users\UserEventServiceTest
|
||
✓ handle new account sends email 0.01s
|
||
✓ handle new account requires email 0.02s
|
||
|
||
PASS Tests\Unit\Services\Users\UserListServiceTest
|
||
✓ list includes roles and second parent flag 0.02s
|
||
|
||
PASS Tests\Unit\Services\Users\UserManagementServiceTest
|
||
✓ create persists user and role and sends welcome 0.02s
|
||
✓ update changes user fields 0.02s
|
||
✓ delete removes user and roles 0.01s
|
||
|
||
PASS Tests\Unit\Services\Whatsapp\WhatsappContactServiceTest
|
||
✓ list parent contacts returns primary and second 0.02s
|
||
|
||
PASS Tests\Unit\Services\Whatsapp\WhatsappContextServiceTest
|
||
✓ school year aliases generate expected values 0.02s
|
||
✓ has roster for year 0.01s
|
||
|
||
PASS Tests\Unit\Services\Whatsapp\WhatsappInviteBundleServiceTest
|
||
✓ bundle for parent returns links and emails 0.02s
|
||
✓ consolidate bundles merges by parent 0.02s
|
||
|
||
PASS Tests\Unit\Services\Whatsapp\WhatsappInviteEmailServiceTest
|
||
✓ send requires recipients 0.01s
|
||
✓ send dispatches email 0.01s
|
||
|
||
FAIL Tests\Unit\Services\Whatsapp\WhatsappInviteNotificationServiceTest
|
||
⨯ dispatch returns error when no listeners 0.02s
|
||
✓ dispatch triggers event when listener registered 0.03s
|
||
|
||
PASS Tests\Unit\Services\Whatsapp\WhatsappInviteServiceTest
|
||
✓ send returns success for parent mode 0.02s
|
||
|
||
PASS Tests\Unit\Services\Whatsapp\WhatsappLinkServiceTest
|
||
✓ upsert creates link 0.02s
|
||
✓ paginate filters by active 0.01s
|
||
|
||
PASS Tests\Unit\Services\Whatsapp\WhatsappMembershipServiceTest
|
||
✓ update membership saves primary 0.01s
|
||
✓ update membership returns error when table missing 0.02s
|
||
|
||
PASS Tests\Feature\Api\ApiAttendanceTemplateFeatureTest
|
||
✓ attendance comment templates can be managed through current api 0.03s
|
||
✓ attendance comment template validation blocks bad ranges 0.02s
|
||
✓ legacy attendance template aliases still work 0.03s
|
||
|
||
FAIL Tests\Feature\Api\ApiAuthenticationAndAuthorizationTest
|
||
✓ api login returns token and user object 0.03s
|
||
✓ session login also returns token and user object for spa clients 0.03s
|
||
✓ auth me requires authentication 0.02s
|
||
✓ auth me returns the current authenticated user 0.02s
|
||
⨯ admin only routes reject non admin users 0.03s
|
||
✓ protected api routes reject anonymous requests before business logi… 0.14s
|
||
|
||
PASS Tests\Feature\Api\ApiPreferencesFeatureTest
|
||
✓ authenticated user can create read update and delete preferences 0.03s
|
||
✓ non admin cannot list or manage another users preferences 0.03s
|
||
✓ admin can list and delete any users preferences 0.03s
|
||
✓ preferences validation rejects invalid options 0.02s
|
||
|
||
PASS Tests\Feature\Api\ApiPublicEndpointsTest
|
||
✓ health endpoint is available 0.01s
|
||
✓ public policy endpoints are available 0.02s
|
||
✓ public static pages are available 0.01s
|
||
✓ public frontend content endpoints do not server error 0.01s
|
||
✓ registration captcha endpoint returns captcha payload 0.02s
|
||
✓ invalid login payload is rejected cleanly 0.01s
|
||
|
||
PASS Tests\Feature\Api\ApiRolePermissionFeatureTest
|
||
✓ admin can manage roles permissions and assign roles 0.04s
|
||
✓ role permission validation rejects bad payloads 0.02s
|
||
|
||
FAIL Tests\Feature\Api\ApiRouteContractTest
|
||
⨯ every api route points to an existing controller method 0.01s
|
||
✓ api routes do not duplicate method and uri pairs 0.02s
|
||
✓ mutating api routes are protected unless explicitly public 0.06s
|
||
|
||
PASS Tests\Feature\Api\ApiUseCaseCoverageMatrixTest
|
||
✓ every api route is mapped to an explicit use case domain 0.01s
|
||
✓ required use case domains have route coverage 0.01s
|
||
✓ every protected api route rejects anonymous requests 0.20s
|
||
|
||
PASS Tests\Feature\Api\ApiUserManagementFeatureTest
|
||
✓ admin can create list update and delete a user through api 0.04s
|
||
✓ user creation validates required payload and unique email 0.02s
|
||
✓ user creation rejects nonexistent role id 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Admin\AdministratorAbsenceControllerTest
|
||
✓ guest cannot access absence index 0.01s
|
||
✓ authenticated user can get absence index 0.02s
|
||
✓ absence store requires reason 0.01s
|
||
✓ absence store requires valid date format 0.01s
|
||
✓ absence store calls service and returns success 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Administrator\AdministratorDashboardControllerTest
|
||
✓ metrics require authentication 0.01s
|
||
✓ metrics are forbidden for non admin users 0.02s
|
||
✓ metrics return payload for admin 0.02s
|
||
✓ user search passes query to service 0.02s
|
||
|
||
PASS Tests\Feature\Api\Administrator\AdministratorEnrollmentControllerTest
|
||
✓ guest cannot update enrollment statuses 0.02s
|
||
✓ can fetch enrollment withdrawal data 0.02s
|
||
✓ can fetch new students 0.01s
|
||
✓ update statuses requires valid status values 0.01s
|
||
✓ update statuses calls service 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Admin\AdministratorEnrollmentQueryApiTest
|
||
✓ enrollment withdrawal endpoint returns students classes and years 0.02s
|
||
✓ new students endpoint returns transformed rows 0.02s
|
||
|
||
PASS Tests\Feature\Api\Administrator\AdministratorEnrollmentUpdateStatusesApiTest
|
||
✓ update statuses requires enrollment status payload 0.02s
|
||
✓ update statuses rejects invalid status value 0.02s
|
||
✓ update statuses creates new enrollment row 0.02s
|
||
✓ update statuses updates existing enrollment row 0.03s
|
||
✓ update statuses creates or updates refund when status is refund pen… 0.02s
|
||
✓ update statuses returns partial success when some students are inva… 0.02s
|
||
|
||
PASS Tests\Feature\Api\Administrator\AdministratorNotificationControllerTest
|
||
✓ can get alerts data 0.02s
|
||
✓ save alerts requires subjects payload 0.01s
|
||
✓ save alerts calls subject service 0.01s
|
||
✓ can get print recipients data 0.02s
|
||
✓ save print recipients requires notify payload 0.01s
|
||
✓ save print recipients calls service 0.01s
|
||
|
||
PASS Tests\Feature\Api\Administrator\AdministratorTeacherSubmissionControllerTest
|
||
✓ can get teacher submission report 0.02s
|
||
✓ notify requires notify payload 0.02s
|
||
✓ notify calls service 0.01s
|
||
|
||
PASS Tests\Feature\Api\Administrator\AdministratorTeacherSubmissionNotifyApiTest
|
||
✓ notify endpoint requires notify payload 0.02s
|
||
✓ notify endpoint sends email and creates history row 0.02s
|
||
✓ notify endpoint marks failed when teacher email is invalid 0.02s
|
||
✓ notify endpoint accepts flat teacher ids from spa payload 0.02s
|
||
✓ notify endpoint accepts flat teacher ids when teacher class has no… 0.02s
|
||
|
||
PASS Tests\Feature\Api\Administrator\AdministratorTeacherSubmissionReportApiTest
|
||
✓ teacher submission report endpoint returns rows summary and history 0.03s
|
||
✓ teacher submission report returns no students status for empty sect… 0.02s
|
||
✓ teacher submission report handles teacher class without semester co… 0.02s
|
||
✓ teacher submission report limits history to three entries 0.02s
|
||
✓ teacher submission report honors school year and semester query fil… 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Administrator\EmergencyContactControllerTest
|
||
✓ index returns grouped contacts 0.02s
|
||
✓ update changes emergency contact 0.02s
|
||
✓ destroy deletes emergency contact 0.02s
|
||
✓ show returns single contact for parent 0.02s
|
||
✓ update requires matching parent id 0.02s
|
||
✓ destroy requires matching parent id 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Administrator\TeacherClassAssignmentControllerTest
|
||
✓ index returns teachers and classes 0.02s
|
||
✓ store and delete assignment 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Administrator\TrophyControllerTest
|
||
✓ index requires authentication 0.02s
|
||
✓ index is forbidden for non admin users 0.02s
|
||
✓ index returns projection for admin 0.02s
|
||
✓ winners returns data for admin 0.03s
|
||
✓ final returns data for admin 0.02s
|
||
✓ index validates percentile range 0.02s
|
||
|
||
PASS Tests\Feature\Api\AssignmentApiControllerTest
|
||
✓ index returns assignment overview 0.02s
|
||
✓ index filters by school year 0.02s
|
||
✓ index sorts sections by name 0.02s
|
||
✓ index excludes inactive students 0.02s
|
||
✓ store creates new assignment 0.02s
|
||
✓ store updates existing assignment for same unique keys 0.02s
|
||
✓ store validates required fields 0.02s
|
||
✓ store validates foreign keys 0.02s
|
||
✓ class assignment data returns expected structure 0.02s
|
||
✓ class assignment data deduplicates teacher names 0.02s
|
||
|
||
PASS Tests\Feature\Api\AssignmentApiTest
|
||
✓ it returns assignment sections json 0.02s
|
||
✓ it filters assignments by school year 0.02s
|
||
✓ it creates or updates student assignment 0.02s
|
||
✓ it validates required fields when storing assignment 0.01s
|
||
✓ store is idempotent for same student semester and year 0.02s
|
||
✓ guest cannot access assignment api when auth is required 0.01s
|
||
|
||
PASS Tests\Feature\Api\V1\Attendance\LateSlipLogsControllerTest
|
||
✓ index requires admin 0.02s
|
||
✓ index returns logs 0.02s
|
||
✓ show returns log 0.02s
|
||
✓ destroy deletes log 0.02s
|
||
✓ index validation rejects bad dates 0.02s
|
||
|
||
PASS Tests\Feature\Api\AttendanceCommentTemplateApiTest
|
||
✓ can list templates 0.01s
|
||
✓ can list templates active only 0.02s
|
||
✓ can create template 0.01s
|
||
✓ store validation fails when max less than min 0.01s
|
||
✓ can show template 0.02s
|
||
✓ can update template 0.01s
|
||
✓ update validation fails if both scores invalid relation 0.01s
|
||
✓ can delete template 0.02s
|
||
✓ legacy list data endpoint returns templates key 0.01s
|
||
|
||
PASS Tests\Feature\Api\V1\AttendanceTracking\AttendanceTrackingControllerTest
|
||
✓ pending violations returns json response 0.02s
|
||
✓ notified violations returns json response 0.02s
|
||
✓ student case returns service payload 0.01s
|
||
✓ student case returns service status code when not found 0.01s
|
||
✓ record validates and returns service response 0.02s
|
||
✓ record returns validation errors for bad payload 0.01s
|
||
✓ send auto emails returns service response 0.01s
|
||
✓ compose returns service response 0.02s
|
||
✓ send manual email returns service response 0.01s
|
||
✓ send manual email validates payload 0.02s
|
||
✓ parents info returns service response 0.02s
|
||
✓ save notification note returns service response 0.01s
|
||
✓ save notification note validates payload 0.01s
|
||
|
||
PASS Tests\Feature\Api\V1\Auth\IpBanControllerTest
|
||
✓ index requires admin 0.02s
|
||
✓ index returns bans 0.02s
|
||
✓ show returns ban 0.02s
|
||
✓ ban creates block 0.02s
|
||
✓ unban single 0.02s
|
||
✓ unban all 0.02s
|
||
✓ ban validation requires ip or id 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Auth\RegisterControllerTest
|
||
✓ captcha endpoint returns value 0.02s
|
||
✓ register creates user 0.33s
|
||
|
||
PASS Tests\Feature\Api\V1\Auth\RegisterPayloadDebugTest
|
||
✓ debug payload shows json body 0.01s
|
||
|
||
PASS Tests\Feature\Api\BadgeControllerTest
|
||
✓ form data returns success response 0.02s
|
||
✓ print status returns success response 0.02s
|
||
✓ print status returns 500 when service throws 0.02s
|
||
✓ log print returns success response 0.02s
|
||
✓ log print returns 500 when service throws 0.01s
|
||
✓ generate pdf returns pdf response 0.02s
|
||
✓ generate pdf validates required user ids 0.01s
|
||
✓ log print validates required user ids 0.02s
|
||
✓ endpoints require authentication 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\BadgeScan\BadgeScanControllerTest
|
||
✓ scan is public but validates badge value 0.02s
|
||
✓ scan returns 404 for unrecognized badge 0.02s
|
||
✓ logs require authentication 0.01s
|
||
✓ logs are forbidden for non staff roles 0.02s
|
||
✓ logs return data for staff 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\BroadcastEmail\BroadcastEmailControllerTest
|
||
✓ options returns parents and senders 0.02s
|
||
✓ send test only dispatches email 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\ClassPreparation\ClassPreparationControllerTest
|
||
✓ sticker counts returns payload 0.02s
|
||
✓ students by class returns roster 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\ClassProgress\ClassProgressControllerTest
|
||
✓ meta returns sections 0.02s
|
||
✓ index returns paginated reports 0.03s
|
||
✓ store creates reports 0.02s
|
||
✓ show returns weekly reports 0.02s
|
||
✓ update modifies report 0.02s
|
||
✓ destroy deletes report 0.02s
|
||
✓ authorization blocks other teachers 0.02s
|
||
✓ validation rejects invalid payload 0.02s
|
||
✓ attachment download returns file 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Classes\ClassSectionControllerTest
|
||
✓ index returns sections 0.02s
|
||
✓ store requires admin 0.02s
|
||
✓ store creates class section 0.02s
|
||
✓ update requires admin 0.02s
|
||
✓ show returns section 0.02s
|
||
✓ update modifies class section 0.02s
|
||
✓ destroy deletes class section 0.01s
|
||
✓ attendance returns students 0.02s
|
||
✓ seed defaults creates classes 0.02s
|
||
✓ validation rejects invalid payload 0.01s
|
||
|
||
PASS Tests\Feature\Api\V1\Communication\CommunicationControllerTest
|
||
✓ options returns students and templates 0.03s
|
||
✓ preview returns rendered subject and body 0.02s
|
||
✓ send dispatches email 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\CompetitionScores\CompetitionScoresControllerTest
|
||
✓ index returns competitions and counts 0.02s
|
||
✓ edit returns students and scores 0.02s
|
||
✓ save updates scores 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\CompetitionWinners\CompetitionWinnersControllerTest
|
||
✓ index returns admin competitions with ids 0.02s
|
||
✓ lock and unlock toggle competition 0.02s
|
||
✓ export quiz creates quiz rows 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Discounts\DiscountControllerTest
|
||
✓ options returns vouchers and parents 0.03s
|
||
✓ apply voucher applies discount 0.02s
|
||
✓ store voucher creates row 0.02s
|
||
✓ show voucher returns resource 0.02s
|
||
✓ delete voucher removes row 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Email\EmailControllerTest
|
||
✓ senders endpoint returns options 0.02s
|
||
✓ send endpoint uses dispatch service 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Email\EmailExtractorControllerTest
|
||
✓ emails endpoint returns users and parents 0.02s
|
||
✓ legacy emails endpoint returns top level arrays 0.02s
|
||
✓ compare endpoint returns comparison 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Exams\ExamDraftControllerTest
|
||
✓ teacher store creates draft 0.03s
|
||
✓ admin review updates status 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Expenses\ExpenseControllerTest
|
||
✓ options returns staff and retailors 0.02s
|
||
✓ store creates expense 0.02s
|
||
✓ index lists expenses 0.02s
|
||
✓ show returns expense 0.02s
|
||
✓ update status changes status 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\ExtraCharges\ExtraChargesControllerTest
|
||
✓ list returns rows 0.03s
|
||
✓ options returns parent options 0.02s
|
||
✓ parent options returns results 0.02s
|
||
✓ invoices for parent returns results 0.02s
|
||
✓ store creates charge and updates invoice 0.03s
|
||
✓ update adjusts charge 0.02s
|
||
✓ void changes status 0.02s
|
||
✓ reverse changes status 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Family\FamilyAdminControllerTest
|
||
✓ index returns family admin payload 0.02s
|
||
✓ search returns items 0.02s
|
||
✓ card returns family details 0.02s
|
||
✓ compose email returns error on failure 0.02s
|
||
✓ requires authentication 0.01s
|
||
✓ compose email validation fails 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Family\FamilyControllerTest
|
||
✓ families by student returns families 0.02s
|
||
✓ guardians by family returns guardians 0.02s
|
||
✓ bootstrap creates family and links 0.02s
|
||
✓ attach second by user links guardian 0.02s
|
||
✓ attach second by email creates user and links 0.02s
|
||
✓ set primary home updates record 0.02s
|
||
✓ set guardian flags updates record 0.02s
|
||
✓ set guardian flags requires payload 0.02s
|
||
✓ unlink guardian removes record 0.02s
|
||
✓ unlink student removes record 0.02s
|
||
✓ import legacy second parents links guardian 0.02s
|
||
✓ requires authentication 0.02s
|
||
✓ attach second by user validation fails 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Finance\ChargeControllerTest
|
||
✓ list charges for parent 0.02s
|
||
✓ store extra charge returns 409 on duplicate 0.02s
|
||
✓ store event charge creates row 0.02s
|
||
✓ cancel extra charge voids row 0.02s
|
||
✓ charges endpoints require authentication 0.01s
|
||
|
||
PASS Tests\Feature\Api\V1\Finance\EventChargeControllerTest
|
||
✓ show requires authentication 0.02s
|
||
✓ show returns event charge 0.03s
|
||
✓ show returns 404 for unknown charge 0.02s
|
||
✓ update modifies event charge 0.03s
|
||
✓ approve marks charge as charged 0.02s
|
||
✓ void clears charged flag 0.02s
|
||
✓ destroy voids the charge 0.03s
|
||
|
||
PASS Tests\Feature\Api\V1\Finance\FeeCalculationControllerTest
|
||
✓ refund endpoint returns amount 0.02s
|
||
✓ tuition breakdown endpoint returns per student detail 0.02s
|
||
✓ tuition breakdown endpoint requires authentication 0.01s
|
||
✓ tuition breakdown endpoint validates payload 0.02s
|
||
✓ family balance endpoint returns account summary 0.02s
|
||
✓ family balance endpoint requires authentication 0.01s
|
||
✓ tuition total endpoint returns total 0.02s
|
||
✓ refund endpoint requires authentication 0.01s
|
||
✓ tuition total endpoint requires authentication 0.02s
|
||
✓ refund endpoint validates payload 0.02s
|
||
✓ tuition total endpoint validates payload 0.02s
|
||
✓ refund endpoint handles service failure 0.02s
|
||
✓ tuition total endpoint handles service failure 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Finance\FinancialControllerTest
|
||
✓ report returns financial report 0.03s
|
||
✓ summary returns totals 0.02s
|
||
✓ unpaid parents lists balances 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Finance\InvoiceControllerTest
|
||
✓ management returns parent invoice data 0.02s
|
||
✓ generate creates invoice 0.03s
|
||
✓ by parent returns invoices 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Finance\PaymentControllerTest
|
||
✓ store creates payment plan 0.02s
|
||
✓ by parent returns payments 0.02s
|
||
✓ update balance updates payment 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Finance\PaymentEventChargesControllerTest
|
||
✓ store creates event charges 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Finance\PaymentManualControllerTest
|
||
✓ search returns parent data 0.02s
|
||
✓ suggest returns items 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Finance\PaymentNotificationControllerTest
|
||
✓ send creates log 0.02s
|
||
✓ index lists logs 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Finance\PaymentTransactionControllerTest
|
||
✓ store creates transaction 0.02s
|
||
✓ by payment returns transactions 0.02s
|
||
✓ update status updates transaction 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Finance\PaypalTransactionsControllerTest
|
||
✓ index returns transactions 0.02s
|
||
✓ csv download 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Finance\PurchaseOrderControllerTest
|
||
✓ index returns orders 0.02s
|
||
✓ options returns suppliers and supplies 0.02s
|
||
✓ store creates purchase order and items 0.02s
|
||
✓ receive updates inventory 0.02s
|
||
✓ cancel marks purchase order 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Finance\RefundControllerTest
|
||
✓ index requires authentication 0.02s
|
||
✓ index returns paginated refunds 0.02s
|
||
✓ show returns refund 0.02s
|
||
✓ store overpayment creates refund 0.02s
|
||
✓ store validates payload 0.02s
|
||
✓ update approves refund 0.02s
|
||
✓ reject requires reason 0.02s
|
||
✓ record payment updates refund 0.02s
|
||
✓ recalculate overpayments creates refund 0.02s
|
||
✓ destroy cancels refund 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Finance\ReimbursementControllerTest
|
||
✓ create batch creates open batch 0.02s
|
||
✓ mark donation updates expense 0.02s
|
||
✓ store reimbursement creates record and updates expense 0.02s
|
||
✓ update reimbursement updates fields 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Frontend\FrontendControllerTest
|
||
✓ index returns page 0.02s
|
||
✓ fetch user requires auth 0.01s
|
||
✓ fetch user returns profile 0.01s
|
||
|
||
PASS Tests\Feature\Api\V1\Frontend\InfoIconControllerTest
|
||
✓ profile icon returns initials 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Frontend\LandingPageControllerTest
|
||
✓ index returns admin dashboard 0.02s
|
||
✓ teacher dashboard returns summary 0.02s
|
||
✓ parent dashboard returns summary 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Frontend\PageControllerTest
|
||
✓ privacy returns content 0.01s
|
||
✓ help missing returns error 0.01s
|
||
✓ submit contact persists 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiAcademicAttendanceFullSurfaceContractTest
|
||
✓ academic attendance and grading surfaces have controlled contracts 0.18s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiAccountStatusLifecycleContractTest
|
||
✓ suspended disabled and pending status values do not gain access thr… 0.15s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiAdminOperationsFullSurfaceContractTest
|
||
✓ administrator operational surface responds with controlled contract… 0.16s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiAttachmentUploadContentSafetyContractTest
|
||
✓ upload endpoints reject executable or misleading files cleanly 0.08s
|
||
✓ download and file response routes do not allow path traversal param… 0.07s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiAuditLogAndAdministrativeTraceabilityContractTest
|
||
✓ admin mutations return traceable status without exposing internal l… 0.18s
|
||
✓ audit and log routes are not mutable by public or low privilege use… 0.26s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiAuthenticationLifecycleDepthContractTest
|
||
✓ authentication lifecycle handles login me refresh logout and invali… 0.08s
|
||
✓ password reset and registration like routes do not leak account exi… 0.05s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiAuthorizationCacheInvalidationContractTest
|
||
⨯ role and permission mutations do not make low privilege actor admin… 0.06s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch11RouteRegressionNetTest
|
||
✓ every api family has at least one negative contract probe in batch… 0.05s
|
||
✓ batch 11 high risk routes return controlled responses under combine… 0.21s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch12AcademicGradeBoundaryContractTest
|
||
✓ grade and score routes reject out of range and wrong student contex… 0.20s
|
||
✓ locked or finalized grade routes do not accept low privilege overri… 0.06s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch12AttachmentLifecycleContractTest
|
||
✓ attachment upload routes handle multiple file shapes cleanly 0.06s
|
||
✓ file download routes reject path and storage driver probing 0.08s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch12AttendanceCorrectionAuditContractTest
|
||
✓ attendance corrections require valid actor date status and reason 0.20s
|
||
✓ parent and student cannot correct attendance records 0.10s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiBatch12BulkMutationBoundaryContractTest
|
||
⨯ bulk mutation routes reject empty and cross domain targets cleanly 0.08s
|
||
✓ bulk routes do not accept unbounded target lists 0.12s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch12CombinedRegressionSweepTest
|
||
✓ batch 12 combined security business rule and contract probe 0.26s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch12ConsistencyUnderPartialPayloadContractTest
|
||
✓ patch routes do not null identity or ownership when optional fields… 0.06s
|
||
✓ post routes handle sparse payloads as validation not crashes 0.13s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch12CrossActorDataLeakageContractTest
|
||
✓ parent teacher and student scoped reads do not leak admin only fiel… 0.32s
|
||
✓ actor cannot select a different owner scope with query parameters 0.12s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch12FinancialLedgerIntegrityContractTest
|
||
✓ financial mutations reject ledger breaking amounts and cross invoic… 0.44s
|
||
✓ parent cannot force finance scope to all families 0.34s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch12GuardianDelegationExpirationContractTest
|
||
✓ guardian and authorized user routes validate expiration relationshi… 0.10s
|
||
✓ student cannot manage guardians or authorized users 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch12LongRunningExportJobContractTest
|
||
✓ export report and generation routes handle async parameters without… 0.14s
|
||
✓ low privilege users cannot request full school exports 0.09s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch12MaintenanceModeAndOperationalControlContractTest
|
||
✓ operational control routes are admin only and controlled 0.07s
|
||
✓ public requests cannot toggle system state 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch12RouteMetadataRiskRegisterTest
|
||
✓ high risk route families exist in the contract risk register 0.05s
|
||
✓ mutating high risk routes have specific route names when available 0.04s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch12SearchEnumerationResistanceContractTest
|
||
✓ search autocomplete and lookup routes resist identifier enumeration 0.37s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch12SensitiveConfigurationExposureContractTest
|
||
✓ configuration and bootstrap responses do not expose secrets 0.07s
|
||
✓ low privilege users cannot read sensitive configuration domains 0.08s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch12WebhookProviderMatrixContractTest
|
||
✓ provider callbacks reject missing mismatched and replayed signature… 0.08s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch13AccountRecoveryCredentialChangeContractTest
|
||
✓ password reset and credential routes do not leak user existence or… 0.05s
|
||
✓ low privilege users cannot change other users credentials 0.06s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch13ApiPaginationPerformanceGuardContractTest
|
||
✓ list routes cap unbounded pagination and include requests 0.12s
|
||
✓ search routes handle unicode and extreme terms without leaking sql 0.10s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch13ContactMessagingAbuseModerationContractTest
|
||
✓ message and contact routes handle spam headers and html payloads 0.11s
|
||
✓ broadcast routes remain admin only under channel spoofing 0.08s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch13DiscountVoucherScholarshipAbuseContractTest
|
||
✓ discount and voucher routes reject abusive amounts and scope overri… 0.06s
|
||
✓ parent cannot self grant discounts or scholarships 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch13FullSurfaceRegressionSuperSweepTest
|
||
✓ batch13 super sweep keeps major route families under controlled fai… 0.23s
|
||
✓ batch13 major mutation families are represented 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch13InventoryProcurementReceivingIntegrityContractTest
|
||
✓ inventory receiving routes reject negative or impossible stock move… 0.07s
|
||
✓ non admins cannot adjust inventory or procurement state 0.11s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiBatch13LocaleCalendarReligiousDateContractTest
|
||
⨯ calendar and event routes handle locale specific dates cleanly 0.07s
|
||
✓ attendance and academic routes reject out of term religious calenda… 0.10s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch13MobileOfflineSyncConflictContractTest
|
||
✓ offline sync headers do not override authorization or state 0.13s
|
||
✓ duplicate offline submissions have controlled outcome 0.26s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch13ObservableErrorCorrelationContractTest
|
||
✓ malformed requests preserve safe error correlation without reflecti… 0.07s
|
||
✓ error responses do not disclose controller or model stack details 0.11s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch13ParentPortalInvoicePrivacyContractTest
|
||
✓ parent finance queries cannot request all families or other parent… 0.21s
|
||
✓ parent cannot mark invoice paid or refunded directly 0.26s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch13PaymentProviderLedgerReconciliationContractTest
|
||
✓ payment provider payloads do not bypass ledger validation 0.27s
|
||
✓ duplicate provider reference is controlled across payment routes 0.29s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch13ReportCardTranscriptCertificateForgeryContractTest
|
||
✓ document generation rejects forged finalization and signer payloads 0.26s
|
||
✓ students and parents cannot generate admin documents for other stud… 0.11s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch13RolePermissionMutationRaceContractTest
|
||
✓ permission mutations reject wildcards and recursive assignments 0.06s
|
||
✓ non admin cannot gain permission by replaying role payload 0.09s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch13StaffHrPayrollBoundaryContractTest
|
||
✓ staff and payroll routes redact sensitive personnel fields 0.11s
|
||
✓ low privilege users cannot mutate staff or payroll routes 0.06s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch13StudentEnrollmentLifecycleIntegrityContractTest
|
||
✓ enrollment routes reject cross family and cross class payloads clea… 0.08s
|
||
✓ parent cannot self enroll or move student into arbitrary class 0.07s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch13TeacherRosterAndAssignmentBoundaryContractTest
|
||
✓ teacher roster routes ignore forced teacher and class scope overrid… 0.25s
|
||
✓ unassigned teacher mutations are denied or validated 0.11s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiBatch14AcademicPromotionRollbackIntegrityContractTest
|
||
⨯ promotion and school year routes reject unsafe rollback payloads 0.10s
|
||
✓ low privilege actors cannot close reopen or promote school years 0.07s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch14AccountEnumerationAndIdentityPrivacyContractTest
|
||
✓ identity recovery routes do not reveal whether user exists 0.05s
|
||
✓ identity payloads do not leak internal auth fields 0.08s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch14AdminDelegationApprovalWorkflowContractTest
|
||
✓ approval and delegation routes reject forged approval metadata 0.08s
|
||
✓ low privilege users cannot self approve or delegate privileges 0.09s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch14ApiConsumerContractCompatibilityTest
|
||
✓ core identity contracts remain compatible for web mobile and api cl… 0.13s
|
||
✓ successful login like responses keep token and user contract when p… 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch14AttendanceDeviceAndKioskAbuseContractTest
|
||
✓ kiosk scanner and attendance routes reject forged device identity 0.11s
|
||
✓ student and parent cannot self mark attendance through device paylo… 0.06s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch14AuditTrailTamperResistanceContractTest
|
||
✓ audit and log routes reject client supplied actor and timestamp fie… 0.09s
|
||
✓ non admin users cannot clear or rewrite audit history 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch14BulkAssignmentCollisionContractTest
|
||
✓ bulk assignment routes handle duplicate and conflicting ids cleanly 0.07s
|
||
✓ parent and student cannot force bulk assignment scope 0.07s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch14CrossModuleInvariantRiskRegisterTest
|
||
✓ batch14 route families have cross module risk coverage 0.05s
|
||
✓ batch14 high risk mutation families exist 0.04s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiBatch14DataLifecycleArchivePurgeContractTest
|
||
⨯ archive purge and retention routes require safe controlled requests 0.05s
|
||
✓ non admin users cannot purge or restore global records 0.06s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch14FinanceReconciliationAndRefundAbuseContractTest
|
||
✓ finance reconciliation routes reject mismatched invoice parent and… 0.13s
|
||
✓ parent cannot self refund or self reconcile 0.07s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch14NotificationTemplateInjectionContractTest
|
||
✓ notification and template routes reject template injection payloads 0.08s
|
||
✓ non admin users cannot broadcast by template override 0.09s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch14PrintExportTamperingContractTest
|
||
✓ print export and document generation routes reject tampered scope f… 0.10s
|
||
✓ low privilege users cannot generate full school exports 0.12s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch14RegressionMegaSweepTest
|
||
✓ batch14 mega sweep keeps new risk payloads under controlled failure 0.23s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch14RelationshipOwnershipMatrixExpansionTest
|
||
✓ relationship owner override fields are not trusted across route fam… 0.09s
|
||
✓ student user cannot read or write other relationship graphs 0.09s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch14SessionCookieCsrfBoundaryContractTest
|
||
✓ api auth routes do not depend on browser session cookies 0.09s
|
||
✓ browser only session headers do not grant api privileges 0.06s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch14StoragePathAndSignedUrlContractTest
|
||
✓ file and signed url routes reject path and disk overrides 0.08s
|
||
✓ public file routes do not honor expired or forged signature paramet… 0.05s
|
||
|
||
WARN Tests\Feature\Api\V1\FullSurface\ApiBatch15AdminImpersonationSessionBoundaryContractTest
|
||
! batch15 impersonation and acting as routes require real admin conte… 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch15AuthTokenRotationAndRevocationContractTest
|
||
✓ batch15 token rotation revocation and identity routes do not accept… 0.10s
|
||
✓ batch15 repeat logout and refresh replay are controlled 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch15BackgroundCommandAndSchedulerContractTest
|
||
✓ batch15 command scheduler and job trigger routes are admin only and… 0.08s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch15ConsentPrivacyAndDataSubjectRightsContractTest
|
||
✓ batch15 privacy consent erasure and export routes are admin or owne… 0.05s
|
||
✓ batch15 student actor cannot request family wide or school wide pri… 0.08s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch15CrossSchoolIdentityCollisionContractTest
|
||
✓ batch15 duplicate external identifiers and cross school aliases fai… 0.06s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch15DataResidencyBackupAndRestoreContractTest
|
||
✓ batch15 backup restore residency and snapshot routes do not expose… 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch15DomainEventOutboxAndNotificationConsistencyContractTest
|
||
✓ batch15 event outbox and notification trigger routes reject forged… 0.10s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch15FeatureFlagExperimentAndRolloutContractTest
|
||
✓ batch15 feature flag and rollout routes reject low privilege overri… 0.09s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch15FormRequestAuthorizationCoverageContractTest
|
||
✓ batch15 mutating routes do not allow public or low privilege form r… 0.09s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch15GlobalSearchAndDirectoryEnumerationContractTest
|
||
✓ batch15 global search directory and lookup routes resist enumeratio… 0.19s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch15LocalizationContentDirectionAndEncodingContractTest
|
||
✓ batch15 rtl unicode and encoding payloads remain controlled across… 0.06s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch15MetadataFilteringAndSparseFieldsetSecurityContractTest
|
||
✓ batch15 sparse fieldsets metadata and embeds do not reveal sensitiv… 0.09s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch15RateLimitAndAbusePatternContractTest
|
||
✓ batch15 repeated sensitive requests return controlled responses wit… 0.13s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch15RegressionUltraSweepTest
|
||
✓ batch15 ultra sweep keeps cross domain hostile payloads under contr… 0.24s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch15ReportDrilldownAndAggregatePrivacyContractTest
|
||
✓ batch15 report drilldown filters do not allow scope escape or sensi… 0.14s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch15RouteParameterPoisoningExpansionTest
|
||
✓ batch15 route parameters reject encoded path script and type confus… 0.09s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch15StudentSafetyIncidentEscalationContractTest
|
||
✓ batch15 safety incident escalation routes are not mutable by parent… 0.14s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch16AccessibilityAndClientHintsContractTest
|
||
✓ batch16 client hints accessibility headers and locale variants do n… 0.12s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch16AdaptivePublicEndpointAbuseContractTest
|
||
✓ batch16 public endpoints ignore identity spoofing and privileged qu… 0.08s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch16DeviceTrustAndScannerReplayContractTest
|
||
✓ batch16 kiosk scanner and device routes do not trust client asserte… 0.13s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch16EmergencyContactAndPickupSafetyContractTest
|
||
✓ batch16 pickup guardian and emergency contact routes reject wrong f… 0.08s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch16EventualConsistencyAndRetryContractTest
|
||
✓ batch16 retry headers and client operation ids are scoped per actor… 0.11s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch16ImportPreviewCommitSeparationContractTest
|
||
✓ batch16 import preview payloads cannot force commit or skip validat… 0.10s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch16MoneyPrecisionCurrencyContractTest
|
||
✓ batch16 money routes reject precision currency and rounding abuse c… 0.35s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch16MultiStepWorkflowCompensationContractTest
|
||
✓ batch16 multi step school operations fail safely when later steps a… 0.10s
|
||
✓ batch16 compensation flags cannot be user supplied by low privilege… 0.08s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch16NotificationDeliverySuppressionContractTest
|
||
✓ batch16 notification suppression and delivery flags cannot be overr… 0.09s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch16OptimisticLockingAndVersionFieldContractTest
|
||
✓ batch16 version and lock fields cannot be forged to override newer… 0.07s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch16PermissionDriftDetectionContractTest
|
||
✓ batch16 permission names and route families do not drift into ungua… 0.07s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch16ReadModelProjectionConsistencyContractTest
|
||
✓ batch16 summary dashboard and projection routes resist privileged i… 0.10s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch16RegressionHyperSweepTest
|
||
✓ batch16 hyper sweep applies cross cutting hostile payloads to high… 0.19s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch16RouteGraphInvariantRegisterTest
|
||
✓ batch16 route graph has contract pressure for new risk families 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch16SchemaEvolutionDeprecationContractTest
|
||
✓ batch16 deprecated aliases remain controlled and do not return inco… 0.09s
|
||
✓ batch16 removed or deprecated fields are not required for current c… 0.07s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiBatch16TemporalConsistencyAndClockSkewContractTest
|
||
⨯ batch16 clock skew and temporal boundaries do not bypass business r… 0.29s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch17AcademicPrerequisiteAndDependencyContractTest
|
||
✓ academic actions do not skip required prerequisites or locks 0.09s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch17ApiContractDiffAndCriticalKeyRegisterTest
|
||
✓ critical identity finance attendance and academic payloads keep con… 0.11s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch17AttendanceTamperWindowContractTest
|
||
✓ attendance cutoff backdate future and reason requirements are contr… 0.15s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch17CommunicationRecipientExpansionContractTest
|
||
✓ message broadcast and notification recipient scope cannot be expand… 0.09s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch17DataLineageAndSourceAttributionContractTest
|
||
✓ client supplied lineage and audit source fields are not authoritati… 0.08s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch17ExportColumnLevelSecurityContractTest
|
||
✓ export field selection cannot request secrets or cross scope column… 0.11s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch17ExternalIdAndNaturalKeyCollisionContractTest
|
||
✓ external ids student numbers and emails are not cross domain author… 0.10s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch17FinancialPeriodCloseAndAdjustmentContractTest
|
||
✓ closed period adjustments writeoffs and credit transfers are guarde… 0.12s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch17InventoryAssetCustodyContractTest
|
||
✓ inventory asset custody transfers and disposal are not client autho… 0.07s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch17MultiGuardBoundaryContractTest
|
||
✓ api guard boundaries are not crossed by session or web identity 0.11s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch17PartialFailureErrorDetailRedactionContractTest
|
||
✓ bulk partial failure details are actionable without leaking databas… 0.08s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch17PerResourceRateLimitIdentityContractTest
|
||
✓ repeated sensitive actions are scoped by actor resource and operati… 0.16s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch17RegressionOmegaSweepTest
|
||
✓ batch17 omega sweep combines headers payloads queries and route par… 0.08s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch17SearchRankingAndPermissionFilterContractTest
|
||
✓ search autocomplete and lookup do not bypass permission filters 0.19s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch17StudentIdentityMergeSplitContractTest
|
||
✓ merge split and duplicate student identity routes reject unsafe pay… 0.07s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch17ZeroTrustInternalHeaderContractTest
|
||
✓ internal proxy and service headers do not grant privilege 0.10s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch18ApiKeyServiceAccountAndMachineIdentityContractTest
|
||
✓ batch18 apikeyserviceaccountandmachineidentity stays controlled 0.12s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch18CanonicalIdentifierImmutabilityContractTest
|
||
✓ batch18 canonicalidentifierimmutability stays controlled 0.17s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch18ClassCapacityWaitlistAndScheduleConflictContractTest
|
||
✓ batch18 classcapacitywaitlistandscheduleconflict stays controlled 0.18s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch18ConsentRevocationAndCommunicationComplianceContractTest
|
||
✓ batch18 consentrevocationandcommunicationcompliance stays controlle… 0.14s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch18CrossModuleBusinessInvariantRegisterTest
|
||
✓ batch18 business invariant route families remain present 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch18ExportWatermarkAndAuditabilityContractTest
|
||
✓ batch18 exportwatermarkandauditability stays controlled 0.12s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch18FeatureEntitlementAndLicenseBoundaryContractTest
|
||
✓ batch18 featureentitlementandlicenseboundary stays controlled 0.18s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch18FileVirusScanAndQuarantineContractTest
|
||
✓ batch18 filevirusscanandquarantine stays controlled 0.09s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch18FinanceChargebackDisputeContractTest
|
||
✓ batch18 financechargebackdispute stays controlled 0.09s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiBatch18OrphanedRecordAndCascadeBoundaryContractTest
|
||
⨯ batch18 orphanedrecordandcascadeboundary stays controlled 0.24s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch18PrivilegeBoundaryAfterRoleMutationContractTest
|
||
✓ batch18 privilegeboundaryafterrolemutation stays controlled 0.12s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch18RegressionFinalitySweepTest
|
||
✓ batch18 combined hostile payload sweep stays controlled 0.20s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch18ReportDrillthroughAndRowLevelSecurityContractTest
|
||
✓ batch18 reportdrillthroughandrowlevelsecurity stays controlled 0.10s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch18StudentMedicalAndSafetyDataMinimizationContractTest
|
||
✓ batch18 studentmedicalandsafetydataminimization stays controlled 0.15s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiBatch18TemporalAuditAndTimezoneForgeryContractTest
|
||
⨯ batch18 temporalauditandtimezoneforgery stays controlled 0.10s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch18TwoPersonApprovalAndSegregationContractTest
|
||
✓ batch18 twopersonapprovalandsegregation stays controlled 0.14s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch18WebhookOrderingAndOutOfSequenceContractTest
|
||
✓ batch18 webhookorderingandoutofsequence stays controlled 0.06s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch19AggregateDashboardScopeContractTest
|
||
✓ batch19 aggregate dashboard scope stays controlled 0.18s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch19AppendOnlyAuditLedgerContractTest
|
||
✓ batch19 append only audit ledger stays controlled 0.19s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch19AttendanceExcuseDocumentLifecycleContractTest
|
||
✓ batch19 attendance excuse document lifecycle stays controlled 0.34s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch19AttributeBasedAccessConditionContractTest
|
||
✓ batch19 attribute based access condition stays controlled 0.13s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch19BackupRestoreIsolationContractTest
|
||
✓ batch19 backup restore isolation stays controlled 0.08s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch19ClassTransferTranscriptContinuityContractTest
|
||
✓ batch19 class transfer transcript continuity stays controlled 0.18s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch19CommunicationBounceAndSuppressionWebhookContractTest
|
||
✓ batch19 communication bounce and suppression webhook stays controll… 0.16s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch19CustodyRestrictionPickupAuthorizationContractTest
|
||
✓ batch19 custody restriction pickup authorization stays controlled 0.18s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch19NestedRelationshipRedactionContractTest
|
||
✓ batch19 nested relationship redaction stays controlled 0.17s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch19OperationalAndPrivacyInvariantRegisterTest
|
||
✓ batch19 operational and privacy route families remain present 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch19PaymentAllocationAndBalanceContractTest
|
||
✓ batch19 payment allocation and balance stays controlled 0.18s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch19RefundMethodAndSettlementBoundaryContractTest
|
||
✓ batch19 refund method and settlement boundary stays controlled 0.30s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch19RegressionContinuitySweepTest
|
||
✓ batch19 continuity and privacy sweep stays controlled 0.42s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch19ReportCacheInvalidationContractTest
|
||
✓ batch19 report cache invalidation stays controlled 0.18s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch19RevokedDeletedUserTokenBoundaryContractTest
|
||
✓ batch19 revoked deleted user token boundary stays controlled 0.17s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch19TeacherSubstitutionCoverageContractTest
|
||
✓ batch19 teacher substitution coverage stays controlled 0.21s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch19TemporaryUrlExpirationRevocationContractTest
|
||
✓ batch19 temporary url expiration revocation stays controlled 0.09s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch19ThirdPartySyncCanonicalizationContractTest
|
||
✓ batch19 third party sync canonicalization stays controlled 0.17s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch20AdminAuditExportRedactionContractTest
|
||
✓ batch20 admin audit export redaction stays controlled 0.14s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch20ApiSunsetDeprecationAndCompatibilityContractTest
|
||
✓ batch20 api sunset deprecation and compatibility stays controlled 0.14s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch20AttendanceGeofenceAndDeviceTrustContractTest
|
||
✓ batch20 attendance geofence and device trust stays controlled 0.13s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch20CashDrawerManualPaymentIntegrityContractTest
|
||
✓ batch20 cash drawer manual payment integrity stays controlled 0.20s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch20ClassCapacityLotteryAndWaitlistContractTest
|
||
✓ batch20 class capacity lottery and waitlist stays controlled 0.37s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch20ContinuityComplianceRiskRegisterTest
|
||
✓ batch20 continuity and compliance route families remain visible 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch20DataWarehouseAnalyticsExportContractTest
|
||
✓ batch20 data warehouse analytics export stays controlled 0.20s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch20EmergencyClosureBroadcastContractTest
|
||
✓ batch20 emergency closure broadcast stays controlled 0.14s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch20GradebookLockAndAmendmentContractTest
|
||
✓ batch20 gradebook lock and amendment stays controlled 0.21s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiBatch20LegalHoldRetentionAndPurgeConflictContractTest
|
||
⨯ batch20 legal hold retention and purge conflict stays controlled 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch20MultilingualContentAndTranslationContractTest
|
||
✓ batch20 multilingual content and translation stays controlled 0.11s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch20NotificationDeadLetterAndRetryContractTest
|
||
✓ batch20 notification dead letter and retry stays controlled 0.11s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch20ParentDisputeAndCustodyReviewContractTest
|
||
✓ batch20 parent dispute and custody review stays controlled 0.17s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch20ReceiptNumberingAndTaxDocumentIntegrityContractTest
|
||
✓ batch20 receipt numbering and tax document integrity stays controll… 0.18s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiBatch20RegressionContinuityComplianceSweepTest
|
||
⨯ batch20 continuity compliance and export sweep stays controlled 0.28s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch20ScholarshipRenewalAndEligibilityContractTest
|
||
✓ batch20 scholarship renewal and eligibility stays controlled 0.21s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch20SiblingFamilyDiscountAbuseContractTest
|
||
✓ batch20 sibling family discount abuse stays controlled 0.20s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch20SyntheticMonitoringAndHealthProbeContractTest
|
||
✓ batch20 synthetic monitoring and health probe stays controlled 0.07s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch20TransportationPickupRouteSafetyContractTest
|
||
✓ batch20 transportation pickup route safety stays controlled 0.12s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBatch20WebhookSecretRotationContractTest
|
||
✓ batch20 webhook secret rotation stays controlled 0.09s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBulkImportExportAndPartialFailureExpansionTest
|
||
✓ bulk routes handle mixed valid and invalid ids cleanly 0.08s
|
||
✓ import routes reject wrong file types with validation not crashes 0.05s
|
||
✓ export download routes do not return mutating statuses 0.09s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiBusinessRuleEdgeCaseContractTest
|
||
✓ school year semester and class mismatch payloads fail without crash… 0.16s
|
||
✓ financial amount rules reject zero negative and precision abuse cle… 0.35s
|
||
✓ attendance status and time edge cases are controlled 0.41s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiCacheFreshnessAndConditionalRequestContractTest
|
||
✓ private authenticated resources are not publicly cacheable 0.17s
|
||
✓ conditional headers do not bypass authorization or return wrong use… 0.07s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiCalendarScheduleConflictContractTest
|
||
✓ calendar event and school schedule routes handle conflicts and inva… 0.07s
|
||
✓ calendar list routes tolerate window queries and do not leak unscop… 0.09s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiClientCompatibilityVersioningContractTest
|
||
✓ publicly registered api routes remain versioned or explicitly legac… 0.04s
|
||
✓ route names are unique enough for client generation 0.05s
|
||
✓ legacy and current auth contracts return compatible failure shapes 0.05s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiConcurrencyAndStaleWriteContractTest
|
||
⨯ duplicate update payloads remain controlled and do not throw server… 0.07s
|
||
✓ stale if match headers do not force successful mutations 0.08s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiContentNegotiationAndMediaTypeContractTest
|
||
✓ json accept header receives controlled api responses across major d… 0.14s
|
||
✓ unsupported accept headers do not trigger server errors 0.09s
|
||
✓ malformed content type for mutations fails cleanly 0.11s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiContractCoverageHeatmapExpansionTest
|
||
✓ every major route family has a meaningful contract probe bucket 0.05s
|
||
✓ mutating route surface is not accidentally unowned by contract suit… 0.04s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiContractSnapshotSeedTest
|
||
✓ core success payloads keep contract keys when available 0.07s
|
||
✓ auth identity payload never drops user identity when successful 0.04s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiCrossModuleReferentialWorkflowExpansionTest
|
||
✓ wrong but existing ids across modules do not silently cross link re… 0.18s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiCrossVersionRouteCompatibilityMatrixTest
|
||
✓ v1 and unversioned auth routes keep failure contract compatible 0.06s
|
||
✓ legacy routes do not expand beyond documented aliases silently 0.04s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiCsvExcelFormulaInjectionContractTest
|
||
✓ exportable and importable text fields handle excel formula payloads 0.67s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiDataExportLeastPrivilegeContractTest
|
||
✓ export and download routes do not grant low privilege bulk access 0.12s
|
||
✓ export filters respect actor scope parameters 0.10s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiDataMinimizationByRoleContractTest
|
||
✓ parent and student responses do not expose back office finance or a… 0.19s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiDataShapeBackwardCompatibilityContractTest
|
||
✓ collection endpoints keep backward compatible envelope keys 0.19s
|
||
✓ successful detail endpoints keep identifier or data keys 0.13s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiDatabaseTransactionRollbackContractTest
|
||
✓ multi step mutations do not leave obvious partial records after val… 0.17s
|
||
⨯ delete failures do not remove parent or student fixtures 0.25s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiDateMoneyAndTimezoneBoundaryContractTest
|
||
⨯ date accepting endpoints reject impossible or ambiguous dates clean… 0.25s
|
||
✓ money accepting endpoints reject negative nan and overflow amounts… 0.50s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiDeepAuthorizationIsolationMatrixTest
|
||
✓ role isolation matrix blocks cross portal access for sensitive surf… 0.26s
|
||
✓ owner scoped parent routes do not expose another family student 0.07s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiDeepDocumentationAndRouteParityContractTest
|
||
✓ every named api route has a stable route name or explicit public ex… 0.05s
|
||
✓ openapi or docs catalog endpoint is reachable and route table remai… 0.06s
|
||
✓ route use case catalog covers new deep contract domains 0.04s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiDeepFileImportExportAndPrintableContractTest
|
||
✓ export download and printable routes are controlled for authenticat… 0.10s
|
||
✓ import upload routes accept test files or return validation without… 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiDeepIdempotencyAndDuplicateSubmissionContractTest
|
||
✓ duplicate sensitive mutations do not create uncontrolled server err… 0.19s
|
||
✓ repeat delete or archive requests are safe to retry or fail cleanly 0.11s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiDeepPaginationSearchAndFilterContractTest
|
||
✓ list endpoints tolerate pagination search sort and filter parameter… 0.46s
|
||
✓ date range filters fail cleanly when dates are invalid 0.17s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiDeepResponseShapeAndEnvelopeContractTest
|
||
✓ successful json api responses use parseable json envelopes across m… 0.19s
|
||
✓ collection endpoints expose list like payloads or explicit empty st… 0.45s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiDeepStateTransitionInvariantContractTest
|
||
✓ school year close reopen and promotion transition routes preserve c… 0.06s
|
||
✓ finance transition routes do not allow negative balance crashes or… 0.06s
|
||
✓ attendance transition routes keep single day student context contro… 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiDeepValidationFailureContractTest
|
||
✓ mutating routes return controlled validation or authorization for h… 0.50s
|
||
✓ required field validation uses machine readable error shape when va… 0.08s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiDestructiveActionSafeguardContractTest
|
||
✓ delete routes handle missing and foreign ids without crashing 0.08s
|
||
✓ bulk delete style routes require explicit targets 0.06s
|
||
⨯ archive remove cancel and void routes are idempotent or conflict sa… 0.07s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiEmptyDatasetAndNullStateContractTest
|
||
✓ list endpoints return stable empty shapes when filters match nothin… 0.07s
|
||
✓ current school year null state is handled without crash 0.06s
|
||
✓ empty class roster and attendance context are controlled 0.06s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiEnumAndStateMachineContractTest
|
||
⨯ status fields reject unknown states without defaulting to success 0.18s
|
||
✓ terminal states are not reopened by low privilege users 0.06s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiErrorEnvelopeConsistencyContractTest
|
||
✓ not found api responses are json or controlled redirects 0.05s
|
||
✓ validation error envelopes have machine readable fields 0.12s
|
||
⨯ authorization error envelopes do not leak stack traces 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiEtagConditionalMutationContractTest
|
||
✓ mutating routes do not succeed silently with stale conditional head… 0.13s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiFailureModeResilienceExpansionTest
|
||
✓ mutation routes fail cleanly when required relationships are null 0.17s
|
||
✓ mutation routes fail cleanly when relationships are strings instead… 0.17s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiFamilyPortalFullSurfaceContractTest
|
||
✓ family portal surface has controlled contracts and privacy boundari… 0.08s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiFeatureFlagAndConfigurationDriftContractTest
|
||
⨯ feature flagged routes fail closed when configuration is missing or… 0.11s
|
||
✓ configuration mutations reject unrecognized or privileged keys from… 0.08s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiFileMediaMetadataSafetyContractTest
|
||
✓ upload routes reject misleading metadata and path names cleanly 0.05s
|
||
✓ download routes do not accept path traversal identifiers 0.08s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiFinanceInventoryCommunicationsFullSurfaceContractTest
|
||
✓ back office and communications surfaces have controlled contracts 0.14s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiFrontendBackendContractParityTest
|
||
✓ frontend identity and api identity do not drift apart 0.06s
|
||
✓ login aliases return compatible token and user contracts 0.05s
|
||
✓ frontend bootstrap routes do not require admin privilege when they… 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiFullSurfaceEndToEndContractTest
|
||
✓ every registered api route has a controlled e2e contract response 0.77s
|
||
✓ all mutating api routes reject empty or malformed payloads without… 0.58s
|
||
✓ portal routes enforce wrong actor boundaries across the full surfac… 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiHtmlJavaScriptEscapingContractTest
|
||
✓ text fields accept or reject script payloads without reflecting exe… 0.21s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiHttpSemanticsAndMethodSafetyContractTest
|
||
✓ get routes do not accept mutating payloads as state changes 0.19s
|
||
✓ wrong methods fail with controlled statuses not framework explosion… 0.11s
|
||
✓ delete routes do not require json body to be safe 0.07s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiIdempotencyScopeAndReplayContractTest
|
||
✓ same idempotency key cannot be replayed across unrelated routes to… 0.24s
|
||
✓ idempotency keys with control characters are rejected or ignored cl… 0.12s
|
||
|
||
WARN Tests\Feature\Api\V1\FullSurface\ApiImpersonationDelegationAndActingAsContractTest
|
||
! impersonation and delegation routes are admin only and auditable →… 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiImportTemplateAndCsvContractTest
|
||
✓ import routes reject malformed csv rows without server errors 0.05s
|
||
✓ template download routes are not public when templates include priv… 0.07s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiLegacyCurrentAliasParityExpansionTest
|
||
✓ auth aliases return compatible login shapes 0.06s
|
||
✓ legacy teacher aliases and current v1 teacher routes have compatibl… 0.06s
|
||
✓ legacy non versioned routes do not drift into 5xx 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiLocalizationAndLocaleFallbackContractTest
|
||
✓ supported and unsupported accept language headers stay controlled 0.53s
|
||
✓ timezone parameters do not corrupt attendance or finance queries 0.59s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiMassAssignmentAndOverpostingContractTest
|
||
✓ write endpoints ignore or reject privilege escalation fields 0.41s
|
||
✓ parent and teacher cannot overpost owner ids to reassign records 0.30s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiMigrationSafeDefaultContractTest
|
||
✓ core routes survive missing optional configuration rows 0.09s
|
||
⨯ routes handle missing optional school year context with controlled… 0.07s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiMobileClientToleranceContractTest
|
||
✓ api routes handle mobile headers without contract drift 0.16s
|
||
✓ api routes handle offline retry headers without duplicate server er… 0.19s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiModelLifecycleInvariantExpansionTest
|
||
✓ create update show index lifecycle routes remain controlled for cor… 0.21s
|
||
✓ identity fields are not overwritten by update payloads 0.30s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiMutationReadAfterWriteConsistencyContractTest
|
||
✓ created resources return identifier or location to support follow u… 0.28s
|
||
✓ update successes preserve resource identity when identity is presen… 0.30s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiNestedPayloadAndArrayAbuseContractTest
|
||
✓ mutation routes fail cleanly for deeply nested payloads 0.15s
|
||
✓ mutation routes fail cleanly for large sparse arrays 0.22s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiNotificationMessagingDeliveryContractTest
|
||
✓ message notification and broadcast routes validate recipients and c… 0.08s
|
||
⨯ read archive star and delete message actions are idempotent 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiNotificationPreferenceAndOptOutContractTest
|
||
✓ notification preference routes validate channels recipients and opt… 0.18s
|
||
✓ low privilege users cannot broadcast notifications to everyone 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiNullBooleanAndTypeCoercionContractTest
|
||
✓ mutation routes handle null false zero and string booleans without… 0.20s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiObservabilityRequestIdAndLoggingContractTest
|
||
✓ api accepts correlation ids without echoing unsafe values 0.18s
|
||
✓ malformed request ids do not break error handling 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiOpenApiDocumentationDriftContractTest
|
||
✓ api surface has documentation entry points and route inventory rema… 0.06s
|
||
✓ named api routes use stable names when names exist 0.04s
|
||
✓ documented routes do not point to missing actions 0.04s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiOpenRedirectAndReturnUrlContractTest
|
||
✓ login and navigation routes do not accept external return urls 0.09s
|
||
✓ redirect like query parameters do not poison get responses 0.12s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiOperationalEndpointExposureContractTest
|
||
✓ operational debug and maintenance routes are not publicly exposed w… 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiOperationalResiliencePayloadSizeContractTest
|
||
✓ mutating routes reject huge payloads and deep arrays without memory… 0.50s
|
||
✓ get routes reject abusive include expand and field lists cleanly 0.16s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiOwnerBoundaryAndPrivacyExpansionTest
|
||
✓ parent family endpoints do not expose other parent records 0.06s
|
||
✓ teacher class endpoints do not expose unassigned class records 0.07s
|
||
✓ serialized users do not leak sensitive auth material 0.06s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiPaginationCursorAndOffsetAbuseContractTest
|
||
✓ list routes handle cursor offset and per page abuse without crashin… 0.26s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiPermissionMatrixExhaustiveContractTest
|
||
✓ core domain permission matrix is enforced across roles 0.06s
|
||
✓ admin only mutations are not available to lower roles 0.06s
|
||
✓ student role cannot access parent teacher or admin portals 0.05s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiPolicyAuthorizationDiscoveryContractTest
|
||
⨯ protected mutation routes are not publicly mutable 0.06s
|
||
✓ permission like routes reject wildcards from non admins 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiPolymorphicOwnershipBoundaryContractTest
|
||
✓ owner type and owner id fields cannot be overposted by low privileg… 0.08s
|
||
✓ cross actor owner queries do not return private data 0.06s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiPrivacyRetentionAndErasureContractTest
|
||
✓ erasure archive and privacy routes are never publicly mutable 0.05s
|
||
✓ privacy related exports do not leak sensitive user fields 0.09s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiPublicAndAuthFullSurfaceContractTest
|
||
⨯ public and auth surface has stable contracts 0.04s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiPublicPrivateCacheSeparationContractTest
|
||
✓ authenticated private routes do not emit public cache headers 0.13s
|
||
✓ conditional cache headers do not bypass authorization 0.07s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiQueryParameterFuzzingContractTest
|
||
✓ collection endpoints handle hostile query parameters without 5xx 0.11s
|
||
✓ date range endpoints reject inverted or impossible ranges cleanly 0.07s
|
||
✓ sorting contract does not allow raw sql fragments 0.06s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiQueueJobAndAsyncTriggerContractTest
|
||
✓ async trigger routes are admin or owner scoped and fail cleanly 0.08s
|
||
✓ async triggers tolerate duplicate client request ids 0.09s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiRateLimitTokenAndSessionHardeningContractTest
|
||
✓ repeated bad login attempts stay controlled and never return a toke… 0.08s
|
||
✓ expired or garbage bearer tokens are rejected without fallback iden… 0.10s
|
||
✓ logout is safe to repeat and does not leak token state 0.04s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiReferentialIntegrityAndForeignKeyContractTest
|
||
⨯ mutations with missing foreign keys fail cleanly not with database… 0.06s
|
||
✓ delete routes for parent records protect children or fail cleanly 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiRelationshipCardinalityContractTest
|
||
✓ routes expect single ids do not crash when receiving arrays or obje… 0.19s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiReportConsistencyAndAggregationExpansionTest
|
||
✓ report routes handle date window filter and group by combinations 0.27s
|
||
✓ parent and teacher report access is scoped not global 0.12s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiReportExportPrivacyAndAggregationContractTest
|
||
✓ teacher and parent report exports are scoped to their assignments 0.11s
|
||
✓ aggregate dashboard numbers do not include other family details for… 0.07s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiReportMathAndFinancialInvariantContractTest
|
||
✓ financial endpoints reject non decimal and currency confusion input… 0.34s
|
||
⨯ report filters do not create negative or impossible aggregation win… 0.11s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiRequestHeaderSpoofingContractTest
|
||
⨯ forwarded and override headers do not bypass authorization 0.05s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiRoleWorkflowNegativeMatrixContractTest
|
||
✓ each non admin actor is blocked from administrative mutations 0.18s
|
||
⨯ actor specific read routes do not collapse into admin visible data 0.04s
|
||
✓ suspended disabled or unverified users do not gain api access 0.08s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiRouteNamingVersioningAndHygieneTest
|
||
✓ api routes do not use debug or temporary names 0.05s
|
||
⨯ versioned api routes stay inside v1 or documented legacy aliases 0.05s
|
||
✓ duplicate uri method pairs do not exist 0.04s
|
||
✓ route placeholders use consistent identifier names 0.04s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiRouteParameterAbuseContractTest
|
||
⨯ parameterized routes reject path traversal and script values cleanl… 0.05s
|
||
⨯ parameterized routes fail cleanly for overflowing integer ids 0.10s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiRouteUseCaseCatalogCompletenessTest
|
||
⨯ every api route is owned by an explicit user journey 0.02s
|
||
✓ each declared journey has at least one registered route 0.01s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiSchemaKeyStabilityExpansionContractTest
|
||
⨯ core resource success payloads keep identity and display keys 0.06s
|
||
✓ error payloads keep client actionable fields 0.37s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiSchoolCalendarAcademicBoundaryExpansionTest
|
||
✓ academic routes reject dates outside school year without server err… 0.57s
|
||
⨯ semester and term values are not free form privilege channels 0.07s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiSchoolOperationsRegressionBackstopTest
|
||
⨯ administrator can probe core school operations without route level… 0.11s
|
||
✓ user facing portals have at least one reachable read contract per a… 0.21s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiSearchIndexAndAutocompleteContractTest
|
||
✓ search autocomplete and lookup routes handle empty short and hostil… 0.08s
|
||
✓ cross domain search does not bypass role scope 0.05s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiSecurityAndTransportContractTest
|
||
⨯ authenticated api routes do not accept plain browser session assump… 0.06s
|
||
⨯ state changing api routes reject wrong http method cleanly 0.05s
|
||
✓ options preflight for major domains is controlled 0.04s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiSerializationSensitiveDataRedactionContractTest
|
||
✓ successful api responses never serialize sensitive user or payment… 0.19s
|
||
✓ error responses do not echo credentials or uploaded file contents 0.09s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiSoftDeleteRestoreArchiveLifecycleContractTest
|
||
⨯ archive restore and unarchive routes are controlled and role protec… 0.06s
|
||
⨯ destructive soft delete style routes tolerate repeated requests 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiSortingFieldSelectionAndIncludeContractTest
|
||
✓ list routes handle sort fields includes and sparse fieldsets 0.64s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiTenantSchoolYearAndSemesterIsolationContractTest
|
||
⨯ school year scoped routes reject foreign or closed school year cont… 0.08s
|
||
✓ cross school year filters do not return unscoped private data 0.11s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiTimezoneCalendarRecurrenceDepthContractTest
|
||
⨯ calendar and schedule routes reject ambiguous recurrence and timezo… 0.15s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiUnicodeNormalizationAndInputContractTest
|
||
✓ text inputs accept or reject unicode cleanly without corrupting jso… 0.15s
|
||
✓ emails and phone fields reject visually confusable values cleanly 0.09s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiUrlFetchSsrfAndCallbackSafetyContractTest
|
||
✓ url accepting routes reject internal network targets cleanly 0.16s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiWebhookExternalProviderAndCallbackContractTest
|
||
✓ external callback routes reject unsigned or malformed payloads 0.05s
|
||
✓ external provider status routes never expose provider secrets 0.07s
|
||
|
||
PASS Tests\Feature\Api\V1\FullSurface\ApiWebhookReplayAndSignatureDepthContractTest
|
||
✓ external callback routes reject missing bad and replayed signatures… 0.05s
|
||
|
||
FAIL Tests\Feature\Api\V1\FullSurface\ApiWriteAuditAndTimestampContractTest
|
||
⨯ successful create responses expose identifier or resource envelope 0.13s
|
||
✓ successful write responses do not emit broken timestamp fields 0.11s
|
||
⨯ audit like routes are not publicly mutable 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\Grading\GradingControllerTest
|
||
✓ overview returns grading data 0.02s
|
||
✓ toggle lock locks section 0.03s
|
||
|
||
PASS Tests\Feature\Api\V1\Grading\HomeworkTrackingControllerTest
|
||
✓ index returns tracking payload 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Incidents\IncidentControllerTest
|
||
✓ current returns incidents and grades 0.02s
|
||
✓ store and close moves incident to history 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Inventory\InventoryCategoriesControllerTest
|
||
✓ index returns categories 0.02s
|
||
✓ store creates category 0.02s
|
||
✓ update changes category 0.02s
|
||
✓ destroy deletes category 0.02s
|
||
✓ validation fails 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Inventory\InventoryItemsControllerTest
|
||
✓ index returns items 0.03s
|
||
✓ show returns item 0.02s
|
||
✓ store creates item 0.02s
|
||
✓ update changes item 0.02s
|
||
✓ destroy deletes item 0.01s
|
||
✓ audit updates classroom item 0.02s
|
||
✓ adjust creates movement 0.02s
|
||
✓ summary returns aggregates 0.02s
|
||
✓ summary all returns rows 0.02s
|
||
✓ teacher distribution endpoints 0.02s
|
||
✓ validation fails for store 0.02s
|
||
✓ requires authentication 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Inventory\InventoryMovementsControllerTest
|
||
✓ index returns movements 0.02s
|
||
✓ store creates movement 0.02s
|
||
✓ update changes movement 0.02s
|
||
✓ destroy deletes movement 0.01s
|
||
✓ bulk delete removes movements 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Inventory\SuppliersControllerTest
|
||
✓ index returns suppliers 0.02s
|
||
✓ store creates supplier 0.02s
|
||
✓ update changes supplier 0.02s
|
||
✓ destroy deletes supplier 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Inventory\SupplyCategoriesControllerTest
|
||
✓ index returns categories 0.02s
|
||
✓ store creates category 0.02s
|
||
✓ update changes category 0.01s
|
||
✓ destroy deletes category 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Messaging\MessagesControllerTest
|
||
✓ inbox requires auth 0.01s
|
||
✓ store creates message 0.03s
|
||
✓ show marks read 0.02s
|
||
✓ update changes status 0.02s
|
||
✓ destroy marks trashed 0.02s
|
||
✓ recipients teacher returns list 0.02s
|
||
✓ validation rejects missing subject 0.02s
|
||
✓ show forbidden for other users 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Notifications\NotificationControllerTest
|
||
✓ index requires authentication 0.02s
|
||
✓ index returns notifications 0.02s
|
||
✓ show returns notification 0.02s
|
||
✓ store creates notification 0.02s
|
||
✓ store validates payload 0.02s
|
||
✓ store handles service exception 0.02s
|
||
✓ mark read updates user notification 0.02s
|
||
✓ active and deleted lists 0.02s
|
||
✓ update and delete notification 0.02s
|
||
✓ restore notification 0.02s
|
||
|
||
FAIL Tests\Feature\Api\V1\Parents\AuthorizedUsersControllerTest
|
||
✓ index requires authentication 0.02s
|
||
✓ index is forbidden for non parent users 0.03s
|
||
⨯ index returns only the parents own authorized users 0.03s
|
||
✓ show returns 404 for unknown authorized user 0.03s
|
||
✓ show returns 404 for another parents authorized user 0.03s
|
||
✓ destroy deletes the parents authorized user 0.02s
|
||
✓ parent cannot delete another parents authorized user 0.03s
|
||
|
||
FAIL Tests\Feature\Api\V1\Parents\ParentAttendanceReportControllerTest
|
||
⨯ form returns students and sundays 0.02s
|
||
⨯ submit creates report and attendance 0.02s
|
||
⨯ check existing returns rows 0.02s
|
||
⨯ update report updates reason 0.01s
|
||
|
||
FAIL Tests\Feature\Api\V1\Parents\ParentControllerTest
|
||
⨯ attendance returns rows 0.02s
|
||
⨯ registration creates student and contact 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\PrintRequests\PrintRequestsWorkflowTest
|
||
✓ teacher can create hand copy request and admin can advance statuses 0.03s
|
||
✓ admin status rejects invalid transition 0.02s
|
||
✓ teacher routes reject non teacher roles and admin routes reject tea… 0.02s
|
||
✓ teacher cannot update delete or download another teachers request 0.02s
|
||
✓ teacher cannot delete request after processing has started 0.01s
|
||
✓ upload requires valid file and page selection format 0.01s
|
||
✓ teacher can upload and download own file and admin can download any… 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Promotions\ParentPromotionControllerTest
|
||
✓ overview returns actionable records for parent 0.02s
|
||
✓ parent completes full enrollment flow 0.03s
|
||
✓ parent cannot view other parents promotion 0.02s
|
||
✓ unauthenticated request is unauthorized 0.01s
|
||
|
||
PASS Tests\Feature\Api\V1\Public\PublicWinnersControllerTest
|
||
✓ competition index is public and returns published competitions 0.02s
|
||
✓ competition index returns empty collection when none published 0.01s
|
||
✓ competition show returns payload for published competition 0.01s
|
||
✓ competition show returns 404 for unknown competition 0.02s
|
||
✓ competition show returns 404 for unpublished competition 0.01s
|
||
|
||
PASS Tests\Feature\Api\V1\Reports\FilesControllerTest
|
||
✓ receipt meta returns file payload 0.02s
|
||
✓ exam draft teacher streams with download name 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Reports\ReportCardsControllerTest
|
||
✓ meta returns expected payload 0.02s
|
||
✓ completeness returns summary and students 0.03s
|
||
✓ acknowledgement returns record 0.02s
|
||
✓ student report returns pdf 0.03s
|
||
✓ class report returns pdf 0.02s
|
||
✓ student report returns error when missing scores 0.02s
|
||
✓ completeness requires class section id 0.02s
|
||
✓ acknowledgement requires student id 0.02s
|
||
✓ requires authentication 0.01s
|
||
|
||
PASS Tests\Feature\Api\V1\Reports\SlipPrinterControllerTest
|
||
✓ preview returns text 0.03s
|
||
✓ print creates log and returns pdf 0.06s
|
||
✓ logs returns rows 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Reports\StickersControllerTest
|
||
✓ form data returns classes students and presets 0.02s
|
||
✓ students by class returns students 0.02s
|
||
✓ print returns pdf 0.02s
|
||
✓ print validation rejects missing selection 0.02s
|
||
✓ requires authentication 0.01s
|
||
|
||
FAIL Tests\Feature\Api\V1\Roles\RolePermissionControllerTest
|
||
✓ roles index returns roles 0.02s
|
||
✓ store role creates role 0.02s
|
||
✓ update role updates role 0.02s
|
||
✓ delete role removes role 0.02s
|
||
✓ users index returns users with roles 0.02s
|
||
✓ assign roles updates user roles 0.02s
|
||
✓ permissions crud 0.02s
|
||
✓ role permissions update 0.01s
|
||
✓ validation rejects invalid role payload 0.01s
|
||
⨯ store role returns error on service exception 0.02s
|
||
✓ requires authentication 0.01s
|
||
|
||
PASS Tests\Feature\Api\V1\Roles\RoleSwitcherControllerTest
|
||
✓ index returns roles 0.03s
|
||
✓ switch sets role 0.02s
|
||
✓ requires authentication 0.01s
|
||
✓ switch rejects role that user does not have 0.02s
|
||
✓ switch validates empty role payload 0.02s
|
||
✓ index returns not found when authenticated user has no roles 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\ScannerControllerTest
|
||
✓ process requires a badge code 0.02s
|
||
✓ process returns 404 for unknown badge 0.01s
|
||
✓ process accepts alternative badge field names 0.01s
|
||
|
||
FAIL Tests\Feature\Api\V1\SchoolYears\SchoolYearControllerTest
|
||
⨯ preview close returns promotion and balance preview 0.03s
|
||
✓ parent cannot close school year 0.02s
|
||
✓ school year closure routes have explicit permission middleware 0.01s
|
||
⨯ admin can create draft school year via api 0.02s
|
||
⨯ admin can update draft school year via api 0.02s
|
||
⨯ close school year creates new active year enrollment and balance tr… 0.02s
|
||
⨯ closed school year blocks legacy invoice generation 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Scores\FinalControllerTest
|
||
✓ index returns final scores 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Scores\HomeworkControllerTest
|
||
✓ index returns homework scores 0.03s
|
||
|
||
PASS Tests\Feature\Api\V1\Scores\MidtermControllerTest
|
||
✓ index returns midterm scores 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Scores\ParticipationControllerTest
|
||
✓ index returns participation scores 0.03s
|
||
|
||
PASS Tests\Feature\Api\V1\Scores\ProjectControllerTest
|
||
✓ index returns project scores 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Scores\QuizControllerTest
|
||
✓ index returns quiz scores 0.03s
|
||
|
||
PASS Tests\Feature\Api\V1\Scores\ScoreCommentControllerTest
|
||
✓ store rejects short comment 0.02s
|
||
✓ index returns comments 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Scores\ScoreControllerTest
|
||
✓ overview returns students 0.02s
|
||
✓ lock creates grading lock 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Scores\ScorePredictorControllerTest
|
||
✓ index returns predictions 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Settings\ConfigurationControllerTest
|
||
✓ index returns configs 0.02s
|
||
✓ store creates config 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Settings\EventControllerTest
|
||
✓ index requires authentication 0.02s
|
||
✓ index returns events 0.02s
|
||
✓ store creates event 0.02s
|
||
✓ store requires authentication 0.02s
|
||
✓ store validates payload 0.02s
|
||
✓ store handles service exception 0.02s
|
||
✓ update updates event 0.02s
|
||
✓ destroy deletes event 0.02s
|
||
✓ charges list returns data 0.02s
|
||
✓ update charges updates participation 0.02s
|
||
✓ students with charges returns students 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Settings\PolicyControllerTest
|
||
✓ school policy endpoint returns payload 0.02s
|
||
✓ picture policy endpoint returns payload 0.01s
|
||
|
||
FAIL Tests\Feature\Api\V1\Settings\PreferencesControllerTest
|
||
⨯ show returns defaults 0.02s
|
||
⨯ store creates preferences 0.02s
|
||
⨯ list requires admin 0.02s
|
||
⨯ list returns rows for admin 0.02s
|
||
⨯ update for user by admin 0.02s
|
||
⨯ destroy requires admin 0.01s
|
||
⨯ destroy deletes preferences 0.01s
|
||
⨯ store validates payload 0.02s
|
||
|
||
FAIL Tests\Feature\Api\V1\Settings\SchoolCalendarControllerTest
|
||
✓ options returns event types and defaults 0.02s
|
||
✓ index returns events and meetings 0.02s
|
||
✓ show returns event 0.02s
|
||
✓ store creates event 0.02s
|
||
⨯ update updates event 0.02s
|
||
✓ destroy deletes event 0.02s
|
||
✓ store validation rejects invalid payload 0.02s
|
||
⨯ store returns error on service exception 0.01s
|
||
✓ requires authentication 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Settings\SettingsControllerTest
|
||
✓ index requires admin 0.02s
|
||
✓ index returns settings 0.02s
|
||
✓ update validation rejects bad email 0.02s
|
||
✓ update persists settings 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Staff\StaffControllerTest
|
||
✓ index requires admin 0.02s
|
||
✓ index returns staff 0.02s
|
||
✓ store creates staff 0.02s
|
||
✓ store validation 0.02s
|
||
✓ update modifies staff 0.02s
|
||
✓ destroy deletes staff 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Students\StudentControllerTest
|
||
✓ assign and remove class 0.03s
|
||
✓ score card returns rows 0.02s
|
||
✓ store creates emergency contact for first parent 0.02s
|
||
✓ index returns students without parent filter 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Subjects\SubjectCurriculumControllerTest
|
||
✓ index returns entries 0.02s
|
||
✓ store creates entry 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Support\ContactControllerTest
|
||
✓ send requires valid payload 0.01s
|
||
✓ send returns success 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Support\SupportControllerTest
|
||
✓ index requires auth 0.01s
|
||
✓ index returns requests 0.02s
|
||
✓ store validation 0.02s
|
||
✓ store creates request 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\System\DashboardControllerTest
|
||
✓ route requires authentication 0.02s
|
||
✓ route returns dashboard for role 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\System\DatabaseHealthControllerTest
|
||
✓ db check returns ok 0.01s
|
||
|
||
FAIL Tests\Feature\Api\V1\System\HealthControllerTest
|
||
⨯ health returns payload 0.02s
|
||
|
||
FAIL Tests\Feature\Api\V1\System\NavBuilderControllerTest
|
||
✓ menu returns items for roles 0.02s
|
||
✓ data requires admin 0.02s
|
||
✓ store creates nav item 0.02s
|
||
⨯ delete removes nav item 0.02s
|
||
⨯ reorder updates items 0.01s
|
||
|
||
FAIL Tests\Feature\Api\V1\System\SchoolIdControllerTest
|
||
✓ generate student returns id 0.02s
|
||
✓ generate user returns id 0.02s
|
||
⨯ assign sets user school id 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\System\SemesterRangeControllerTest
|
||
✓ school year range uses config dates 0.02s
|
||
✓ resolve returns semester for date 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\System\StatsControllerTest
|
||
✓ stats require authentication 0.02s
|
||
✓ stats index returns rows for authenticated user 0.02s
|
||
✓ stats index returns empty array when no stats 0.01s
|
||
|
||
PASS Tests\Feature\Api\V1\Teachers\TeacherControllerTest
|
||
✓ classes returns students and assignments 0.02s
|
||
✓ switch class returns active id 0.02s
|
||
✓ absence submit creates staff attendance 0.03s
|
||
|
||
PASS Tests\Feature\Api\V1\Ui\UiControllerTest
|
||
✓ style requires auth 0.01s
|
||
✓ style updates preferences 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Users\UserControllerTest
|
||
✓ user list returns users with roles 0.03s
|
||
✓ create user creates user and role 0.02s
|
||
✓ login activity returns paginated results 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Utilities\PhoneFormatterControllerTest
|
||
✓ format returns formatted phone 0.02s
|
||
✓ format rejects invalid number 0.02s
|
||
✓ format validates payload 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Utilities\ProofreadControllerTest
|
||
✓ proofread requires authentication 0.01s
|
||
✓ proofread rejects empty text 0.01s
|
||
✓ proofread rejects text that is too long 0.02s
|
||
✓ proofread proxies languagetool and returns result 0.04s
|
||
✓ proofread returns 502 when upstream fails 0.01s
|
||
|
||
FAIL Tests\Feature\Api\V1\Whatsapp\WhatsappInviteControllerTest
|
||
✓ parent contacts endpoint returns contacts 0.02s
|
||
✓ parent contacts by class endpoint returns sections 0.02s
|
||
✓ send invites returns success when listener registered 0.02s
|
||
⨯ send invites returns error when no listener 0.02s
|
||
✓ membership update saves record 0.02s
|
||
✓ send invites validation rejects payload 0.01s
|
||
|
||
PASS Tests\Feature\Api\V1\Whatsapp\WhatsappLinkControllerTest
|
||
✓ index returns paginated links 0.02s
|
||
✓ show returns single link 0.02s
|
||
✓ store creates link 0.02s
|
||
✓ update updates link 0.02s
|
||
✓ destroy deletes link 0.01s
|
||
✓ store validation rejects invalid payload 0.01s
|
||
✓ requires authentication 0.02s
|
||
|
||
FAIL Tests\Feature\Api\V1\Workflows\ScenarioAFamilyEnrollmentTest
|
||
⨯ admin onboards family through active enrollment 0.05s
|
||
⨯ parent cannot update unrelated student 0.05s
|
||
|
||
FAIL Tests\Feature\Api\V1\Workflows\ScenarioBSundaySchoolDayTest
|
||
⨯ teacher submits attendance and parent views report 0.03s
|
||
✓ teacher cannot submit attendance for unassigned class 0.05s
|
||
✓ admin views daily attendance summary 0.04s
|
||
|
||
PASS Tests\Feature\Api\V1\Workflows\ScenarioCAcademicTermTest
|
||
✓ teacher enters scores admin locks grading and report card is genera… 0.05s
|
||
✓ teacher invalid homework score is rejected 0.03s
|
||
|
||
PASS Tests\Feature\Api\V1\Workflows\ScenarioDFamilyBillingTest
|
||
✓ admin runs invoice discount payment and reporting workflow 0.06s
|
||
|
||
PASS Tests\Feature\Api\V1\Workflows\ScenarioEFinanceEdgeTest
|
||
✓ admin carries forward balance and manages installments 0.06s
|
||
|
||
PASS Tests\Feature\Api\V1\Workflows\ScenarioFTeacherSubmissionTest
|
||
✓ admin detects missing submission and notifies teacher 0.05s
|
||
✓ duplicate notify requires valid payload 0.03s
|
||
|
||
PASS Tests\Feature\Api\V1\Workflows\ScenarioGPrintBadgeTest
|
||
✓ print request badge log and scan workflow 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\Workflows\ScenarioHSecurityUnauthorizedAccessTest
|
||
✓ cross role and anonymous access is blocked 0.07s
|
||
|
||
PASS Tests\Feature\Api\V1\Workflows\ScenarioIPublicAuthAndSystemUseCaseTest
|
||
✓ guest can use public content contact and health endpoints without a… 0.02s
|
||
✓ user can login read current profile and logout through api 0.03s
|
||
✓ invalid inactive and suspended login paths fail safely 0.03s
|
||
|
||
PASS Tests\Feature\Api\V1\Workflows\ScenarioJCrossModuleApiUseCaseSmokeTest
|
||
✓ admin can reach core operational dashboards without server errors 0.07s
|
||
✓ major mutating use cases validate bad payloads instead of crashing 0.06s
|
||
|
||
FAIL Tests\Feature\Api\V1\Workflows\ScenarioKParentSelfServiceAndPrivacyTest
|
||
✓ parent reviews household data and updates contact details 0.05s
|
||
⨯ parent cannot mutate another family student or emergency contact 0.04s
|
||
|
||
FAIL Tests\Feature\Api\V1\Workflows\ScenarioLTeacherAcademicOperationsTest
|
||
⨯ teacher manages class progress and homework scores end to end 0.05s
|
||
✓ unassigned teacher cannot view or update another teachers progress… 0.05s
|
||
|
||
FAIL Tests\Feature\Api\V1\Workflows\ScenarioMAdministratorEnrollmentAndClassOperationsTest
|
||
⨯ admin builds classroom roster from parent registration to teacher a… 0.05s
|
||
✓ admin can reverse roster and teacher assignments without orphaning… 0.05s
|
||
|
||
FAIL Tests\Feature\Api\V1\Workflows\ScenarioNCommunicationsAndSupportLifecycleTest
|
||
⨯ parent and teacher exchange message and read state is preserved 0.03s
|
||
⨯ public contact support ticket and admin support queue are connected 0.02s
|
||
|
||
PASS Tests\Feature\Api\V1\Workflows\ScenarioOInventoryFinanceAndAuditControlsTest
|
||
✓ admin tracks inventory item from creation to adjustment and summary 0.04s
|
||
✓ finance followup records notes promises and resolution for unpaid p… 0.05s
|
||
|
||
FAIL Tests\Feature\Api\V1\Workflows\ScenarioPSettingsConfigurationAndCalendarGovernanceTest
|
||
✓ admin manages calendar event configuration and notification lifecyc… 0.03s
|
||
⨯ configuration admin crud keeps school year context explicit 0.03s
|
||
|
||
PASS Tests\Feature\Api\V1\Workflows\ScenarioQSchoolYearPromotionClosureLifecycleTest
|
||
✓ admin and parent work through promotion before year close 0.04s
|
||
✓ admin previews closes and reopens school year with balance transfer… 0.04s
|
||
|
||
FAIL Tests\Feature\Api\V1\Workflows\ScenarioRAttendanceOperationsAndExceptionHandlingTest
|
||
⨯ teacher admin and staff handle attendance day end to end 0.05s
|
||
⨯ early dismissal late slip and violation tracking are connected 0.05s
|
||
⨯ attendance comment templates support create update delete and legac… 0.03s
|
||
|
||
FAIL Tests\Feature\Api\V1\Workflows\ScenarioSScoringGradingAndReportCardLifecycleTest
|
||
⨯ teacher records every score type and admin reviews grading outputs 0.06s
|
||
⨯ grading locks and below sixty intervention are visible and mutable 0.05s
|
||
|
||
FAIL Tests\Feature\Api\V1\Workflows\ScenarioTDocumentsPrintBadgesAndCertificatesLifecycleTest
|
||
⨯ teacher print request moves from upload to admin status and file ac… 0.05s
|
||
✓ badges stickers slips and certificates are generated or validated w… 0.14s
|
||
|
||
PASS Tests\Feature\Api\V1\Workflows\ScenarioUFinanceBillingPaymentRefundAndInstallmentLifecycleTest
|
||
✓ admin generates invoice records payment transaction and receipt not… 0.06s
|
||
✓ admin creates installment plan refund and balance carryforward deci… 0.05s
|
||
|
||
PASS Tests\Feature\Api\V1\Workflows\ScenarioVProcurementReimbursementAndSupplyLifecycleTest
|
||
✓ admin manages suppliers supply categories purchase order and receip… 0.03s
|
||
✓ reimbursement request batch lock export and mark donation flow 0.03s
|
||
|
||
FAIL Tests\Feature\Api\V1\Workflows\ScenarioWAccessControlRolesNavigationAndPreferencesTest
|
||
⨯ admin creates role permission assigns user and builds navigation 0.04s
|
||
⨯ user preferences and role switcher preserve selected context 0.03s
|
||
✓ non admin cannot manage role permissions or admin nav builder 0.02s
|
||
|
||
FAIL Tests\Feature\Api\V1\Workflows\ScenarioXPublicKioskScannerAndVerificationLifecycleTest
|
||
✓ public content documentation and policy endpoints are reachable wit… 0.04s
|
||
✓ badge scan and scanner process known and unknown codes safely 0.04s
|
||
⨯ public verification and invite tokens fail closed for invalid value… 0.01s
|
||
|
||
PASS Tests\Feature\Api\V1\Workflows\ScenarioYFamilyGuardianAuthorizedUserAndWhatsappLifecycleTest
|
||
✓ admin builds family links and manages guardian flags 0.05s
|
||
✓ parent authorized user invite and household privacy flow 0.04s
|
||
|
||
FAIL Tests\Feature\Api\V1\Workflows\ScenarioZLegacyAliasesValidationAndCompatibilityTest
|
||
✓ legacy teacher aliases match modern teacher and score surfaces 0.07s
|
||
✓ legacy post aliases validate payloads without 500s 0.06s
|
||
⨯ validation errors are structured for representative public and auth… 0.01s
|
||
⨯ legacy redirects and non versioned auth aliases remain available 0.01s
|
||
|
||
FAIL Tests\Feature\Api\V1\Workflows\StudentEnrollmentWorkflowTest
|
||
✓ admin creates account adds student and enrolls them 0.04s
|
||
⨯ admin can withdraw an enrolled student 0.03s
|
||
✓ creating a user requires a valid role 0.03s
|
||
✓ student registration requires first child contact details 0.02s
|
||
|
||
FAIL Tests\Feature\BulkUserRoleCreationTest
|
||
⨯ it creates one thousand parents teachers and admins through the ap… 11.44s
|
||
|
||
PASS Tests\Feature\Console\AttendanceCommandsTest
|
||
✓ attendance auto publish command runs 0.03s
|
||
✓ attendance recalculate summary command runs 0.01s
|
||
✓ attendance absentees summary command runs 0.01s
|
||
✓ attendance lates summary command runs 0.01s
|
||
|
||
PASS Tests\Feature\Console\DeleteUnverifiedUsersCommandTest
|
||
✓ command dispatches event for expired user 0.02s
|
||
|
||
PASS Tests\Feature\Console\PaymentsCommandsTest
|
||
✓ check missed payments command runs 0.01s
|
||
✓ monthly reminder command sends to email 0.01s
|
||
✓ send test payment notification command runs 0.01s
|
||
✓ sync paypal payments command runs 0.01s
|
||
|
||
PASS Tests\Feature\Console\SystemCommandsTest
|
||
✓ cleanup expired notifications command runs 0.01s
|
||
✓ cleanup password resets command runs 0.01s
|
||
✓ config update command runs 0.01s
|
||
✓ delete inactive users command runs 0.01s
|
||
|
||
PASS Tests\Feature\HealthEndpointTest
|
||
✓ health endpoint is reachable 0.03s
|
||
|
||
PASS Tests\Feature\Middleware\RequirePermissionMiddlewareTest
|
||
✓ denies when missing permission 0.03s
|
||
✓ allows when permission assigned 0.02s
|
||
|
||
PASS Tests\Feature\TeacherAbsenceVacationRouteTest
|
||
✓ authenticated teacher absence vacation route redirects to spa page 0.02s
|
||
✓ authenticated legacy teacher absence vacation route redirects to sp… 0.02s
|
||
|
||
PASS Tests\Feature\Web\AdminCalendarPageTest
|
||
✓ admin calendar view lists school calendar events for selected year 0.02s
|
||
|
||
PASS Tests\Feature\Web\SchoolYearAdminPageTest
|
||
✓ admin can view school year page 0.02s
|
||
✓ admin can create draft school year from page 0.02s
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\ApiDocsServiceTest > public boo… ClassIsFinalException
|
||
Class "App\Services\ApplicationUrlService" is declared "final" and cannot be doubled
|
||
|
||
at tests/Unit/ApiDocsServiceTest.php:14
|
||
10▕ class ApiDocsServiceTest extends TestCase
|
||
11▕ {
|
||
12▕ private function docsService(): ApiDocsService
|
||
13▕ {
|
||
➜ 14▕ $urls = $this->createMock(ApplicationUrlService::class);
|
||
15▕ $urls->method('docsSwaggerMergedJsonUrl')->with(false)->willReturn('/api/documentation/swagger.json');
|
||
16▕
|
||
17▕ return new ApiDocsService($urls);
|
||
18▕ }
|
||
|
||
1 tests/Unit/ApiDocsServiceTest.php:14
|
||
2 tests/Unit/ApiDocsServiceTest.php:22
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\ApiDocsServiceTest > full boots… ClassIsFinalException
|
||
Class "App\Services\ApplicationUrlService" is declared "final" and cannot be doubled
|
||
|
||
at tests/Unit/ApiDocsServiceTest.php:14
|
||
10▕ class ApiDocsServiceTest extends TestCase
|
||
11▕ {
|
||
12▕ private function docsService(): ApiDocsService
|
||
13▕ {
|
||
➜ 14▕ $urls = $this->createMock(ApplicationUrlService::class);
|
||
15▕ $urls->method('docsSwaggerMergedJsonUrl')->with(false)->willReturn('/api/documentation/swagger.json');
|
||
16▕
|
||
17▕ return new ApiDocsService($urls);
|
||
18▕ }
|
||
|
||
1 tests/Unit/ApiDocsServiceTest.php:14
|
||
2 tests/Unit/ApiDocsServiceTest.php:39
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\ApiLoginSecurityServiceTes… BindingResolutionException
|
||
Target class [config] does not exist.
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Container/Container.php:1124
|
||
1120▕
|
||
1121▕ try {
|
||
1122▕ $reflector = new ReflectionClass($concrete);
|
||
1123▕ } catch (ReflectionException $e) {
|
||
➜ 1124▕ throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
|
||
1125▕ }
|
||
1126▕
|
||
1127▕ // If the type is not instantiable, the developer is attempting to resolve
|
||
1128▕ // an abstract type such as an Interface or Abstract Class and there is
|
||
|
||
[2m+7 vendor frames [22m
|
||
8 app/Services/Auth/ApiLoginSecurityService.php:148
|
||
9 tests/Unit/ApiLoginSecurityServiceTest.php:43
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\ApiLoginSecurityServiceTes… BindingResolutionException
|
||
Target class [config] does not exist.
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Container/Container.php:1124
|
||
1120▕
|
||
1121▕ try {
|
||
1122▕ $reflector = new ReflectionClass($concrete);
|
||
1123▕ } catch (ReflectionException $e) {
|
||
➜ 1124▕ throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
|
||
1125▕ }
|
||
1126▕
|
||
1127▕ // If the type is not instantiable, the developer is attempting to resolve
|
||
1128▕ // an abstract type such as an Interface or Abstract Class and there is
|
||
|
||
[2m+7 vendor frames [22m
|
||
8 app/Services/Auth/ApiLoginSecurityService.php:148
|
||
9 tests/Unit/ApiLoginSecurityServiceTest.php:76
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\AttendanceEmailTemplateTest > g… QueryException
|
||
SQLSTATE[HY000]: General error: 1 table email_templates has no column named created_at (Connection: sqlite, Database: :memory:, SQL: insert into "email_templates" ("code", "variant", "subject", "body_html", "is_active", "updated_at", "created_at") values (attendance_absent, default, Default Subject, <p>Default</p>, 1, 2026-07-05 22:09:15, 2026-07-05 22:09:15))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+16 vendor frames [22m
|
||
17 tests/Unit/Models/AttendanceEmailTemplateTest.php:15
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\AttendanceEmailTemplateTest > g… QueryException
|
||
SQLSTATE[HY000]: General error: 1 table email_templates has no column named created_at (Connection: sqlite, Database: :memory:, SQL: insert into "email_templates" ("code", "variant", "subject", "body_html", "is_active", "updated_at", "created_at") values (attendance_late, default, Late Default, <p>Late default</p>, 1, 2026-07-05 22:09:15, 2026-07-05 22:09:15))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+16 vendor frames [22m
|
||
17 tests/Unit/Models/AttendanceEmailTemplateTest.php:40
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\AttendanceEmailTemplateTest > g… QueryException
|
||
SQLSTATE[HY000]: General error: 1 table email_templates has no column named created_at (Connection: sqlite, Database: :memory:, SQL: insert into "email_templates" ("code", "variant", "subject", "body_html", "is_active", "updated_at", "created_at") values (attendance_present, no_answer, Inactive SMS, <p>Inactive</p>, 0, 2026-07-05 22:09:15, 2026-07-05 22:09:15))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+16 vendor frames [22m
|
||
17 tests/Unit/Models/AttendanceEmailTemplateTest.php:57
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\AttendanceEmailTemplateTest > g… QueryException
|
||
SQLSTATE[HY000]: General error: 1 table email_templates has no column named created_at (Connection: sqlite, Database: :memory:, SQL: insert into "email_templates" ("code", "variant", "subject", "body_html", "is_active", "updated_at", "created_at") values (attendance_unknown, default, Inactive Default, <p>Inactive</p>, 0, 2026-07-05 22:09:15, 2026-07-05 22:09:15))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+16 vendor frames [22m
|
||
17 tests/Unit/Models/AttendanceEmailTemplateTest.php:82
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\ClassPrepAdjustmentTest > model metadata is con…
|
||
Failed asserting that true is identical to false.
|
||
|
||
at tests/Unit/Models/ClassPrepAdjustmentTest.php:16
|
||
12▕ $model = new ClassPrepAdjustment;
|
||
13▕
|
||
14▕ $this->assertSame('class_prep_adjustments', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
➜ 16▕ $this->assertSame(false, $model->timestamps);
|
||
17▕ $this->assertSame(['class_section_id', 'item_name', 'adjustment', 'adjustable', 'school_year', 'created_at'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
|
||
1 tests/Unit/Models/ClassPrepAdjustmentTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\ClassPreparationLogTest > model metadata is con…
|
||
Failed asserting that true is identical to false.
|
||
|
||
at tests/Unit/Models/ClassPreparationLogTest.php:16
|
||
12▕ $model = new ClassPreparationLog;
|
||
13▕
|
||
14▕ $this->assertSame('class_preparation_log', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
➜ 16▕ $this->assertSame(false, $model->timestamps);
|
||
17▕ $this->assertSame(['class_section_id', 'class_section', 'school_year', 'prep_data', 'created_at'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
|
||
1 tests/Unit/Models/ClassPreparationLogTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\CommunicationLogTest > model metadata is conver…
|
||
Failed asserting that true is identical to false.
|
||
|
||
at tests/Unit/Models/CommunicationLogTest.php:16
|
||
12▕ $model = new CommunicationLog;
|
||
13▕
|
||
14▕ $this->assertSame('communication_logs', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
➜ 16▕ $this->assertSame(false, $model->timestamps);
|
||
17▕ $this->assertSame(['student_id', 'family_id', 'student_name', 'template_key', 'subject', 'body', 'recipients', 'cc', 'bcc', 'attachments', 'status', 'error_message', 'sent_by', 'metadata'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
|
||
1 tests/Unit/Models/CommunicationLogTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\EmailTemplateTest > get template retur… QueryException
|
||
SQLSTATE[HY000]: General error: 1 table email_templates has no column named created_at (Connection: sqlite, Database: :memory:, SQL: insert into "email_templates" ("code", "variant", "subject", "body_html", "is_active", "updated_at", "created_at") values (attendance_absent, default, Default Subject, <p>Default</p>, 1, 2026-07-05 22:09:15, 2026-07-05 22:09:15))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+16 vendor frames [22m
|
||
17 tests/Unit/Models/EmailTemplateTest.php:15
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\EmailTemplateTest > get template falls… QueryException
|
||
SQLSTATE[HY000]: General error: 1 table email_templates has no column named created_at (Connection: sqlite, Database: :memory:, SQL: insert into "email_templates" ("code", "variant", "subject", "body_html", "is_active", "updated_at", "created_at") values (attendance_late, default, Late Default, <p>Late default</p>, 1, 2026-07-05 22:09:16, 2026-07-05 22:09:16))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+16 vendor frames [22m
|
||
17 tests/Unit/Models/EmailTemplateTest.php:42
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\EmailTemplateTest > get template ignor… QueryException
|
||
SQLSTATE[HY000]: General error: 1 table email_templates has no column named created_at (Connection: sqlite, Database: :memory:, SQL: insert into "email_templates" ("code", "variant", "subject", "body_html", "is_active", "updated_at", "created_at") values (attendance_present, default, Present Default, <p>Present</p>, 0, 2026-07-05 22:09:16, 2026-07-05 22:09:16))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+16 vendor frames [22m
|
||
17 tests/Unit/Models/EmailTemplateTest.php:60
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\EmailTemplateTest > get template prefe… QueryException
|
||
SQLSTATE[HY000]: General error: 1 table email_templates has no column named created_at (Connection: sqlite, Database: :memory:, SQL: insert into "email_templates" ("code", "variant", "subject", "body_html", "is_active", "updated_at", "created_at") values (attendance_notice, default, Default Notice, <p>Default</p>, 1, 2026-07-05 22:09:16, 2026-07-05 22:09:16))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+16 vendor frames [22m
|
||
17 tests/Unit/Models/EmailTemplateTest.php:76
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\EventChargesTest > model metadata is converted
|
||
Failed asserting that two arrays are identical.
|
||
Array &0 [
|
||
0 => 'event_id',
|
||
- 1 => 'parent_id',
|
||
- 2 => 'student_id',
|
||
- 3 => 'participation',
|
||
- 4 => 'charged',
|
||
- 5 => 'semester',
|
||
- 6 => 'school_year',
|
||
- 7 => 'updated_by',
|
||
- 8 => 'created_at',
|
||
- 9 => 'updated_at',
|
||
+ 1 => 'event_name',
|
||
+ 2 => 'description',
|
||
+ 3 => 'amount',
|
||
+ 4 => 'parent_id',
|
||
+ 5 => 'student_id',
|
||
+ 6 => 'participation',
|
||
+ 7 => 'charged',
|
||
+ 8 => 'semester',
|
||
+ 9 => 'school_year',
|
||
+ 10 => 'updated_by',
|
||
+ 11 => 'created_at',
|
||
+ 12 => 'updated_at',
|
||
]
|
||
|
||
|
||
at tests/Unit/Models/EventChargesTest.php:17
|
||
13▕
|
||
14▕ $this->assertSame('event_charges', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
16▕ $this->assertSame(true, $model->timestamps);
|
||
➜ 17▕ $this->assertSame(['event_id', 'parent_id', 'student_id', 'participation', 'charged', 'semester', 'school_year', 'updated_by', 'created_at', 'updated_at'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
21▕ {
|
||
|
||
1 tests/Unit/Models/EventChargesTest.php:17
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\ExamTest > model metadata is converted
|
||
Failed asserting that true is identical to false.
|
||
|
||
at tests/Unit/Models/ExamTest.php:16
|
||
12▕ $model = new Exam;
|
||
13▕
|
||
14▕ $this->assertSame('exams', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
➜ 16▕ $this->assertSame(false, $model->timestamps);
|
||
17▕ $this->assertSame(['student_id', 'student_school_id', 'class_section_id', 'exam_name', 'created_at'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
|
||
1 tests/Unit/Models/ExamTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\FinalExamTest > model metadata is converted
|
||
Failed asserting that false is identical to true.
|
||
|
||
at tests/Unit/Models/FinalExamTest.php:16
|
||
12▕ $model = new FinalExam;
|
||
13▕
|
||
14▕ $this->assertSame('final_exam', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
➜ 16▕ $this->assertSame(true, $model->timestamps);
|
||
17▕ $this->assertSame(['student_id', 'school_id', 'class_section_id', 'updated_by', 'score', 'semester', 'school_year', 'created_at', 'updated_at'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
|
||
1 tests/Unit/Models/FinalExamTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\HomeworkTest > model metadata is converted
|
||
Failed asserting that false is identical to true.
|
||
|
||
at tests/Unit/Models/HomeworkTest.php:16
|
||
12▕ $model = new Homework;
|
||
13▕
|
||
14▕ $this->assertSame('homework', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
➜ 16▕ $this->assertSame(true, $model->timestamps);
|
||
17▕ $this->assertSame(['student_id', 'school_id', 'class_section_id', 'updated_by', 'homework_index', 'score', 'comment', 'semester', 'school_year', 'created_at', 'updated_at'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
|
||
1 tests/Unit/Models/HomeworkTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\InvoiceTest > model metadata is converted
|
||
Failed asserting that false is identical to true.
|
||
|
||
at tests/Unit/Models/InvoiceTest.php:16
|
||
12▕ $model = new Invoice;
|
||
13▕
|
||
14▕ $this->assertSame('invoices', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
➜ 16▕ $this->assertSame(true, $model->timestamps);
|
||
17▕ $this->assertSame(['parent_id', 'invoice_number', 'total_amount', 'balance', 'paid_amount', 'has_discount', 'issue_date', 'due_date', 'status', 'description', 'school_year', 'created_at', 'updated_at', 'updated_by', 'semester'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
|
||
1 tests/Unit/Models/InvoiceTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\MidtermExamTest > model metadata is converted
|
||
Failed asserting that false is identical to true.
|
||
|
||
at tests/Unit/Models/MidtermExamTest.php:16
|
||
12▕ $model = new MidtermExam;
|
||
13▕
|
||
14▕ $this->assertSame('midterm_exam', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
➜ 16▕ $this->assertSame(true, $model->timestamps);
|
||
17▕ $this->assertSame(['student_id', 'school_id', 'class_section_id', 'updated_by', 'score', 'comment', 'semester', 'school_year', 'created_at', 'updated_at'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
|
||
1 tests/Unit/Models/MidtermExamTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\ParticipationTest > model metadata is converted
|
||
Failed asserting that false is identical to true.
|
||
|
||
at tests/Unit/Models/ParticipationTest.php:16
|
||
12▕ $model = new Participation;
|
||
13▕
|
||
14▕ $this->assertSame('participation', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
➜ 16▕ $this->assertSame(true, $model->timestamps);
|
||
17▕ $this->assertSame(['student_id', 'school_id', 'class_section_id', 'updated_by', 'score', 'comment', 'semester', 'school_year', 'created_at', 'updated_at'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
|
||
1 tests/Unit/Models/ParticipationTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\PasswordResetRequestTest > model metadata is co…
|
||
Failed asserting that true is identical to false.
|
||
|
||
at tests/Unit/Models/PasswordResetRequestTest.php:16
|
||
12▕ $model = new PasswordResetRequest;
|
||
13▕
|
||
14▕ $this->assertSame('password_reset_requests', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
➜ 16▕ $this->assertSame(false, $model->timestamps);
|
||
17▕ $this->assertSame(['ip_address', 'requested_at'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
|
||
1 tests/Unit/Models/PasswordResetRequestTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\PasswordResetTest > model metadata is converted
|
||
Failed asserting that true is identical to false.
|
||
|
||
at tests/Unit/Models/PasswordResetTest.php:16
|
||
12▕ $model = new PasswordReset;
|
||
13▕
|
||
14▕ $this->assertSame('password_resets', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
➜ 16▕ $this->assertSame(false, $model->timestamps);
|
||
17▕ $this->assertSame(['email', 'token', 'created_at', 'expires_at'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
|
||
1 tests/Unit/Models/PasswordResetTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\PayPalPaymentTest > model metadata is converted
|
||
Failed asserting that true is identical to false.
|
||
|
||
at tests/Unit/Models/PayPalPaymentTest.php:16
|
||
12▕ $model = new PayPalPayment;
|
||
13▕
|
||
14▕ $this->assertSame('paypal_payments', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
➜ 16▕ $this->assertSame(false, $model->timestamps);
|
||
17▕ $this->assertSame(['webhook_id', 'parent_school_id', 'order_id', 'transaction_id', 'status', 'amount', 'currency', 'paypal_fee', 'net_amount', 'payer_email', 'merchant_id', 'event_type', 'summary', 'raw_payload', 'synced', 'sync_attempts', 'created_at'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
|
||
1 tests/Unit/Models/PayPalPaymentTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\PaymentTest > model metadata is converted
|
||
Failed asserting that false is identical to true.
|
||
|
||
at tests/Unit/Models/PaymentTest.php:16
|
||
12▕ $model = new Payment;
|
||
13▕
|
||
14▕ $this->assertSame('payments', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
➜ 16▕ $this->assertSame(true, $model->timestamps);
|
||
17▕ $this->assertSame(['parent_id', 'invoice_id', 'total_amount', 'paid_amount', 'balance', 'number_of_installments', 'transaction_id', 'check_file', 'check_number', 'payment_method', 'payment_date', 'semester', 'school_year', 'status', 'updated_by', 'created_at', 'updated_at'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
|
||
1 tests/Unit/Models/PaymentTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\PurchaseOrderItemTest > model metadata is conve…
|
||
Failed asserting that two arrays are identical.
|
||
Array &0 [
|
||
0 => 'purchase_order_id',
|
||
1 => 'supply_id',
|
||
- 2 => 'description',
|
||
- 3 => 'quantity',
|
||
- 4 => 'received_qty',
|
||
- 5 => 'unit_cost',
|
||
+ 2 => 'inventory_item_id',
|
||
+ 3 => 'description',
|
||
+ 4 => 'quantity',
|
||
+ 5 => 'received_qty',
|
||
+ 6 => 'unit_cost',
|
||
]
|
||
|
||
|
||
at tests/Unit/Models/PurchaseOrderItemTest.php:17
|
||
13▕
|
||
14▕ $this->assertSame('purchase_order_items', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
16▕ $this->assertSame(true, $model->timestamps);
|
||
➜ 17▕ $this->assertSame(['purchase_order_id', 'supply_id', 'description', 'quantity', 'received_qty', 'unit_cost'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
21▕ {
|
||
|
||
1 tests/Unit/Models/PurchaseOrderItemTest.php:17
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\QuizTest > model metadata is converted
|
||
Failed asserting that false is identical to true.
|
||
|
||
at tests/Unit/Models/QuizTest.php:16
|
||
12▕ $model = new Quiz;
|
||
13▕
|
||
14▕ $this->assertSame('quiz', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
➜ 16▕ $this->assertSame(true, $model->timestamps);
|
||
17▕ $this->assertSame(['student_id', 'school_id', 'class_section_id', 'updated_by', 'quiz_index', 'score', 'comment', 'semester', 'school_year', 'created_at', 'updated_at'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
|
||
1 tests/Unit/Models/QuizTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\ScoreCommentTest > model metadata is converted
|
||
Failed asserting that true is identical to false.
|
||
|
||
at tests/Unit/Models/ScoreCommentTest.php:16
|
||
12▕ $model = new ScoreComment;
|
||
13▕
|
||
14▕ $this->assertSame('score_comments', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
➜ 16▕ $this->assertSame(false, $model->timestamps);
|
||
17▕ $this->assertSame(['student_id', 'class_section_id', 'score_type', 'semester', 'school_year', 'comment', 'comment_review', 'reviewed_by', 'commented_by', 'created_at'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
|
||
1 tests/Unit/Models/ScoreCommentTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\SectionTest > model metadata is converted
|
||
Failed asserting that true is identical to false.
|
||
|
||
at tests/Unit/Models/SectionTest.php:16
|
||
12▕ $model = new Section;
|
||
13▕
|
||
14▕ $this->assertSame('sections', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
➜ 16▕ $this->assertSame(false, $model->timestamps);
|
||
17▕ $this->assertSame(['section_name', 'description', 'updated_at', 'updated_by'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
|
||
1 tests/Unit/Models/SectionTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\StaffTest > model metadata is converted
|
||
Failed asserting that false is identical to true.
|
||
|
||
at tests/Unit/Models/StaffTest.php:16
|
||
12▕ $model = new Staff;
|
||
13▕
|
||
14▕ $this->assertSame('staff', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
➜ 16▕ $this->assertSame(true, $model->timestamps);
|
||
17▕ $this->assertSame(['firstname', 'lastname', 'email', 'phone', 'role_name', 'school_year', 'active_role', 'created_at', 'updated_at', 'user_id'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
|
||
1 tests/Unit/Models/StaffTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\TeacherTest > model metadata is converted
|
||
Failed asserting that two arrays are identical.
|
||
Array &0 [
|
||
- 0 => 'school_id',
|
||
- 1 => 'firstname',
|
||
+ 0 => 'password',
|
||
+ 1 => 'account_id',
|
||
2 => 'lastname',
|
||
- 3 => 'gender',
|
||
- 4 => 'cellphone',
|
||
- 5 => 'email',
|
||
- 6 => 'address_street',
|
||
- 7 => 'apt',
|
||
- 8 => 'city',
|
||
- 9 => 'state',
|
||
- 10 => 'zip',
|
||
- 11 => 'accept_school_policy',
|
||
- 12 => 'is_verified',
|
||
- 13 => 'status',
|
||
- 14 => 'is_suspended',
|
||
- 15 => 'failed_attempts',
|
||
- 16 => 'password',
|
||
- 17 => 'created_at',
|
||
- 18 => 'updated_at',
|
||
- 19 => 'token',
|
||
- 20 => 'account_id',
|
||
- 21 => 'user_type',
|
||
- 22 => 'semester',
|
||
- 23 => 'school_year',
|
||
- 24 => 'rfid_tag',
|
||
- 25 => 'last_failed_at',
|
||
+ 3 => 'firstname',
|
||
+ 4 => 'gender',
|
||
+ 5 => 'cellphone',
|
||
+ 6 => 'email',
|
||
+ 7 => 'address_street',
|
||
+ 8 => 'apt',
|
||
+ 9 => 'city',
|
||
+ 10 => 'state',
|
||
+ 11 => 'zip',
|
||
+ 12 => 'accept_school_policy',
|
||
+ 13 => 'user_type',
|
||
+ 14 => 'rfid_tag',
|
||
+ 15 => 'school_id',
|
||
+ 16 => 'failed_attempts',
|
||
+ 17 => 'last_failed_at',
|
||
+ 18 => 'semester',
|
||
+ 19 => 'school_year',
|
||
+ 20 => 'status',
|
||
+ 21 => 'is_suspended',
|
||
+ 22 => 'is_verified',
|
||
+ 23 => 'token',
|
||
+ 24 => 'updated_at',
|
||
+ 25 => 'created_at',
|
||
]
|
||
|
||
|
||
at tests/Unit/Models/TeacherTest.php:17
|
||
13▕
|
||
14▕ $this->assertSame('users', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
16▕ $this->assertSame(true, $model->timestamps);
|
||
➜ 17▕ $this->assertSame(['school_id', 'firstname', 'lastname', 'gender', 'cellphone', 'email', 'address_street', 'apt', 'city', 'state', 'zip', 'accept_school_policy', 'is_verified', 'status', 'is_suspended', 'failed_attempts', 'password', 'created_at', 'updated_at', 'token', 'account_id', 'user_type', 'semester', 'school_year', 'rfid_tag', 'last_failed_at'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
21▕ {
|
||
|
||
1 tests/Unit/Models/TeacherTest.php:17
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Models\UserTest > model metadata is converted
|
||
Failed asserting that two arrays are identical.
|
||
Array &0 [
|
||
- 0 => 'school_id',
|
||
- 1 => 'firstname',
|
||
+ 0 => 'password',
|
||
+ 1 => 'account_id',
|
||
2 => 'lastname',
|
||
- 3 => 'gender',
|
||
- 4 => 'cellphone',
|
||
- 5 => 'email',
|
||
- 6 => 'address_street',
|
||
- 7 => 'apt',
|
||
- 8 => 'city',
|
||
- 9 => 'state',
|
||
- 10 => 'zip',
|
||
- 11 => 'accept_school_policy',
|
||
- 12 => 'is_verified',
|
||
- 13 => 'status',
|
||
- 14 => 'is_suspended',
|
||
- 15 => 'failed_attempts',
|
||
- 16 => 'password',
|
||
- 17 => 'created_at',
|
||
- 18 => 'updated_at',
|
||
- 19 => 'token',
|
||
- 20 => 'account_id',
|
||
- 21 => 'user_type',
|
||
- 22 => 'semester',
|
||
- 23 => 'school_year',
|
||
- 24 => 'rfid_tag',
|
||
- 25 => 'last_failed_at',
|
||
+ 3 => 'firstname',
|
||
+ 4 => 'gender',
|
||
+ 5 => 'cellphone',
|
||
+ 6 => 'email',
|
||
+ 7 => 'address_street',
|
||
+ 8 => 'apt',
|
||
+ 9 => 'city',
|
||
+ 10 => 'state',
|
||
+ 11 => 'zip',
|
||
+ 12 => 'accept_school_policy',
|
||
+ 13 => 'user_type',
|
||
+ 14 => 'rfid_tag',
|
||
+ 15 => 'school_id',
|
||
+ 16 => 'failed_attempts',
|
||
+ 17 => 'last_failed_at',
|
||
+ 18 => 'semester',
|
||
+ 19 => 'school_year',
|
||
+ 20 => 'status',
|
||
+ 21 => 'is_suspended',
|
||
+ 22 => 'is_verified',
|
||
+ 23 => 'token',
|
||
+ 24 => 'updated_at',
|
||
+ 25 => 'created_at',
|
||
]
|
||
|
||
|
||
at tests/Unit/Models/UserTest.php:17
|
||
13▕
|
||
14▕ $this->assertSame('users', $model->getTable());
|
||
15▕ $this->assertSame('id', $model->getKeyName());
|
||
16▕ $this->assertSame(true, $model->timestamps);
|
||
➜ 17▕ $this->assertSame(['school_id', 'firstname', 'lastname', 'gender', 'cellphone', 'email', 'address_street', 'apt', 'city', 'state', 'zip', 'accept_school_policy', 'is_verified', 'status', 'is_suspended', 'failed_attempts', 'password', 'created_at', 'updated_at', 'token', 'account_id', 'user_type', 'semester', 'school_year', 'rfid_tag', 'last_failed_at'], $model->getFillable());
|
||
18▕ }
|
||
19▕
|
||
20▕ public function test_model_class_loads(): void
|
||
21▕ {
|
||
|
||
1 tests/Unit/Models/UserTest.php:17
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Resources\Messaging\MessageResourceTes… QueryException
|
||
SQLSTATE[HY000]: General error: 1 no such table: users (Connection: sqlite, Database: :memory:, SQL: select * from "users" where "users"."id" = 2 limit 1)
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+19 vendor frames [22m
|
||
20 app/Http/Resources/Messaging/MessageResource.php:27
|
||
21 tests/Unit/Resources/Messaging/MessageResourceTest.php:28
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Resources\Staff\StaffResourceTest > resource returns e…
|
||
Failed asserting that null is identical to 1.
|
||
|
||
at tests/Unit/Resources/Staff/StaffResourceTest.php:26
|
||
22▕ ]);
|
||
23▕
|
||
24▕ $payload = (new StaffResource($staff))->toArray(request());
|
||
25▕
|
||
➜ 26▕ $this->assertSame(1, $payload['id']);
|
||
27▕ $this->assertSame('teacher', $payload['role_name']);
|
||
28▕ }
|
||
29▕ }
|
||
30▕
|
||
|
||
1 tests/Unit/Resources/Staff/StaffResourceTest.php:26
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Resources\Support\SupportRequestResourceTest > resourc…
|
||
Failed asserting that null is identical to 1.
|
||
|
||
at tests/Unit/Resources/Support/SupportRequestResourceTest.php:25
|
||
21▕ ]);
|
||
22▕
|
||
23▕ $payload = (new SupportRequestResource($model))->toArray(request());
|
||
24▕
|
||
➜ 25▕ $this->assertSame(1, $payload['id']);
|
||
26▕ $this->assertSame('Help', $payload['subject']);
|
||
27▕ }
|
||
28▕ }
|
||
29▕
|
||
|
||
1 tests/Unit/Resources/Support/SupportRequestResourceTest.php:25
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Administrator\Administrat… ArgumentCountError
|
||
Too few arguments to function App\Services\Administrator\AdministratorAbsenceService::__construct(), 5 passed in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Unit/Services/Administrator/AdministratorAbsenceServiceTest.php on line 28 and exactly 6 expected
|
||
|
||
at app/Services/Administrator/AdministratorAbsenceService.php:23
|
||
19▕ protected User $userModel,
|
||
20▕ protected StaffAttendance $staffAttendanceModel,
|
||
21▕ protected SemesterRangeService $semesterRangeService,
|
||
22▕ protected StaffTimeOffLinkService $staffTimeOffLinkService,
|
||
➜ 23▕ protected ApplicationUrlService $urls,
|
||
24▕ ) {}
|
||
25▕
|
||
26▕ public function getAbsenceFormData(int $userId): array
|
||
27▕ {
|
||
|
||
1 app/Services/Administrator/AdministratorAbsenceService.php:23
|
||
2 tests/Unit/Services/Administrator/AdministratorAbsenceServiceTest.php:28
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Administrator\Administrat… ArgumentCountError
|
||
Too few arguments to function App\Services\Administrator\AdministratorEnrollmentEventService::__construct(), 0 passed in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Unit/Services/Administrator/AdministratorEnrollmentEventServiceTest.php on line 18 and exactly 1 expected
|
||
|
||
at app/Services/Administrator/AdministratorEnrollmentEventService.php:12
|
||
8▕
|
||
9▕ class AdministratorEnrollmentEventService
|
||
10▕ {
|
||
11▕ public function __construct(
|
||
➜ 12▕ private ApplicationUrlService $urls,
|
||
13▕ ) {}
|
||
14▕
|
||
15▕ public function dispatchGroupedEvents(
|
||
16▕ array $groupsByParentStatus,
|
||
|
||
1 app/Services/Administrator/AdministratorEnrollmentEventService.php:12
|
||
2 tests/Unit/Services/Administrator/AdministratorEnrollmentEventServiceTest.php:18
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Administrator\TeacherSubm… ArgumentCountError
|
||
Too few arguments to function App\Services\Administrator\TeacherSubmissionNotificationService::__construct(), 2 passed in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Unit/Services/Administrator/TeacherSubmissionNotificationServiceTest.php on line 22 and exactly 3 expected
|
||
|
||
at app/Services/Administrator/TeacherSubmissionNotificationService.php:19
|
||
15▕ {
|
||
16▕ public function __construct(
|
||
17▕ protected AdministratorSharedService $shared,
|
||
18▕ protected TeacherSubmissionSupportService $support,
|
||
➜ 19▕ protected ApplicationUrlService $urls,
|
||
20▕ ) {}
|
||
21▕
|
||
22▕ public function send(Request $request, int $adminId): array
|
||
23▕ {
|
||
|
||
1 app/Services/Administrator/TeacherSubmissionNotificationService.php:19
|
||
2 tests/Unit/Services/Administrator/TeacherSubmissionNotificationServiceTest.php:22
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Administrator\Teacher… BadMethodCallException
|
||
Received Mockery_4_App_Services_Administrator_AdministratorSharedService::teacherClassSupportsSemester(), but no expectations were specified
|
||
|
||
at app/Services/Administrator/TeacherSubmissionReportService.php:23
|
||
19▕ public function report(array $filters = []): array
|
||
20▕ {
|
||
21▕ $semester = $this->shared->getSemester($filters['semester'] ?? null);
|
||
22▕ $schoolYear = $this->shared->getSchoolYear($filters['school_year'] ?? null);
|
||
➜ 23▕ $teacherClassSupportsSemester = $this->shared->teacherClassSupportsSemester();
|
||
24▕
|
||
25▕ $assignmentQuery = DB::table('teacher_class as tc')
|
||
26▕ ->select([
|
||
27▕ 'tc.class_section_id',
|
||
|
||
1 app/Services/Administrator/TeacherSubmissionReportService.php:23
|
||
2 tests/Unit/Services/Administrator/TeacherSubmissionReportServiceTest.php:38
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Assignment\AssignmentSectionS… ErrorException
|
||
Undefined array key 1
|
||
|
||
at tests/Unit/Services/Assignment/AssignmentSectionServiceTest.php:29
|
||
25▕
|
||
26▕ $service = new AssignmentSectionService(new ClassSection);
|
||
27▕ $map = $service->getSectionNamesMap([1]);
|
||
28▕
|
||
➜ 29▕ $this->assertSame('1-A', $map[1]);
|
||
30▕ }
|
||
31▕ }
|
||
32▕
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\AssignmentServiceTest > get assignments overv…
|
||
Failed asserting that two strings are identical.
|
||
-'Alpha Section'
|
||
+''
|
||
|
||
|
||
at tests/Unit/Services/AssignmentServiceTest.php:147
|
||
143▕
|
||
144▕ $section = $result['classSections'][0];
|
||
145▕
|
||
146▕ $this->assertSame($this->sectionA->id, $section['class_section_id']);
|
||
➜ 147▕ $this->assertSame('Alpha Section', $section['class_section_name']);
|
||
148▕ $this->assertSame(['John Doe'], $section['main_teachers']);
|
||
149▕ $this->assertSame(['Jane Smith'], $section['teacher_assistants']);
|
||
150▕ $this->assertSame('Fall', $section['semester']);
|
||
151▕ $this->assertSame('2025-2026', $section['school_year']);
|
||
|
||
1 tests/Unit/Services/AssignmentServiceTest.php:147
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\AssignmentServiceTest > get assignments overv…
|
||
Failed asserting that two strings are identical.
|
||
-'Alpha Section'
|
||
+''
|
||
|
||
|
||
at tests/Unit/Services/AssignmentServiceTest.php:233
|
||
229▕
|
||
230▕ $result = $this->service->getAssignmentsOverview();
|
||
231▕
|
||
232▕ $this->assertCount(2, $result['classSections']);
|
||
➜ 233▕ $this->assertSame('Alpha Section', $result['classSections'][0]['class_section_name']);
|
||
234▕ $this->assertSame('Beta Section', $result['classSections'][1]['class_section_name']);
|
||
235▕ }
|
||
236▕
|
||
237▕ public function test_get_assignments_overview_collects_school_years_descending(): void
|
||
|
||
1 tests/Unit/Services/AssignmentServiceTest.php:233
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\AssignmentServiceTest > get class assignment…
|
||
Failed asserting that two strings are identical.
|
||
-'Alpha Section'
|
||
+''
|
||
|
||
|
||
at tests/Unit/Services/AssignmentServiceTest.php:366
|
||
362▕
|
||
363▕ $this->assertSame('Fall', $result['semester']);
|
||
364▕ $this->assertSame('2025-2026', $result['school_year']);
|
||
365▕ $this->assertCount(2, $result['classSections']);
|
||
➜ 366▕ $this->assertSame('Alpha Section', $result['classSections'][0]['class_section_name']);
|
||
367▕ $this->assertSame('Beta Section', $result['classSections'][1]['class_section_name']);
|
||
368▕ }
|
||
369▕
|
||
370▕ public function test_get_class_assignment_data_deduplicates_teacher_names(): void
|
||
|
||
1 tests/Unit/Services/AssignmentServiceTest.php:366
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Attendance\AttendanceDailySummaryServiceTest…
|
||
Failed asserting that 0 is identical to 1.
|
||
|
||
at tests/Unit/Services/Attendance/AttendanceDailySummaryServiceTest.php:66
|
||
62▕ $service = new AttendanceDailySummaryService($notifier, $email);
|
||
63▕
|
||
64▕ $count = $service->sendAbsenteesSummary();
|
||
65▕
|
||
➜ 66▕ $this->assertSame(1, $count);
|
||
67▕ }
|
||
68▕ }
|
||
69▕
|
||
|
||
1 tests/Unit/Services/Attendance/AttendanceDailySummaryServiceTest.php:66
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Attendance\AttendanceSemesterRangeServiceTest…
|
||
Failed asserting that two arrays are identical.
|
||
Array &0 [
|
||
- 0 => '2025-09-21',
|
||
- 1 => '2026-01-18',
|
||
+ 0 => '2025-09-01',
|
||
+ 1 => '2026-01-24',
|
||
]
|
||
|
||
|
||
at tests/Unit/Services/Attendance/AttendanceSemesterRangeServiceTest.php:18
|
||
14▕ {
|
||
15▕ $service = new SemesterRangeService;
|
||
16▕ $range = $service->getSemesterRange('2025-2026', 'fall');
|
||
17▕
|
||
➜ 18▕ $this->assertSame(['2025-09-21', '2026-01-18'], $range);
|
||
19▕ }
|
||
20▕
|
||
21▕ public function test_build_sunday_list_returns_sundays(): void
|
||
22▕ {
|
||
|
||
1 tests/Unit/Services/Attendance/AttendanceSemesterRangeServiceTest.php:18
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Attendance\LateSlipLogCommand… QueryException
|
||
SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: late_slip_logs.printed_at (Connection: sqlite, Database: :memory:, SQL: insert into "late_slip_logs" ("school_year", "semester", "student_name", "slip_date", "time_in", "grade", "reason", "admin_name") values (2025-2026, Fall, Student X, 2025-09-01 00:00:00, 08:05:00, 4, Traffic, Admin User))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+16 vendor frames [22m
|
||
17 tests/Unit/Services/Attendance/LateSlipLogCommandServiceTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Attendance\LateSlipLogQuerySe… QueryException
|
||
SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: late_slip_logs.printed_at (Connection: sqlite, Database: :memory:, SQL: insert into "late_slip_logs" ("school_year", "semester", "slip_date", "student_name") values (2025-2026, Fall, 2025-09-01, Student A), (2025-2026, Fall, 2025-10-01, Student B))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+8 vendor frames [22m
|
||
9 tests/Unit/Services/Attendance/LateSlipLogQueryServiceTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Attendance\Semest… BindingResolutionException
|
||
Target class [config] does not exist.
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Container/Container.php:1124
|
||
1120▕
|
||
1121▕ try {
|
||
1122▕ $reflector = new ReflectionClass($concrete);
|
||
1123▕ } catch (ReflectionException $e) {
|
||
➜ 1124▕ throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
|
||
1125▕ }
|
||
1126▕
|
||
1127▕ // If the type is not instantiable, the developer is attempting to resolve
|
||
1128▕ // an abstract type such as an Interface or Abstract Class and there is
|
||
|
||
[2m+17 vendor frames [22m
|
||
18 app/Models/Configuration.php:50
|
||
19 app/Services/Attendance/SemesterRangeService.php:124
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\AttendanceTracking\Attend… ArgumentCountError
|
||
Too few arguments to function App\Services\AttendanceTracking\AttendanceTrackingService::__construct(), 0 passed in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Unit/Services/AttendanceTracking/AttendanceTrackingServiceTest.php on line 15 and exactly 4 expected
|
||
|
||
at app/Services/AttendanceTracking/AttendanceTrackingService.php:16
|
||
12▕ */
|
||
13▕ class AttendanceTrackingService
|
||
14▕ {
|
||
15▕ public function __construct(
|
||
➜ 16▕ protected AttendancePendingViolationService $pendingViolationService,
|
||
17▕ protected AttendanceCaseQueryService $caseQueryService,
|
||
18▕ protected AttendanceNotificationWorkflowService $workflowService,
|
||
19▕ protected AttendanceCommunicationSupportService $communicationSupportService,
|
||
20▕ ) {}
|
||
|
||
1 app/Services/AttendanceTracking/AttendanceTrackingService.php:16
|
||
2 tests/Unit/Services/AttendanceTracking/AttendanceTrackingServiceTest.php:15
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Auth\RegistrationServiceT… ArgumentCountError
|
||
Too few arguments to function App\Services\Auth\RegistrationService::__construct(), 4 passed in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Unit/Services/Auth/RegistrationServiceTest.php on line 44 and exactly 5 expected
|
||
|
||
at app/Services/Auth/RegistrationService.php:22
|
||
18▕ private EmailService $emailService,
|
||
19▕ private SchoolIdService $schoolIdService,
|
||
20▕ private RegistrationFormatterService $formatter,
|
||
21▕ private RegistrationCaptchaService $captchaService,
|
||
➜ 22▕ private ApplicationUrlService $urls,
|
||
23▕ ) {}
|
||
24▕
|
||
25▕ public function register(array $payload): array
|
||
26▕ {
|
||
|
||
1 app/Services/Auth/RegistrationService.php:22
|
||
2 tests/Unit/Services/Auth/RegistrationServiceTest.php:44
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Auth\RegistrationServiceT… ArgumentCountError
|
||
Too few arguments to function App\Services\Auth\RegistrationService::__construct(), 4 passed in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Unit/Services/Auth/RegistrationServiceTest.php on line 124 and exactly 5 expected
|
||
|
||
at app/Services/Auth/RegistrationService.php:22
|
||
18▕ private EmailService $emailService,
|
||
19▕ private SchoolIdService $schoolIdService,
|
||
20▕ private RegistrationFormatterService $formatter,
|
||
21▕ private RegistrationCaptchaService $captchaService,
|
||
➜ 22▕ private ApplicationUrlService $urls,
|
||
23▕ ) {}
|
||
24▕
|
||
25▕ public function register(array $payload): array
|
||
26▕ {
|
||
|
||
1 app/Services/Auth/RegistrationService.php:22
|
||
2 tests/Unit/Services/Auth/RegistrationServiceTest.php:124
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Billing\BalanceCalculationServiceTest > calcu…
|
||
Failed asserting that 0.0 is identical to 100.0.
|
||
|
||
at tests/Unit/Services/Billing/BalanceCalculationServiceTest.php:105
|
||
101▕ ], $parentId);
|
||
102▕
|
||
103▕ $this->assertSame($parentId, $result['parent_id']);
|
||
104▕ $this->assertSame(550.0, $result['charges']['tuition']);
|
||
➜ 105▕ $this->assertSame(100.0, $result['charges']['extra_charges']);
|
||
106▕ $this->assertSame(50.0, $result['charges']['event_charges']);
|
||
107▕ $this->assertSame(700.0, $result['charges']['total']);
|
||
108▕ $this->assertSame(500.0, $result['payments']);
|
||
109▕ $this->assertSame(80.0, $result['credits']['total']);
|
||
|
||
1 tests/Unit/Services/Billing/BalanceCalculationServiceTest.php:105
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Billing\BillingTotalsServiceT… QueryException
|
||
SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: additional_charges.title (Connection: sqlite, Database: :memory:, SQL: insert into "additional_charges" ("amount", "charge_type", "id", "invoice_id", "parent_id", "school_year", "semester", "status") values (15, add, 1, 99, 10, 2025-2026, Fall, applied), (5, deduct, 2, 99, 10, 2025-2026, Fall, applied))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+8 vendor frames [22m
|
||
9 tests/Unit/Services/Billing/BillingTotalsServiceTest.php:31
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Billing\BillingTotalsServiceTest > additional…
|
||
Failed asserting that 0.0 is identical to 30.0.
|
||
|
||
at tests/Unit/Services/Billing/BillingTotalsServiceTest.php:100
|
||
96▕ ]);
|
||
97▕
|
||
98▕ $service = new BillingTotalsService;
|
||
99▕
|
||
➜ 100▕ $this->assertSame(30.0, $service->additionalSubtotalByParent(10, '2025-2026'));
|
||
101▕ }
|
||
102▕
|
||
103▕ public function test_event_subtotals_by_student_groups_amounts(): void
|
||
104▕ {
|
||
|
||
1 tests/Unit/Services/Billing/BillingTotalsServiceTest.php:100
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Billing\ChargeServiceTest > cancel event char…
|
||
Failed asserting that true is identical to 'no'.
|
||
|
||
at tests/Unit/Services/Billing/ChargeServiceTest.php:124
|
||
120▕ $this->assertTrue($result['ok']);
|
||
121▕ $this->assertSame('canceled', $result['cancellation_status']);
|
||
122▕
|
||
123▕ $charge = EventCharges::query()->find($chargeId);
|
||
➜ 124▕ $this->assertSame('no', $charge->participation);
|
||
125▕ $this->assertSame(0.0, (float) $charge->charged);
|
||
126▕
|
||
127▕ $this->assertDatabaseHas('additional_charges', [
|
||
128▕ 'parent_id' => 10,
|
||
|
||
1 tests/Unit/Services/Billing/ChargeServiceTest.php:124
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\ClassPreparation\ClassPrepara… QueryException
|
||
SQLSTATE[HY000]: General error: 1 table class_prep_adjustments has no column named updated_at (Connection: sqlite, Database: :memory:, SQL: insert into "class_prep_adjustments" ("class_section_id", "item_name", "adjustment", "school_year", "adjustable", "updated_at", "created_at") values (101, Small Table, 2, 2025-2026, 1, 2026-07-05 22:09:19, 2026-07-05 22:09:19))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+16 vendor frames [22m
|
||
17 app/Services/ClassPreparation/ClassPreparationAdjustmentWriterService.php:39
|
||
[2m+3 vendor frames [22m
|
||
21 app/Services/ClassPreparation/ClassPreparationAdjustmentWriterService.php:14
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\ClassPreparation\ClassPreparationLogServiceTe…
|
||
Failed asserting that false is true.
|
||
|
||
at tests/Unit/Services/ClassPreparation/ClassPreparationLogServiceTest.php:26
|
||
22▕ {
|
||
23▕ $service = new ClassPreparationLogService;
|
||
24▕ $created = $service->createLog('101', '1-A', '2025-2026', ['Small Table' => 2], '2025-09-01 00:00:00');
|
||
25▕
|
||
➜ 26▕ $this->assertTrue($created);
|
||
27▕ $this->assertDatabaseHas('class_preparation_log', [
|
||
28▕ 'class_section_id' => 101,
|
||
29▕ 'school_year' => '2025-2026',
|
||
30▕ ]);
|
||
|
||
1 tests/Unit/Services/ClassPreparation/ClassPreparationLogServiceTest.php:26
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\ClassPreparation\ClassPreparationPrintService…
|
||
Failed asserting that false is true.
|
||
|
||
at tests/Unit/Services/ClassPreparation/ClassPreparationPrintServiceTest.php:33
|
||
29▕
|
||
30▕ $service = app(ClassPreparationPrintService::class);
|
||
31▕ $payload = $service->printPrep('101', '2025-2026', 'Fall');
|
||
32▕
|
||
➜ 33▕ $this->assertTrue($payload['ok']);
|
||
34▕ $this->assertDatabaseHas('class_preparation_log', [
|
||
35▕ 'class_section_id' => 101,
|
||
36▕ 'school_year' => '2025-2026',
|
||
37▕ ]);
|
||
|
||
1 tests/Unit/Services/ClassPreparation/ClassPreparationPrintServiceTest.php:33
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\ClassPreparation\ClassPreparationServiceTest…
|
||
Failed asserting that 0 is identical to 1.
|
||
|
||
at tests/Unit/Services/ClassPreparation/ClassPreparationServiceTest.php:34
|
||
30▕
|
||
31▕ $service = app(ClassPreparationService::class);
|
||
32▕ $count = $service->markPrinted('2025-2026', 'Fall', [101]);
|
||
33▕
|
||
➜ 34▕ $this->assertSame(1, $count);
|
||
35▕ $this->assertDatabaseHas('class_preparation_log', [
|
||
36▕ 'class_section_id' => 101,
|
||
37▕ 'school_year' => '2025-2026',
|
||
38▕ ]);
|
||
|
||
1 tests/Unit/Services/ClassPreparation/ClassPreparationServiceTest.php:34
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\ClassProgress\ClassProgre… ArgumentCountError
|
||
Too few arguments to function App\Services\ClassProgress\ClassProgressMutationService::__construct(), 2 passed in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Unit/Services/ClassProgress/ClassProgressMutationServiceTest.php on line 24 and exactly 4 expected
|
||
|
||
at app/Services/ClassProgress/ClassProgressMutationService.php:21
|
||
17▕ {
|
||
18▕ public function __construct(
|
||
19▕ private ClassProgressRuleService $rules,
|
||
20▕ private ClassProgressAttachmentService $attachments,
|
||
➜ 21▕ private ClassProgressQueryService $queries,
|
||
22▕ private SchoolYearContextService $schoolYears,
|
||
23▕ ) {}
|
||
24▕
|
||
25▕ public function createReports(User $user, array $payload, array $filesBySubject): Collection
|
||
|
||
1 app/Services/ClassProgress/ClassProgressMutationService.php:21
|
||
2 tests/Unit/Services/ClassProgress/ClassProgressMutationServiceTest.php:24
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\ClassProgress\ClassProgre… ArgumentCountError
|
||
Too few arguments to function App\Services\ClassProgress\ClassProgressMutationService::__construct(), 2 passed in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Unit/Services/ClassProgress/ClassProgressMutationServiceTest.php on line 49 and exactly 4 expected
|
||
|
||
at app/Services/ClassProgress/ClassProgressMutationService.php:21
|
||
17▕ {
|
||
18▕ public function __construct(
|
||
19▕ private ClassProgressRuleService $rules,
|
||
20▕ private ClassProgressAttachmentService $attachments,
|
||
➜ 21▕ private ClassProgressQueryService $queries,
|
||
22▕ private SchoolYearContextService $schoolYears,
|
||
23▕ ) {}
|
||
24▕
|
||
25▕ public function createReports(User $user, array $payload, array $filesBySubject): Collection
|
||
|
||
1 app/Services/ClassProgress/ClassProgressMutationService.php:21
|
||
2 tests/Unit/Services/ClassProgress/ClassProgressMutationServiceTest.php:49
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\ClassProgress\ClassProgre… ArgumentCountError
|
||
Too few arguments to function App\Services\ClassProgress\ClassProgressMutationService::__construct(), 2 passed in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Unit/Services/ClassProgress/ClassProgressMutationServiceTest.php on line 62 and exactly 4 expected
|
||
|
||
at app/Services/ClassProgress/ClassProgressMutationService.php:21
|
||
17▕ {
|
||
18▕ public function __construct(
|
||
19▕ private ClassProgressRuleService $rules,
|
||
20▕ private ClassProgressAttachmentService $attachments,
|
||
➜ 21▕ private ClassProgressQueryService $queries,
|
||
22▕ private SchoolYearContextService $schoolYears,
|
||
23▕ ) {}
|
||
24▕
|
||
25▕ public function createReports(User $user, array $payload, array $filesBySubject): Collection
|
||
|
||
1 app/Services/ClassProgress/ClassProgressMutationService.php:21
|
||
2 tests/Unit/Services/ClassProgress/ClassProgressMutationServiceTest.php:62
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Discounts\DiscountApplySe… ArgumentCountError
|
||
Too few arguments to function App\Services\Discounts\DiscountInvoiceService::__construct(), 0 passed in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Unit/Services/Discounts/DiscountApplyServiceTest.php on line 33 and exactly 1 expected
|
||
|
||
at app/Services/Discounts/DiscountInvoiceService.php:19
|
||
15▕
|
||
16▕ class DiscountInvoiceService
|
||
17▕ {
|
||
18▕ public function __construct(
|
||
➜ 19▕ private ApplicationUrlService $urls,
|
||
20▕ ) {}
|
||
21▕
|
||
22▕ public function getCurrentInvoiceBalance(int $invoiceId, string $schoolYear): float
|
||
23▕ {
|
||
|
||
1 app/Services/Discounts/DiscountInvoiceService.php:19
|
||
2 tests/Unit/Services/Discounts/DiscountApplyServiceTest.php:33
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Events\EventStudentChargeServiceTest > list s…
|
||
Failed asserting that false is true.
|
||
|
||
at tests/Unit/Services/Events/EventStudentChargeServiceTest.php:37
|
||
33▕
|
||
34▕ $service = new EventStudentChargeService;
|
||
35▕ $rows = $service->listStudentsWithCharges(10, '2025-2026', 'Fall');
|
||
36▕
|
||
➜ 37▕ $this->assertTrue($rows[0]['charged']);
|
||
38▕ }
|
||
39▕ }
|
||
40▕
|
||
|
||
1 tests/Unit/Services/Events/EventStudentChargeServiceTest.php:37
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Expenses\ExpenseReceiptSe… ArgumentCountError
|
||
Too few arguments to function App\Services\Expenses\ExpenseReceiptService::__construct(), 0 passed in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Unit/Services/Expenses/ExpenseReceiptServiceTest.php on line 19 and exactly 1 expected
|
||
|
||
at app/Services/Expenses/ExpenseReceiptService.php:11
|
||
7▕
|
||
8▕ class ExpenseReceiptService
|
||
9▕ {
|
||
10▕ public function __construct(
|
||
➜ 11▕ private ApplicationUrlService $urls
|
||
12▕ ) {}
|
||
13▕
|
||
14▕ public function storeReceipt(UploadedFile $file): string
|
||
15▕ {
|
||
|
||
1 app/Services/Expenses/ExpenseReceiptService.php:11
|
||
2 tests/Unit/Services/Expenses/ExpenseReceiptServiceTest.php:19
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Fees\FeeRefundDetailServiceTe… QueryException
|
||
SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: payments.number_of_installments (Connection: sqlite, Database: :memory:, SQL: insert into "payments" ("id", "parent_id", "invoice_id", "paid_amount", "total_amount", "balance", "payment_date", "school_year", "semester", "status") values (1, 10, 1, 100, 100, 0, 2025-01-10, 2025-2026, Fall, Paid))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+8 vendor frames [22m
|
||
9 tests/Unit/Services/Fees/FeeRefundDetailServiceTest.php:45
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Navigation\NavBuilderServiceTest > reorder up…
|
||
Failed asserting that a row in the table [nav_items] matches the attributes {
|
||
"id": 2,
|
||
"sort_order": 5
|
||
}.
|
||
|
||
Found similar results: [
|
||
{
|
||
"id": 2,
|
||
"sort_order": 1
|
||
}
|
||
].
|
||
|
||
at tests/Unit/Services/Navigation/NavBuilderServiceTest.php:51
|
||
47▕
|
||
48▕ $service = new NavBuilderService(new NavbarService);
|
||
49▕ $service->reorder([$id => 5]);
|
||
50▕
|
||
➜ 51▕ $this->assertDatabaseHas('nav_items', [
|
||
52▕ 'id' => $id,
|
||
53▕ 'sort_order' => 5,
|
||
54▕ ]);
|
||
55▕ }
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Notifications\Notifica… InvalidCountException
|
||
Method sendEmail(<Any Arguments>) from Mockery_50_App_Services_Notifications_NotificationDispatchService should be called
|
||
exactly 1 times but called 2 times.
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Promotions\PromotionEligibilityServiceTest >…
|
||
Failed asserting that two strings are identical.
|
||
-'graduated'
|
||
+'awaiting_parent_enrollment'
|
||
|
||
|
||
at tests/Unit/Services/Promotions/PromotionEligibilityServiceTest.php:85
|
||
81▕ $service = $this->makeService();
|
||
82▕ $record = $service->evaluateStudent($studentId, '2025-2026', 1);
|
||
83▕
|
||
84▕ $this->assertNotNull($record);
|
||
➜ 85▕ $this->assertSame(StudentPromotionRecord::STATUS_GRADUATED, $record->promotion_status);
|
||
86▕ }
|
||
87▕
|
||
88▕ public function test_audit_log_records_status_changes(): void
|
||
89▕ {
|
||
|
||
1 tests/Unit/Services/Promotions/PromotionEligibilityServiceTest.php:85
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\PurchaseOrders\PurchaseOr… ArgumentCountError
|
||
Too few arguments to function App\Services\PurchaseOrders\PurchaseOrderReceiveService::__construct(), 0 passed in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Unit/Services/PurchaseOrders/PurchaseOrderReceiveServiceTest.php on line 42 and exactly 1 expected
|
||
|
||
at app/Services/PurchaseOrders/PurchaseOrderReceiveService.php:16
|
||
12▕
|
||
13▕ class PurchaseOrderReceiveService
|
||
14▕ {
|
||
15▕ public function __construct(
|
||
➜ 16▕ private InventoryMovementService $inventoryMovementService
|
||
17▕ ) {}
|
||
18▕
|
||
19▕ public function receive(int $poId, array $received, string $issuedBy): array
|
||
20▕ {
|
||
|
||
1 app/Services/PurchaseOrders/PurchaseOrderReceiveService.php:16
|
||
2 tests/Unit/Services/PurchaseOrders/PurchaseOrderReceiveServiceTest.php:42
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Refunds\RefundOverpaymentServ… QueryException
|
||
SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: payments.number_of_installments (Connection: sqlite, Database: :memory:, SQL: insert into "payments" ("id", "parent_id", "invoice_id", "paid_amount", "total_amount", "balance", "payment_date", "school_year", "semester", "status") values (1, 10, 1, 150, 150, 0, 2025-01-10, 2025-2026, Fall, Paid))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+8 vendor frames [22m
|
||
9 tests/Unit/Services/Refunds/RefundOverpaymentServiceTest.php:35
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Refunds\RefundPolicyServiceTe… QueryException
|
||
SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: payments.number_of_installments (Connection: sqlite, Database: :memory:, SQL: insert into "payments" ("id", "parent_id", "invoice_id", "paid_amount", "total_amount", "balance", "payment_date", "school_year", "semester", "status") values (1, 10, 1, 100, 100, 0, 2025-01-10, 2025-2026, Fall, Paid))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+8 vendor frames [22m
|
||
9 tests/Unit/Services/Refunds/RefundPolicyServiceTest.php:73
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Refunds\RefundRequestServiceT… QueryException
|
||
SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: payments.number_of_installments (Connection: sqlite, Database: :memory:, SQL: insert into "payments" ("id", "parent_id", "invoice_id", "paid_amount", "total_amount", "balance", "payment_date", "school_year", "semester", "status") values (1, 10, 1, 150, 150, 0, 2025-01-10, 2025-2026, Fall, Paid))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+8 vendor frames [22m
|
||
9 tests/Unit/Services/Refunds/RefundRequestServiceTest.php:48
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Refunds\RefundSummaryServiceT… QueryException
|
||
SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: payments.number_of_installments (Connection: sqlite, Database: :memory:, SQL: insert into "payments" ("id", "parent_id", "invoice_id", "paid_amount", "total_amount", "balance", "payment_date", "school_year", "semester", "status") values (1, 10, 1, 150, 150, 0, 2025-01-10, 2025-2026, Fall, Paid))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+8 vendor frames [22m
|
||
9 tests/Unit/Services/Refunds/RefundSummaryServiceTest.php:29
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Roles\RoleAssignmentServiceTest > assi… Error
|
||
Class "Tests\Unit\Services\Roles\RoleStaffService" not found
|
||
|
||
at tests/Unit/Services/Roles/RoleAssignmentServiceTest.php:44
|
||
40▕ 'created_at' => now(),
|
||
41▕ 'updated_at' => now(),
|
||
42▕ ]);
|
||
43▕
|
||
➜ 44▕ $service = new RoleAssignmentService(new RoleStaffService);
|
||
45▕ $result = $service->assignRoles($userId, [$roleId], $userId);
|
||
46▕
|
||
47▕ $this->assertTrue($result['ok']);
|
||
48▕ $this->assertDatabaseHas('user_roles', [
|
||
|
||
1 tests/Unit/Services/Roles/RoleAssignmentServiceTest.php:44
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\School\EnrollmentEventSer… ArgumentCountError
|
||
Too few arguments to function App\Services\School\EnrollmentEventService::__construct(), 2 passed in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Unit/Services/School/EnrollmentEventServiceTest.php on line 21 and exactly 3 expected
|
||
|
||
at app/Services/School/EnrollmentEventService.php:15
|
||
11▕ {
|
||
12▕ public function __construct(
|
||
13▕ private EmailService $emailService,
|
||
14▕ private UserNotificationDispatchService $notifier,
|
||
➜ 15▕ private ApplicationUrlService $urls,
|
||
16▕ ) {}
|
||
17▕
|
||
18▕ public function admissionUnderReview(array $parentData, array $students): array
|
||
19▕ {
|
||
|
||
1 app/Services/School/EnrollmentEventService.php:15
|
||
2 tests/Unit/Services/School/EnrollmentEventServiceTest.php:21
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\School\EnrollmentEventSer… ArgumentCountError
|
||
Too few arguments to function App\Services\School\EnrollmentEventService::__construct(), 2 passed in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Unit/Services/School/EnrollmentEventServiceTest.php on line 40 and exactly 3 expected
|
||
|
||
at app/Services/School/EnrollmentEventService.php:15
|
||
11▕ {
|
||
12▕ public function __construct(
|
||
13▕ private EmailService $emailService,
|
||
14▕ private UserNotificationDispatchService $notifier,
|
||
➜ 15▕ private ApplicationUrlService $urls,
|
||
16▕ ) {}
|
||
17▕
|
||
18▕ public function admissionUnderReview(array $parentData, array $students): array
|
||
19▕ {
|
||
|
||
1 app/Services/School/EnrollmentEventService.php:15
|
||
2 tests/Unit/Services/School/EnrollmentEventServiceTest.php:40
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\School\PaymentEventServic… ArgumentCountError
|
||
Too few arguments to function App\Services\School\PaymentEventService::__construct(), 2 passed in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Unit/Services/School/PaymentEventServiceTest.php on line 21 and exactly 3 expected
|
||
|
||
at app/Services/School/PaymentEventService.php:15
|
||
11▕ {
|
||
12▕ public function __construct(
|
||
13▕ private EmailService $emailService,
|
||
14▕ private UserNotificationDispatchService $notifier,
|
||
➜ 15▕ private ApplicationUrlService $urls,
|
||
16▕ ) {}
|
||
17▕
|
||
18▕ public function paymentReceived(array $data, array $studentdata = []): array
|
||
19▕ {
|
||
|
||
1 app/Services/School/PaymentEventService.php:15
|
||
2 tests/Unit/Services/School/PaymentEventServiceTest.php:21
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\School\PaymentEventServic… ArgumentCountError
|
||
Too few arguments to function App\Services\School\PaymentEventService::__construct(), 2 passed in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Unit/Services/School/PaymentEventServiceTest.php on line 45 and exactly 3 expected
|
||
|
||
at app/Services/School/PaymentEventService.php:15
|
||
11▕ {
|
||
12▕ public function __construct(
|
||
13▕ private EmailService $emailService,
|
||
14▕ private UserNotificationDispatchService $notifier,
|
||
➜ 15▕ private ApplicationUrlService $urls,
|
||
16▕ ) {}
|
||
17▕
|
||
18▕ public function paymentReceived(array $data, array $studentdata = []): array
|
||
19▕ {
|
||
|
||
1 app/Services/School/PaymentEventService.php:15
|
||
2 tests/Unit/Services/School/PaymentEventServiceTest.php:45
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\SchoolIds\SchoolIdAssignmentServiceTest > ass…
|
||
Failed asserting that 2600001 is identical to '2600001'.
|
||
|
||
at tests/Unit/Services/SchoolIds/SchoolIdAssignmentServiceTest.php:24
|
||
20▕ $service = app(SchoolIdAssignmentService::class);
|
||
21▕ $schoolId = $service->assignToUser($user->id);
|
||
22▕
|
||
23▕ $this->assertNotNull($schoolId);
|
||
➜ 24▕ $this->assertSame($schoolId, User::query()->findOrFail($user->id)->school_id);
|
||
25▕ }
|
||
26▕
|
||
27▕ public function test_assign_returns_existing_school_id(): void
|
||
28▕ {
|
||
|
||
1 tests/Unit/Services/SchoolIds/SchoolIdAssignmentServiceTest.php:24
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Scores\ProjectCalculatorTest… QueryException
|
||
SQLSTATE[HY000]: General error: 1 no such function: REGEXP (Connection: sqlite, Database: :memory:, SQL: select avg("score") as aggregate from "project" where "student_id" = 9 and "semester" = Fall and "school_year" = 2024-2025 and "class_section_id" = 1 and "score" is not null and TRIM(COALESCE(score, '')) <> '' and TRIM(score) REGEXP '^-?[0-9]+(\.[0-9]+)?$')
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+13 vendor frames [22m
|
||
14 app/Models/Project.php:137
|
||
15 app/Services/Scores/ProjectCalculator.php:14
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Security\IpBanCommandServiceT… QueryException
|
||
SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: ip_attempts.last_attempt_at (Connection: sqlite, Database: :memory:, SQL: insert into "ip_attempts" ("ip_address", "attempts") values (10.0.0.9, 1))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+8 vendor frames [22m
|
||
9 tests/Unit/Services/Security/IpBanCommandServiceTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Security\IpBanCommandServiceT… QueryException
|
||
SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: ip_attempts.last_attempt_at (Connection: sqlite, Database: :memory:, SQL: insert into "ip_attempts" ("ip_address", "attempts", "blocked_until") values (10.0.0.10, 5, 2026-07-06 01:09:24))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+8 vendor frames [22m
|
||
9 tests/Unit/Services/Security/IpBanCommandServiceTest.php:32
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Security\IpBanQueryServiceTes… QueryException
|
||
SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: ip_attempts.last_attempt_at (Connection: sqlite, Database: :memory:, SQL: insert into "ip_attempts" ("attempts", "blocked_until", "ip_address") values (2, 2026-07-06 00:09:24, 10.0.0.1), (2, 2026-07-05 21:09:24, 10.0.0.2))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+8 vendor frames [22m
|
||
9 tests/Unit/Services/Security/IpBanQueryServiceTest.php:16
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Settings\SchoolCalendar\Schoo… QueryException
|
||
SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: calendar_events.date (Connection: sqlite, Database: :memory:, SQL: update "calendar_events" set "title" = Updated Event, "date" = ?, "description" = ?, "semester" = , "school_year" = , "updated_at" = 2026-07-05 22:09:25 where "id" = 1)
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+11 vendor frames [22m
|
||
12 app/Services/Settings/SchoolCalendar/SchoolCalendarMutationService.php:44
|
||
[2m+3 vendor frames [22m
|
||
16 app/Services/Settings/SchoolCalendar/SchoolCalendarMutationService.php:42
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Settings\SchoolCalendar\S… ArgumentCountError
|
||
Too few arguments to function App\Services\Settings\SchoolCalendar\SchoolCalendarNotificationService::__construct(), 1 passed in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Unit/Services/Settings/SchoolCalendar/SchoolCalendarNotificationServiceTest.php on line 15 and exactly 2 expected
|
||
|
||
at app/Services/Settings/SchoolCalendar/SchoolCalendarNotificationService.php:15
|
||
11▕ class SchoolCalendarNotificationService
|
||
12▕ {
|
||
13▕ public function __construct(
|
||
14▕ private EmailService $emailService,
|
||
➜ 15▕ private ApplicationUrlService $urls,
|
||
16▕ ) {}
|
||
17▕
|
||
18▕ public function notify(array $event, array $targets): array
|
||
19▕ {
|
||
|
||
1 app/Services/Settings/SchoolCalendar/SchoolCalendarNotificationService.php:15
|
||
2 tests/Unit/Services/Settings/SchoolCalendar/SchoolCalendarNotificationServiceTest.php:15
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Students\StudentProfileServic… ErrorException
|
||
Undefined variable $shouldSyncConditions
|
||
|
||
at app/Services/Students/StudentProfileService.php:50
|
||
46▕ if (! empty($studentData)) {
|
||
47▕ $student->update($studentData);
|
||
48▕ }
|
||
49▕
|
||
➜ 50▕ if ($shouldSyncConditions) {
|
||
51▕ $this->syncHealthList($student->id, StudentMedicalCondition::class, 'condition_name', $conditions);
|
||
52▕ }
|
||
53▕
|
||
54▕ if ($shouldSyncAllergies) {
|
||
|
||
[2m+3 vendor frames [22m
|
||
4 app/Services/Students/StudentProfileService.php:45
|
||
5 tests/Unit/Services/Students/StudentProfileServiceTest.php:19
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Students\StudentScoreCardServ… QueryException
|
||
SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: semester_scores.school_id (Connection: sqlite, Database: :memory:, SQL: insert into "semester_scores" ("student_id", "class_section_id", "school_year", "semester", "semester_score") values (1, 601, 2025-2026, Fall, 88))
|
||
|
||
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:838
|
||
834▕ $exceptionType = $this->isUniqueConstraintError($e)
|
||
835▕ ? UniqueConstraintViolationException::class
|
||
836▕ : QueryException::class;
|
||
837▕
|
||
➜ 838▕ throw new $exceptionType(
|
||
839▕ $this->getNameWithReadWriteType(),
|
||
840▕ $query,
|
||
841▕ $this->prepareBindings($bindings),
|
||
842▕ $e,
|
||
|
||
[2m+8 vendor frames [22m
|
||
9 tests/Unit/Services/Students/StudentScoreCardServiceTest.php:19
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Teachers\TeacherAbsenceSe… ArgumentCountError
|
||
Too few arguments to function App\Services\Teachers\TeacherAbsenceService::__construct(), 3 passed in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Unit/Services/Teachers/TeacherAbsenceServiceTest.php on line 25 and exactly 4 expected
|
||
|
||
at app/Services/Teachers/TeacherAbsenceService.php:20
|
||
16▕ public function __construct(
|
||
17▕ private TeacherConfigService $configService,
|
||
18▕ private SemesterRangeService $semesterRangeService,
|
||
19▕ private StaffTimeOffLinkService $staffTimeOffLinkService,
|
||
➜ 20▕ private ApplicationUrlService $urls,
|
||
21▕ ) {}
|
||
22▕
|
||
23▕ public function formData(int $userId): array
|
||
24▕ {
|
||
|
||
1 app/Services/Teachers/TeacherAbsenceService.php:20
|
||
2 tests/Unit/Services/Teachers/TeacherAbsenceServiceTest.php:25
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Teachers\TeacherAbsenceSe… ArgumentCountError
|
||
Too few arguments to function App\Services\Teachers\TeacherAbsenceService::__construct(), 3 passed in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Unit/Services/Teachers/TeacherAbsenceServiceTest.php on line 44 and exactly 4 expected
|
||
|
||
at app/Services/Teachers/TeacherAbsenceService.php:20
|
||
16▕ public function __construct(
|
||
17▕ private TeacherConfigService $configService,
|
||
18▕ private SemesterRangeService $semesterRangeService,
|
||
19▕ private StaffTimeOffLinkService $staffTimeOffLinkService,
|
||
➜ 20▕ private ApplicationUrlService $urls,
|
||
21▕ ) {}
|
||
22▕
|
||
23▕ public function formData(int $userId): array
|
||
24▕ {
|
||
|
||
1 app/Services/Teachers/TeacherAbsenceService.php:20
|
||
2 tests/Unit/Services/Teachers/TeacherAbsenceServiceTest.php:44
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Unit\Services\Whatsapp\WhatsappInviteNotificationServiceTes…
|
||
Failed asserting that true is false.
|
||
|
||
at tests/Unit/Services/Whatsapp/WhatsappInviteNotificationServiceTest.php:20
|
||
16▕ {
|
||
17▕ $service = new WhatsappInviteNotificationService;
|
||
18▕ $result = $service->dispatch([], '2025-2026', 'Fall');
|
||
19▕
|
||
➜ 20▕ $this->assertFalse($result['ok']);
|
||
21▕ }
|
||
22▕
|
||
23▕ public function test_dispatch_triggers_event_when_listener_registered(): void
|
||
24▕ {
|
||
|
||
1 tests/Unit/Services/Whatsapp/WhatsappInviteNotificationServiceTest.php:20
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\ApiAuthenticationAndAuthorizationTest > admin o…
|
||
GET /api/v1/school-years should reject a non-admin user; got 200
|
||
Failed asserting that an array contains 200.
|
||
|
||
at tests/Feature/Api/ApiAuthenticationAndAuthorizationTest.php:91
|
||
87▕
|
||
88▕ foreach ($this->adminOnlyEndpoints() as [$method, $uri]) {
|
||
89▕ $response = $this->json($method, $uri);
|
||
90▕
|
||
➜ 91▕ $this->assertContains(
|
||
92▕ $response->getStatusCode(),
|
||
93▕ [401, 403],
|
||
94▕ "$method $uri should reject a non-admin user; got {$response->getStatusCode()}"
|
||
95▕ );
|
||
|
||
1 tests/Feature/Api/ApiAuthenticationAndAuthorizationTest.php:91
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\ApiRouteContractTest > every api route points t…
|
||
These API routes reference missing controllers or methods:
|
||
POST api/v1/school-years/{schoolYear}/archive -> App\Http\Controllers\Api\SchoolYears\SchoolYearController@archive
|
||
Failed asserting that two arrays are identical.
|
||
-Array &0 []
|
||
+Array &0 [
|
||
+ 0 => 'POST api/v1/school-years/{schoolYear}/archive -> App\Http\Controllers\Api\SchoolYears\SchoolYearController@archive',
|
||
+]
|
||
|
||
|
||
at tests/Feature/Api/ApiRouteContractTest.php:31
|
||
27▕ $missing[] = implode('|', $route->methods()).' '.$route->uri().' -> '.$action;
|
||
28▕ }
|
||
29▕ }
|
||
30▕
|
||
➜ 31▕ $this->assertSame([], $missing, "These API routes reference missing controllers or methods:\n".implode("\n", $missing));
|
||
32▕ }
|
||
33▕
|
||
34▕ public function test_api_routes_do_not_duplicate_method_and_uri_pairs(): void
|
||
35▕ {
|
||
|
||
1 tests/Feature/Api/ApiRouteContractTest.php:31
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiAuthorizationCacheInvalidatio…
|
||
parent privilege escalation should be blocked at GET api/v1/school-years returned unexpected status 200. Body: {"ok":true,"data":[{"id":1,"name":"2025-2026","start_date":"2025-09-01","end_date":"2026-06-30","status":"active","is_current":true,"closed_at":null,"closed_by":null}],"meta":{"school_year":"2025-2026","current_school_year":"2025-2026","semester":"Fall","current_semester":"Fall","school_years":[{"id":1,"name":"2025-2026","label":"2025-2026","start_date":"2025-09-01","end_date":"2026-06-30","status":"active","is_current":true,"is_editable":true}],"semesters":[{"name":"Fall","label":"Fall","is_current":true},{"name":"Spring","label":"Spring","is_current":false}]},"school_years":[{"id":1,"name":"2025-2026","label":"2025-2026","start_date":"2025-09-01","end_date":"2026-06-30","status":"active","is_current":true,"is_editable":true}],"current_school_year":"2025-2026","current_semester":"Fall"}
|
||
Failed asserting that an array contains 200.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/ApiAuthorizationCacheInvalidationContractTest.php:29
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiBatch12BulkMutationBoundaryCo…
|
||
POST api/v1/school-years/{schoolYear}/archive returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiBatch12BulkMutationBoundaryContractTest.php",
|
||
"line": 24,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_bulk_mutation_routes_reject_empty_and_cross_domain_targets_cleanly",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiBatch12BulkMutationBoundaryContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiBatch13LocaleCalendarReligiou…
|
||
POST api/v1/school-years/{schoolYear}/archive returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiBatch13LocaleCalendarReligiousDateContractTest.php",
|
||
"line": 25,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_calendar_and_event_routes_handle_locale_specific_dates_cleanly",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiBatch13LocaleCalendarReligiousDateContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiBatch14AcademicPromotionRollb…
|
||
POST api/v1/school-years/{schoolYear}/archive returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiBatch14AcademicPromotionRollbackIntegrityContractTest.php",
|
||
"line": 13,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_promotion_and_school_year_routes_reject_unsafe_rollback_payloads",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiBatch14AcademicPromotionRollbackIntegrityContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiBatch14DataLifecycleArchivePu…
|
||
POST api/v1/school-years/{schoolYear}/archive returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiBatch14DataLifecycleArchivePurgeContractTest.php",
|
||
"line": 13,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_archive_purge_and_retention_routes_require_safe_controlled_requests",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiBatch14DataLifecycleArchivePurgeContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiBatch16TemporalConsistencyAnd…
|
||
POST api/v1/school-years/{schoolYear}/archive returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiBatch16TemporalConsistencyAndClockSkewContractTest.php",
|
||
"line": 25,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_batch16_clock_skew_and_temporal_boundaries_do_not_bypass_business_rules",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiBatch16TemporalConsistencyAndClockSkewContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiBatch18OrphanedRecordAndCasca…
|
||
POST api/v1/school-years/{schoolYear}/archive returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiBatch18OrphanedRecordAndCascadeBoundaryContractTest.php",
|
||
"line": 31,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_batch18_orphanedrecordandcascadeboundary_stays_controlled",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiBatch18OrphanedRecordAndCascadeBoundaryContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiBatch18TemporalAuditAndTimezo…
|
||
POST api/v1/school-years/{schoolYear}/archive returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiBatch18TemporalAuditAndTimezoneForgeryContractTest.php",
|
||
"line": 31,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_batch18_temporalauditandtimezoneforgery_stays_controlled",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiBatch18TemporalAuditAndTimezoneForgeryContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiBatch20LegalHoldRetentionAndP…
|
||
POST api/v1/school-years/{schoolYear}/archive returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiBatch20LegalHoldRetentionAndPurgeConflictContractTest.php",
|
||
"line": 32,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_batch20_legal_hold_retention_and_purge_conflict_stays_controlled",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiBatch20LegalHoldRetentionAndPurgeConflictContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiBatch20RegressionContinuityCo…
|
||
POST api/v1/school-years/{schoolYear}/archive returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiBatch20RegressionContinuityComplianceSweepTest.php",
|
||
"line": 50,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_batch20_continuity_compliance_and_export_sweep_stays_controlled",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiBatch20RegressionContinuityComplianceSweepTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiConcurrencyAndStaleWriteContr…
|
||
POST api/v1/school-years/{schoolYear}/archive returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiConcurrencyAndStaleWriteContractTest.php",
|
||
"line": 23,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_duplicate_update_payloads_remain_controlled_and_do_not_throw_server_errors",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiConcurrencyAndStaleWriteContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiDatabaseTransactionRollbackCo…
|
||
POST api/v1/school-years/{schoolYear}/archive destructive rollback should return a controlled response, not a 5xx crash. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiDatabaseTransactionRollbackContractTest.php",
|
||
"line": 55,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_delete_failures_do_not_remove_parent_or_student_fixtures",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiDatabaseTransactionRollbackContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that 500 is less than 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:11
|
||
7▕ trait AssertsE2EApiResponses
|
||
8▕ {
|
||
9▕ protected function assertNoServerError(TestResponse $response, string $context): void
|
||
10▕ {
|
||
➜ 11▕ $this->assertLessThan(
|
||
12▕ 500,
|
||
13▕ $response->getStatusCode(),
|
||
14▕ $context.' should return a controlled response, not a 5xx crash. Body: '.$response->getContent()
|
||
15▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:11
|
||
2 tests/Feature/Api/V1/FullSurface/ApiDatabaseTransactionRollbackContractTest.php:57
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiDateMoneyAndTimezoneBoundaryC…
|
||
POST api/v1/school-years/{schoolYear}/archive bad date 2025-02-30 returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiDateMoneyAndTimezoneBoundaryContractTest.php",
|
||
"line": 35,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_date_accepting_endpoints_reject_impossible_or_ambiguous_dates_cleanly",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiDateMoneyAndTimezoneBoundaryContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/ApiDateMoneyAndTimezoneBoundaryContractTest.php:36
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiDestructiveActionSafeguardCon…
|
||
POST api/v1/school-years/{schoolYear}/archive returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiDestructiveActionSafeguardContractTest.php",
|
||
"line": 48,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_archive_remove_cancel_and_void_routes_are_idempotent_or_conflict_safe",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiDestructiveActionSafeguardContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiEnumAndStateMachineContractTe…
|
||
POST api/v1/school-years/{schoolYear}/archive returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiEnumAndStateMachineContractTest.php",
|
||
"line": 22,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_status_fields_reject_unknown_states_without_defaulting_to_success",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiEnumAndStateMachineContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiErrorEnvelopeConsistencyContr…
|
||
parent denied api/v1/school-years returned unexpected status 200. Body: {"ok":true,"data":[{"id":1,"name":"2025-2026","start_date":"2025-09-01","end_date":"2026-06-30","status":"active","is_current":true,"closed_at":null,"closed_by":null}],"meta":{"school_year":"2025-2026","current_school_year":"2025-2026","semester":"Fall","current_semester":"Fall","school_years":[{"id":1,"name":"2025-2026","label":"2025-2026","start_date":"2025-09-01","end_date":"2026-06-30","status":"active","is_current":true,"is_editable":true}],"semesters":[{"name":"Fall","label":"Fall","is_current":true},{"name":"Spring","label":"Spring","is_current":false}]},"school_years":[{"id":1,"name":"2025-2026","label":"2025-2026","start_date":"2025-09-01","end_date":"2026-06-30","status":"active","is_current":true,"is_editable":true}],"current_school_year":"2025-2026","current_semester":"Fall"}
|
||
Failed asserting that an array contains 200.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/ApiErrorEnvelopeConsistencyContractTest.php:50
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiFeatureFlagAndConfigurationDr…
|
||
POST api/v1/school-years/{schoolYear}/archive missing config should return a controlled response, not a 5xx crash. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiFeatureFlagAndConfigurationDriftContractTest.php",
|
||
"line": 21,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_feature_flagged_routes_fail_closed_when_configuration_is_missing_or_disabled",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiFeatureFlagAndConfigurationDriftContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that 500 is less than 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:11
|
||
7▕ trait AssertsE2EApiResponses
|
||
8▕ {
|
||
9▕ protected function assertNoServerError(TestResponse $response, string $context): void
|
||
10▕ {
|
||
➜ 11▕ $this->assertLessThan(
|
||
12▕ 500,
|
||
13▕ $response->getStatusCode(),
|
||
14▕ $context.' should return a controlled response, not a 5xx crash. Body: '.$response->getContent()
|
||
15▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:11
|
||
2 tests/Feature/Api/V1/FullSurface/ApiFeatureFlagAndConfigurationDriftContractTest.php:23
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiMigrationSafeDefaultContractT…
|
||
POST api/v1/school-years/{schoolYear}/archive returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiMigrationSafeDefaultContractTest.php",
|
||
"line": 44,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_routes_handle_missing_optional_school_year_context_with_controlled_errors",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiMigrationSafeDefaultContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiNotificationMessagingDelivery…
|
||
POST api/v1/school-years/{schoolYear}/archive first message action should return a controlled response, not a 5xx crash. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiNotificationMessagingDeliveryContractTest.php",
|
||
"line": 49,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_read_archive_star_and_delete_message_actions_are_idempotent",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiNotificationMessagingDeliveryContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that 500 is less than 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:11
|
||
7▕ trait AssertsE2EApiResponses
|
||
8▕ {
|
||
9▕ protected function assertNoServerError(TestResponse $response, string $context): void
|
||
10▕ {
|
||
➜ 11▕ $this->assertLessThan(
|
||
12▕ 500,
|
||
13▕ $response->getStatusCode(),
|
||
14▕ $context.' should return a controlled response, not a 5xx crash. Body: '.$response->getContent()
|
||
15▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:11
|
||
2 tests/Feature/Api/V1/FullSurface/ApiNotificationMessagingDeliveryContractTest.php:52
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiPolicyAuthorizationDiscoveryC…
|
||
POST api/login should not be publicly mutable. returned unexpected status 200. Body: {"status":true,"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0L2FwaS9sb2dpbiIsImlhdCI6MTc1OTY1ODQwMCwiZXhwIjoxNzU5NzQ0ODAwLCJuYmYiOjE3NTk2NTg0MDAsImp0aSI6IkZiYWRlVGdiZ25yR3lTNloiLCJzdWIiOiI0IiwicHJ2IjoiMjNiZDVjODk0OWY2MDBhZGIzOWU3MDFjNDAwODcyZGI3YTU5NzZmNyIsIm5hbWUiOiJHdXkgR2VyaG9sZCIsInJvbGVzIjpbImFkbWluaXN0cmF0b3IiXX0.xnVw0PcjvOyJEW8uCogzIxsZqA5gt36-RVEkXCJf7Io","access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0L2FwaS9sb2dpbiIsImlhdCI6MTc1OTY1ODQwMCwiZXhwIjoxNzU5NzQ0ODAwLCJuYmYiOjE3NTk2NTg0MDAsImp0aSI6IkZiYWRlVGdiZ25yR3lTNloiLCJzdWIiOiI0IiwicHJ2IjoiMjNiZDVjODk0OWY2MDBhZGIzOWU3MDFjNDAwODcyZGI3YTU5NzZmNyIsIm5hbWUiOiJHdXkgR2VyaG9sZCIsInJvbGVzIjpbImFkbWluaXN0cmF0b3IiXX0.xnVw0PcjvOyJEW8uCogzIxsZqA5gt36-RVEkXCJf7Io","token_type":"bearer","expires_in":86400,"user":{"id":4,"name":"Guy Gerhold","firstname":"Guy","lastname":"Gerhold","email":"administrator-api-test-6a4ad64d11a2b935044371@example.test","roles":{"administrator":true},"class_section_id":null,"class_section_name":null}}
|
||
Failed asserting that an array contains 200.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/ApiPolicyAuthorizationDiscoveryContractTest.php:24
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiPublicAndAuthFullSurfaceContr…
|
||
Public POST /api/v1/register returned unexpected status 429. Body: {"message":"Too Many Attempts."}
|
||
Failed asserting that an array contains 429.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/ApiPublicAndAuthFullSurfaceContractTest.php:33
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiReferentialIntegrityAndForeig…
|
||
POST api/v1/attendance/admin/update should reject impossible foreign keys cleanly. returned unexpected status 200. Body: {"ok":true,"message":"Attendance updated successfully."}
|
||
Failed asserting that an array contains 200.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/ApiReferentialIntegrityAndForeignKeyContractTest.php:37
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiReportMathAndFinancialInvaria…
|
||
GET api/v1/finance/financial-report/pdf returned unexpected status 500. Body: {
|
||
"message": "The filename and the fallback cannot contain the \"/\" and \"\\\" characters.",
|
||
"exception": "InvalidArgumentException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/symfony/http-foundation/HeaderUtils.php",
|
||
"line": 187,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/symfony/http-foundation/ResponseHeaderBag.php",
|
||
"line": 234,
|
||
"function": "makeDisposition",
|
||
"class": "Symfony\\Component\\HttpFoundation\\HeaderUtils",
|
||
"type": "::"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ResponseFactory.php",
|
||
"line": 253,
|
||
"function": "makeDisposition",
|
||
"class": "Symfony\\Component\\HttpFoundation\\ResponseHeaderBag",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Controllers/Api/Finance/FinancialController.php",
|
||
"line": 319,
|
||
"function": "streamDownload",
|
||
"class": "Illuminate\\Routing\\ResponseFactory",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "downloadPdf",
|
||
"class": "App\\Http\\Controllers\\Api\\Finance\\FinancialController",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureSchoolYearEditable.php",
|
||
"line": 20,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureSchoolYearEditable",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 381,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiReportMathAndFinancialInvariantContractTest.php",
|
||
"line": 40,
|
||
"function": "getJson",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_report_filters_do_not_create_negative_or_impossible_aggregation_windows",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiReportMathAndFinancialInvariantContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiRequestHeaderSpoofingContract…
|
||
spoofed headers should not authorize parent at GET api/administrator/attendance-templates returned unexpected status 200. Body: {"status":true,"data":{"template_endpoint":"http:\/\/localhost\/api\/v1\/attendance-templates","list_endpoint":"http:\/\/localhost\/api\/v1\/attendance-templates","rest_prefix":"http:\/\/localhost\/api\/v1\/attendance-comment-templates","list_data_endpoint":"http:\/\/localhost\/api\/v1\/attendance-comment-templates\/list-data"}}
|
||
Failed asserting that an array contains 200.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/ApiRequestHeaderSpoofingContractTest.php:27
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiRoleWorkflowNegativeMatrixCon…
|
||
parent should not read unrelated domain api/administrator/attendance-templates returned unexpected status 200. Body: {"status":true,"data":{"template_endpoint":"http:\/\/localhost\/api\/v1\/attendance-templates","list_endpoint":"http:\/\/localhost\/api\/v1\/attendance-templates","rest_prefix":"http:\/\/localhost\/api\/v1\/attendance-comment-templates","list_data_endpoint":"http:\/\/localhost\/api\/v1\/attendance-comment-templates\/list-data"}}
|
||
Failed asserting that an array contains 200.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/ApiRoleWorkflowNegativeMatrixContractTest.php:53
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiRouteNamingVersioningAndHygie…
|
||
API route must be versioned or explicitly classified as legacy alias: api/proofread
|
||
Failed asserting that false is true.
|
||
|
||
at tests/Feature/Api/V1/FullSurface/ApiRouteNamingVersioningAndHygieneTest.php:25
|
||
21▕ {
|
||
22▕ foreach ($this->apiRoutes() as $route) {
|
||
23▕ $uri = $route->uri();
|
||
24▕
|
||
➜ 25▕ $this->assertTrue(
|
||
26▕ str_starts_with($uri, 'api/v1/') || $this->isKnownUnversionedAlias($uri),
|
||
27▕ "API route must be versioned or explicitly classified as legacy alias: $uri"
|
||
28▕ );
|
||
29▕ }
|
||
|
||
1 tests/Feature/Api/V1/FullSurface/ApiRouteNamingVersioningAndHygieneTest.php:25
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiRouteParameterAbuseContractTe…
|
||
Expected: {"message":"The route api\/certificates\/verify\/..%2F.env could not be found."}
|
||
|
||
Not to contain: .env
|
||
|
||
at tests/Feature/Api/V1/FullSurface/ApiRouteParameterAbuseContractTest.php:24
|
||
20▕ $response = $this->requestAs($this->actorFor($template), $method, $uri, $this->payloadFor($method, $template));
|
||
21▕
|
||
22▕ $this->assertControlled($response, $method, $uri);
|
||
23▕ $this->assertNoServerError($response, 'bad route parameter '.$method.' '.$uri);
|
||
➜ 24▕ $this->assertStringNotContainsString('.env', $response->getContent(), $uri.' must not leak filesystem targets.');
|
||
25▕ }
|
||
26▕ }
|
||
27▕ }
|
||
28▕
|
||
|
||
1 tests/Feature/Api/V1/FullSurface/ApiRouteParameterAbuseContractTest.php:24
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiRouteParameterAbuseContractTe…
|
||
POST api/v1/school-years/92233720368547758079223372036854775807/archive returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiRouteParameterAbuseContractTest.php",
|
||
"line": 37,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_parameterized_routes_fail_cleanly_for_overflowing_integer_ids",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiRouteParameterAbuseContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiRouteUseCaseCatalogCompletene…
|
||
API routes without an explicit E2E user journey owner:
|
||
GET api/v1/competition-winners
|
||
GET api/v1/competition-winners/create
|
||
POST api/v1/competition-winners
|
||
GET api/v1/competition-winners/{id}/settings
|
||
PUT api/v1/competition-winners/{id}
|
||
GET api/v1/competition-winners/{id}/scores
|
||
POST api/v1/competition-winners/{id}/scores
|
||
GET api/v1/competition-winners/{id}/preview
|
||
GET api/v1/competition-winners/{id}/winners
|
||
POST api/v1/competition-winners/{id}/publish
|
||
POST api/v1/competition-winners/{id}/lock
|
||
POST api/v1/competition-winners/{id}/unlock
|
||
POST api/v1/competition-winners/{id}/export-quiz
|
||
PATCH,PUT api/v1/finance/event-charges/{event_charge}
|
||
|
||
Add the route to the journey catalog and add or extend the scenario that proves it.
|
||
Failed asserting that two arrays are identical.
|
||
-Array &0 []
|
||
+Array &0 [
|
||
+ 0 => 'GET api/v1/competition-winners',
|
||
+ 1 => 'GET api/v1/competition-winners/create',
|
||
+ 2 => 'POST api/v1/competition-winners',
|
||
+ 3 => 'GET api/v1/competition-winners/{id}/settings',
|
||
+ 4 => 'PUT api/v1/competition-winners/{id}',
|
||
+ 5 => 'GET api/v1/competition-winners/{id}/scores',
|
||
+ 6 => 'POST api/v1/competition-winners/{id}/scores',
|
||
+ 7 => 'GET api/v1/competition-winners/{id}/preview',
|
||
+ 8 => 'GET api/v1/competition-winners/{id}/winners',
|
||
+ 9 => 'POST api/v1/competition-winners/{id}/publish',
|
||
+ 10 => 'POST api/v1/competition-winners/{id}/lock',
|
||
+ 11 => 'POST api/v1/competition-winners/{id}/unlock',
|
||
+ 12 => 'POST api/v1/competition-winners/{id}/export-quiz',
|
||
+ 13 => 'PATCH,PUT api/v1/finance/event-charges/{event_charge}',
|
||
+]
|
||
|
||
|
||
at tests/Feature/Api/V1/FullSurface/ApiRouteUseCaseCatalogCompletenessTest.php:33
|
||
29▕ $unowned[] = $signature;
|
||
30▕ }
|
||
31▕ }
|
||
32▕
|
||
➜ 33▕ $this->assertSame(
|
||
34▕ [],
|
||
35▕ $unowned,
|
||
36▕ "API routes without an explicit E2E user journey owner:\n".implode("\n", $unowned).
|
||
37▕ "\n\nAdd the route to the journey catalog and add or extend the scenario that proves it."
|
||
|
||
1 tests/Feature/Api/V1/FullSurface/ApiRouteUseCaseCatalogCompletenessTest.php:33
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiSchemaKeyStabilityExpansionCo…
|
||
api/v1/class-sections should expose at least one stable identity/display key. Keys: status, message, data, sections, meta, total, per_page, current_page, last_page
|
||
Failed asserting that false is true.
|
||
|
||
at tests/Feature/Api/V1/FullSurface/ApiSchemaKeyStabilityExpansionContractTest.php:33
|
||
29▕ continue;
|
||
30▕ }
|
||
31▕
|
||
32▕ $payload = $this->flattenKeys($response->json());
|
||
➜ 33▕ $this->assertTrue(
|
||
34▕ count(array_intersect($expectedAnyKeys, $payload)) > 0,
|
||
35▕ $uri.' should expose at least one stable identity/display key. Keys: '.implode(', ', $payload)
|
||
36▕ );
|
||
37▕ }
|
||
|
||
1 tests/Feature/Api/V1/FullSurface/ApiSchemaKeyStabilityExpansionContractTest.php:33
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiSchoolCalendarAcademicBoundar…
|
||
POST api/v1/school-years/{schoolYear}/archive returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiSchoolCalendarAcademicBoundaryExpansionTest.php",
|
||
"line": 43,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_semester_and_term_values_are_not_free_form_privilege_channels",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiSchoolCalendarAcademicBoundaryExpansionTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiSchoolOperationsRegressionBac…
|
||
admin POST api/v1/school-years/{schoolYear}/archive regression backstop should return a controlled response, not a 5xx crash. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiSchoolOperationsRegressionBackstopTest.php",
|
||
"line": 19,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_administrator_can_probe_core_school_operations_without_route_level_crashes",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiSchoolOperationsRegressionBackstopTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that 500 is less than 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:11
|
||
7▕ trait AssertsE2EApiResponses
|
||
8▕ {
|
||
9▕ protected function assertNoServerError(TestResponse $response, string $context): void
|
||
10▕ {
|
||
➜ 11▕ $this->assertLessThan(
|
||
12▕ 500,
|
||
13▕ $response->getStatusCode(),
|
||
14▕ $context.' should return a controlled response, not a 5xx crash. Body: '.$response->getContent()
|
||
15▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:11
|
||
2 tests/Feature/Api/V1/FullSurface/ApiSchoolOperationsRegressionBackstopTest.php:21
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiSecurityAndTransportContractT…
|
||
GET api/timeoff/notify/{token} unauthenticated transport contract returned unexpected status 400. Body: <!DOCTYPE html><html><head><meta charset="utf-8"><title>TimeOff</title></head><body style="font-family:Arial,Helvetica,sans-serif;padding:24px;"><p>Sorry, this link is invalid or has expired.</p></body></html>
|
||
Failed asserting that an array contains 400.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/ApiSecurityAndTransportContractTest.php:18
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiSecurityAndTransportContractT…
|
||
GET against mutating route api/set_authorized_user_password/{authorizedUserId} returned unexpected status 400. Body: {"message":"Invalid or expired confirmation link."}
|
||
Failed asserting that an array contains 400.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/ApiSecurityAndTransportContractTest.php:30
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiSoftDeleteRestoreArchiveLifec…
|
||
POST api/v1/school-years/{schoolYear}/archive returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiSoftDeleteRestoreArchiveLifecycleContractTest.php",
|
||
"line": 19,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "archive_restore_and_unarchive_routes_are_controlled_and_role_protected",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiSoftDeleteRestoreArchiveLifecycleContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiSoftDeleteRestoreArchiveLifec…
|
||
POST api/v1/school-years/{schoolYear}/archive returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiSoftDeleteRestoreArchiveLifecycleContractTest.php",
|
||
"line": 40,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "destructive_soft_delete_style_routes_tolerate_repeated_requests",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiSoftDeleteRestoreArchiveLifecycleContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiTenantSchoolYearAndSemesterIs…
|
||
POST api/v1/school-years/{schoolYear}/archive returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiTenantSchoolYearAndSemesterIsolationContractTest.php",
|
||
"line": 32,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "test_school_year_scoped_routes_reject_foreign_or_closed_school_year_context",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiTenantSchoolYearAndSemesterIsolationContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiTimezoneCalendarRecurrenceDep…
|
||
POST api/v1/school-years/{schoolYear}/archive returned unexpected status 500. Body: {
|
||
"message": "Method App\\Http\\Controllers\\Api\\SchoolYears\\SchoolYearController::archive does not exist.",
|
||
"exception": "BadMethodCallException",
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 68,
|
||
"trace": [
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
|
||
"line": 54,
|
||
"function": "__call",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
|
||
"line": 43,
|
||
"function": "callAction",
|
||
"class": "Illuminate\\Routing\\Controller",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 265,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\ControllerDispatcher",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
|
||
"line": 211,
|
||
"function": "runController",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 822,
|
||
"function": "run",
|
||
"class": "Illuminate\\Routing\\Route",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Routing\\Router::runRouteWithinStack():821}",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/RequirePermission.php",
|
||
"line": 29,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\RequirePermission",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/EnsureAccountActive.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\EnsureAccountActive",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/MultiAuth.php",
|
||
"line": 32,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\MultiAuth",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
|
||
"line": 50,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 821,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 800,
|
||
"function": "runRouteWithinStack",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 764,
|
||
"function": "runRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
|
||
"line": 753,
|
||
"function": "dispatchToRoute",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 200,
|
||
"function": "dispatch",
|
||
"class": "Illuminate\\Routing\\Router",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 180,
|
||
"function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php",
|
||
"line": 22,
|
||
"function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "App\\Http\\Middleware\\SecurityHeaders",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
|
||
"line": 31,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
|
||
"line": 21,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
|
||
"line": 51,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
|
||
"line": 27,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
|
||
"line": 109,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
|
||
"line": 74,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\HandleCors",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
|
||
"line": 58,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php",
|
||
"line": 22,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php",
|
||
"line": 26,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 219,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Http\\Middleware\\ValidatePathEncoding",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
|
||
"line": 137,
|
||
"function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 175,
|
||
"function": "then",
|
||
"class": "Illuminate\\Pipeline\\Pipeline",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
|
||
"line": 144,
|
||
"function": "sendRequestThroughRouter",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 607,
|
||
"function": "handle",
|
||
"class": "Illuminate\\Foundation\\Http\\Kernel",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php",
|
||
"line": 573,
|
||
"function": "call",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php",
|
||
"line": 190,
|
||
"function": "json",
|
||
"class": "Illuminate\\Foundation\\Testing\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/FullSurface/ApiTimezoneCalendarRecurrenceDepthContractTest.php",
|
||
"line": 28,
|
||
"function": "requestAs",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\Support\\FullSurfaceE2EContractCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 1667,
|
||
"function": "calendar_and_schedule_routes_reject_ambiguous_recurrence_and_timezone_inputs_cleanly",
|
||
"class": "Tests\\Feature\\Api\\V1\\FullSurface\\ApiTimezoneCalendarRecurrenceDepthContractTest",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 519,
|
||
"function": "runTest",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php",
|
||
"line": 87,
|
||
"function": "runBare",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php",
|
||
"line": 365,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestCase",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php",
|
||
"line": 369,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php",
|
||
"line": 64,
|
||
"function": "run",
|
||
"class": "PHPUnit\\Framework\\TestSuite",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php",
|
||
"line": 211,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\TestRunner",
|
||
"type": "->"
|
||
},
|
||
{
|
||
"file": "/Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit",
|
||
"line": 104,
|
||
"function": "run",
|
||
"class": "PHPUnit\\TextUI\\Application",
|
||
"type": "->"
|
||
}
|
||
]
|
||
}
|
||
Failed asserting that an array contains 500.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/Support/FullSurfaceE2EContractCase.php:343
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiWriteAuditAndTimestampContrac…
|
||
POST api/v1/attendance-tracking/send-auto-emails successful create response should expose an identifier, ok/status, or resource envelope.
|
||
Failed asserting that false is true.
|
||
|
||
at tests/Feature/Api/V1/FullSurface/ApiWriteAuditAndTimestampContractTest.php:24
|
||
20▕
|
||
21▕ if (in_array($response->getStatusCode(), [200, 201, 202], true) && $this->isJsonString($response->getContent())) {
|
||
22▕ $json = $response->json();
|
||
23▕ $flat = json_encode($json, JSON_THROW_ON_ERROR);
|
||
➜ 24▕ $this->assertTrue(
|
||
25▕ str_contains($flat, 'id') || str_contains($flat, 'uuid') || str_contains($flat, 'ok') || str_contains($flat, 'status'),
|
||
26▕ "$method $uri successful create response should expose an identifier, ok/status, or resource envelope."
|
||
27▕ );
|
||
28▕ }
|
||
|
||
1 tests/Feature/Api/V1/FullSurface/ApiWriteAuditAndTimestampContractTest.php:24
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\FullSurface\ApiWriteAuditAndTimestampContrac…
|
||
POST api/login public audit mutation returned unexpected status 200. Body: {"status":true,"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0L2FwaS9sb2dpbiIsImlhdCI6MTc1OTY1ODQwMCwiZXhwIjoxNzU5NzQ0ODAwLCJuYmYiOjE3NTk2NTg0MDAsImp0aSI6IjAwYzExY0JrVkhhcWo3aWwiLCJzdWIiOiI0IiwicHJ2IjoiMjNiZDVjODk0OWY2MDBhZGIzOWU3MDFjNDAwODcyZGI3YTU5NzZmNyIsIm5hbWUiOiJNYXRoaWxkZSBKb2huc3RvbiIsInJvbGVzIjpbImFkbWluaXN0cmF0b3IiXX0.bDPxC37-zXHqXxQVQfczSm42134RVfICKu0GeHYKA4w","access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0L2FwaS9sb2dpbiIsImlhdCI6MTc1OTY1ODQwMCwiZXhwIjoxNzU5NzQ0ODAwLCJuYmYiOjE3NTk2NTg0MDAsImp0aSI6IjAwYzExY0JrVkhhcWo3aWwiLCJzdWIiOiI0IiwicHJ2IjoiMjNiZDVjODk0OWY2MDBhZGIzOWU3MDFjNDAwODcyZGI3YTU5NzZmNyIsIm5hbWUiOiJNYXRoaWxkZSBKb2huc3RvbiIsInJvbGVzIjpbImFkbWluaXN0cmF0b3IiXX0.bDPxC37-zXHqXxQVQfczSm42134RVfICKu0GeHYKA4w","token_type":"bearer","expires_in":86400,"user":{"id":4,"name":"Mathilde Johnston","firstname":"Mathilde","lastname":"Johnston","email":"administrator-api-test-6a4ad65445571609562500@example.test","roles":{"administrator":true},"class_section_id":null,"class_section_name":null}}
|
||
Failed asserting that an array contains 200.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/FullSurface/ApiWriteAuditAndTimestampContractTest.php:67
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Parents\AuthorizedUsersControllerTest > inde…
|
||
Failed asserting that actual size 2 matches expected size 1.
|
||
|
||
at tests/Feature/Api/V1/Parents/AuthorizedUsersControllerTest.php:57
|
||
53▕ ->getJson('/api/v1/parents/authorized-users')
|
||
54▕ ->assertOk()
|
||
55▕ ->assertJsonPath('status', true);
|
||
56▕
|
||
➜ 57▕ $this->assertCount(1, $response->json('data'));
|
||
58▕ $this->assertSame($own->id, $response->json('data.0.id'));
|
||
59▕ }
|
||
60▕
|
||
61▕ public function test_show_returns_404_for_unknown_authorized_user(): void
|
||
|
||
1 tests/Feature/Api/V1/Parents/AuthorizedUsersControllerTest.php:57
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Parents\ParentAttendanceReportControllerTest…
|
||
Expected response status code [200] but received 403.
|
||
Failed asserting that 403 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/Parents/ParentAttendanceReportControllerTest.php:24
|
||
20▕
|
||
21▕ Sanctum::actingAs($parent);
|
||
22▕ $response = $this->getJson('/api/v1/parents/attendance-reports/form');
|
||
23▕
|
||
➜ 24▕ $response->assertOk();
|
||
25▕ $response->assertJson(['ok' => true]);
|
||
26▕ $this->assertNotEmpty($response->json('students'));
|
||
27▕ $this->assertNotEmpty($response->json('sundays'));
|
||
28▕ }
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Parents\ParentAttendanceReportControllerTest…
|
||
Expected response status code [201] but received 403.
|
||
Failed asserting that 403 is identical to 201.
|
||
|
||
at tests/Feature/Api/V1/Parents/ParentAttendanceReportControllerTest.php:47
|
||
43▕ 'type' => 'absent',
|
||
44▕ 'reason' => 'Sick',
|
||
45▕ ]);
|
||
46▕
|
||
➜ 47▕ $response->assertStatus(201);
|
||
48▕ $response->assertJson(['ok' => true]);
|
||
49▕
|
||
50▕ $this->assertDatabaseHas('parent_attendance_reports', [
|
||
51▕ 'student_id' => $studentId,
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Parents\ParentAttendanceReportControllerTest…
|
||
Expected response status code [200] but received 403.
|
||
Failed asserting that 403 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/Parents/ParentAttendanceReportControllerTest.php:86
|
||
82▕ 'date' => $date,
|
||
83▕ 'type' => 'late',
|
||
84▕ ]);
|
||
85▕
|
||
➜ 86▕ $response->assertOk();
|
||
87▕ $response->assertJson(['ok' => true]);
|
||
88▕ $this->assertSame($studentId, $response->json('students.0.student_id'));
|
||
89▕ }
|
||
90▕
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Parents\ParentAttendanceReportControllerTest…
|
||
Expected response status code [200] but received 403.
|
||
Failed asserting that 403 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/Parents/ParentAttendanceReportControllerTest.php:113
|
||
109▕ $response = $this->patchJson('/api/v1/parents/attendance-reports/'.$reportId, [
|
||
110▕ 'reason' => 'Family emergency',
|
||
111▕ ]);
|
||
112▕
|
||
➜ 113▕ $response->assertOk();
|
||
114▕ $this->assertDatabaseHas('parent_attendance_reports', [
|
||
115▕ 'id' => $reportId,
|
||
116▕ 'reason' => 'Family emergency',
|
||
117▕ ]);
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Parents\ParentControllerTest > attendance re…
|
||
Expected response status code [200] but received 403.
|
||
Failed asserting that 403 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/Parents/ParentControllerTest.php:49
|
||
45▕
|
||
46▕ Sanctum::actingAs($parent);
|
||
47▕ $response = $this->getJson('/api/v1/parents/attendance?school_year=2025-2026');
|
||
48▕
|
||
➜ 49▕ $response->assertOk();
|
||
50▕ $response->assertJson(['ok' => true]);
|
||
51▕ $response->assertJsonPath('attendance.0.status', 'absent');
|
||
52▕ }
|
||
53▕
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Parents\ParentControllerTest > registration…
|
||
Expected response status code [201] but received 403.
|
||
Failed asserting that 403 is identical to 201.
|
||
|
||
at tests/Feature/Api/V1/Parents/ParentControllerTest.php:86
|
||
82▕ ];
|
||
83▕
|
||
84▕ $response = $this->postJson('/api/v1/parents/registration', $payload);
|
||
85▕
|
||
➜ 86▕ $response->assertStatus(201);
|
||
87▕ $response->assertJson(['ok' => true]);
|
||
88▕ $this->assertDatabaseHas('students', ['firstname' => 'Sara', 'parent_id' => $parent->id]);
|
||
89▕ $this->assertDatabaseHas('emergency_contacts', ['parent_id' => $parent->id, 'emergency_contact_name' => 'John Parent']);
|
||
90▕ }
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Roles\RolePermissionControllerTest > store r…
|
||
Expected response status code [500] but received 404.
|
||
Failed asserting that 404 is identical to 500.
|
||
|
||
The following exception occurred during the last request:
|
||
|
||
TypeError: App\Http\Controllers\Api\Auth\RolePermissionController::__construct(): Argument #4 ($roleCrudService) must be of type App\Services\Roles\RoleCrudService, class@anonymous given, called in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Container/Container.php on line 1168 and defined in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Controllers/Api/Auth/RolePermissionController.php:35
|
||
Stack trace:
|
||
#0 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Container/Container.php(1168): App\Http\Controllers\Api\Auth\RolePermissionController->__construct(Object(App\Services\Roles\RoleQueryService), Object(App\Services\Roles\RoleAssignmentService), Object(App\Services\Roles\RolePermissionService), Object(class@anonymous), Object(App\Services\Roles\PermissionCrudService))
|
||
#1 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Container/Container.php(933): Illuminate\Container\Container->build('App\\Http\\Contro...')
|
||
#2 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1078): Illuminate\Container\Container->resolve('App\\Http\\Contro...', Array, true)
|
||
#3 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Container/Container.php(864): Illuminate\Foundation\Application->resolve('App\\Http\\Contro...', Array)
|
||
#4 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1058): Illuminate\Container\Container->make('App\\Http\\Contro...', Array)
|
||
#5 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php(286): Illuminate\Foundation\Application->make('App\\Http\\Contro...')
|
||
#6 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php(1133): Illuminate\Routing\Route->getController()
|
||
#7 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php(1062): Illuminate\Routing\Route->controllerMiddleware()
|
||
#8 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(834): Illuminate\Routing\Route->gatherMiddleware()
|
||
#9 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(816): Illuminate\Routing\Router->gatherRouteMiddleware(Object(Illuminate\Routing\Route))
|
||
#10 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(800): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
|
||
#11 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(764): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))
|
||
#12 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(753): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
|
||
#13 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
|
||
#14 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Kernel->{closure:Illuminate\Foundation\Http\Kernel::dispatchToRouter():197}(Object(Illuminate\Http\Request))
|
||
#15 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php(22): Illuminate\Pipeline\Pipeline->{closure:Illuminate\Pipeline\Pipeline::prepareDestination():178}(Object(Illuminate\Http\Request))
|
||
#16 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\Http\Middleware\SecurityHeaders->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#17 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
|
||
#18 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#19 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#20 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
|
||
#21 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#22 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\TrimStrings->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#23 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
|
||
#24 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#25 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(109): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
|
||
#26 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#27 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(74): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
|
||
#28 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\HandleCors->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#29 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
|
||
#30 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#31 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php(22): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
|
||
#32 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\InvokeDeferredCallbacks->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#33 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php(26): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
|
||
#34 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\ValidatePathEncoding->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#35 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
|
||
#36 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\Pipeline\Pipeline->then(Object(Closure))
|
||
#37 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
|
||
#38 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php(607): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
|
||
#39 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php(573): Illuminate\Foundation\Testing\TestCase->call('POST', '/api/v1/role-pe...', Array, Array, Array, Array, '{"name":"admin"...')
|
||
#40 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php(411): Illuminate\Foundation\Testing\TestCase->json('POST', '/api/v1/role-pe...', Array, Array, 0)
|
||
#41 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/Roles/RolePermissionControllerTest.php(184): Illuminate\Foundation\Testing\TestCase->postJson('/api/v1/role-pe...', Array)
|
||
#42 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php(1667): Tests\Feature\Api\V1\Roles\RolePermissionControllerTest->test_store_role_returns_error_on_service_exception()
|
||
#43 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php(519): PHPUnit\Framework\TestCase->runTest()
|
||
#44 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(87): PHPUnit\Framework\TestCase->runBare()
|
||
#45 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php(365): PHPUnit\Framework\TestRunner->run(Object(Tests\Feature\Api\V1\Roles\RolePermissionControllerTest))
|
||
#46 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php(369): PHPUnit\Framework\TestCase->run()
|
||
#47 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php(369): PHPUnit\Framework\TestSuite->run()
|
||
#48 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php(369): PHPUnit\Framework\TestSuite->run()
|
||
#49 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run()
|
||
#50 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php(211): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite))
|
||
#51 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit(104): PHPUnit\TextUI\Application->run(Array)
|
||
#52 {main}
|
||
|
||
----------------------------------------------------------------------------------
|
||
|
||
App\Http\Controllers\Api\Auth\RolePermissionController::__construct(): Argument #4 ($roleCrudService) must be of type App\Services\Roles\RoleCrudService, class@anonymous given, called in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Container/Container.php on line 1168
|
||
|
||
at tests/Feature/Api/V1/Roles/RolePermissionControllerTest.php:193
|
||
189▕ 'priority' => 1,
|
||
190▕ 'is_active' => 1,
|
||
191▕ ]);
|
||
192▕
|
||
➜ 193▕ $response->assertStatus(500);
|
||
194▕ $response->assertJsonPath('status', false);
|
||
195▕ }
|
||
196▕
|
||
197▕ public function test_requires_authentication(): void
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\SchoolYears\SchoolYearControllerTest > previ…
|
||
Expected response status code [200] but received 403.
|
||
Failed asserting that 403 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/SchoolYears/SchoolYearControllerTest.php:29
|
||
25▕ ],
|
||
26▕ 'transfer_unpaid_balances' => true,
|
||
27▕ ]);
|
||
28▕
|
||
➜ 29▕ $response->assertOk()
|
||
30▕ ->assertJsonPath('data.validation.can_close', true)
|
||
31▕ ->assertJsonPath('data.promotion_preview.summary.promote', 1)
|
||
32▕ ->assertJsonPath('data.parent_balances.summary.total_old_unpaid_balance', 200);
|
||
33▕
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\SchoolYears\SchoolYearControllerTest > admin…
|
||
Expected response status code [201] but received 403.
|
||
Failed asserting that 403 is identical to 201.
|
||
|
||
at tests/Feature/Api/V1/SchoolYears/SchoolYearControllerTest.php:87
|
||
83▕ 'start_date' => '2026-09-01',
|
||
84▕ 'end_date' => '2027-06-30',
|
||
85▕ ]);
|
||
86▕
|
||
➜ 87▕ $response->assertCreated()
|
||
88▕ ->assertJsonPath('data.name', '2026-2027')
|
||
89▕ ->assertJsonPath('data.status', 'draft');
|
||
90▕
|
||
91▕ $this->assertDatabaseHas('school_years', [
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\SchoolYears\SchoolYearControllerTest > admin…
|
||
Expected response status code [200] but received 403.
|
||
Failed asserting that 403 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/SchoolYears/SchoolYearControllerTest.php:120
|
||
116▕ 'start_date' => '2028-09-01',
|
||
117▕ 'end_date' => '2029-06-30',
|
||
118▕ ]);
|
||
119▕
|
||
➜ 120▕ $response->assertOk()
|
||
121▕ ->assertJsonPath('data.name', '2028-2029')
|
||
122▕ ->assertJsonPath('data.start_date', '2028-09-01');
|
||
123▕
|
||
124▕ $this->assertDatabaseHas('school_years', [
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\SchoolYears\SchoolYearControllerTest > close…
|
||
Expected response status code [200] but received 403.
|
||
Failed asserting that 403 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/SchoolYears/SchoolYearControllerTest.php:148
|
||
144▕ 'transfer_unpaid_balances' => true,
|
||
145▕ 'confirmation' => 'CLOSE 2025-2026',
|
||
146▕ ]);
|
||
147▕
|
||
➜ 148▕ $response->assertOk()
|
||
149▕ ->assertJsonPath('data.closed_school_year.status', 'closed')
|
||
150▕ ->assertJsonPath('data.new_school_year.status', 'active');
|
||
151▕
|
||
152▕ $this->assertDatabaseHas('school_years', [
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\SchoolYears\SchoolYearControllerTest > close…
|
||
Expected response status code [200] but received 403.
|
||
Failed asserting that 403 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/SchoolYears/SchoolYearControllerTest.php:207
|
||
203▕ 'end_date' => '2027-06-30',
|
||
204▕ ],
|
||
205▕ 'transfer_unpaid_balances' => true,
|
||
206▕ 'confirmation' => 'CLOSE 2025-2026',
|
||
➜ 207▕ ])->assertOk();
|
||
208▕
|
||
209▕ $response = $this->postJson('/api/v1/finance/invoices/generate', [
|
||
210▕ 'parent_id' => 10,
|
||
211▕ 'school_year' => '2025-2026',
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Settings\PreferencesControllerTest > show re…
|
||
Expected response status code [200] but received 401.
|
||
Failed asserting that 401 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/Settings/PreferencesControllerTest.php:22
|
||
18▕ Sanctum::actingAs($user);
|
||
19▕
|
||
20▕ $response = $this->getJson('/api/v1/preferences');
|
||
21▕
|
||
➜ 22▕ $response->assertOk();
|
||
23▕ $response->assertJsonPath('data.preferences.receive_email_notifications', true);
|
||
24▕ $response->assertJsonStructure(['data' => ['options' => ['style_options', 'menu_options']]]);
|
||
25▕ }
|
||
26▕
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Settings\PreferencesControllerTest > store c…
|
||
Expected response status code [200] but received 401.
|
||
Failed asserting that 401 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/Settings/PreferencesControllerTest.php:41
|
||
37▕ 'style_color' => 'blue',
|
||
38▕ 'menu_color' => 'white',
|
||
39▕ ]);
|
||
40▕
|
||
➜ 41▕ $response->assertOk();
|
||
42▕ $this->assertDatabaseHas('user_preferences', [
|
||
43▕ 'user_id' => $user->id,
|
||
44▕ 'notification_email' => 1,
|
||
45▕ 'notification_sms' => 0,
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Settings\PreferencesControllerTest > list re…
|
||
Expected response status code [403] but received 401.
|
||
Failed asserting that 401 is identical to 403.
|
||
|
||
at tests/Feature/Api/V1/Settings/PreferencesControllerTest.php:56
|
||
52▕ Sanctum::actingAs($user);
|
||
53▕
|
||
54▕ $response = $this->getJson('/api/v1/preferences/list');
|
||
55▕
|
||
➜ 56▕ $response->assertForbidden();
|
||
57▕ }
|
||
58▕
|
||
59▕ public function test_list_returns_rows_for_admin(): void
|
||
60▕ {
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Settings\PreferencesControllerTest > list re…
|
||
Expected response status code [200] but received 401.
|
||
Failed asserting that 401 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/Settings/PreferencesControllerTest.php:74
|
||
70▕ ]);
|
||
71▕
|
||
72▕ $response = $this->getJson('/api/v1/preferences/list');
|
||
73▕
|
||
➜ 74▕ $response->assertOk();
|
||
75▕ $response->assertJsonPath('data.preferences.0.user_id', $admin->id);
|
||
76▕ }
|
||
77▕
|
||
78▕ public function test_update_for_user_by_admin(): void
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Settings\PreferencesControllerTest > update…
|
||
Expected response status code [200] but received 401.
|
||
Failed asserting that 401 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/Settings/PreferencesControllerTest.php:88
|
||
84▕ $response = $this->putJson('/api/v1/preferences/2', [
|
||
85▕ 'receive_sms_notifications' => false,
|
||
86▕ ]);
|
||
87▕
|
||
➜ 88▕ $response->assertOk();
|
||
89▕ $this->assertDatabaseHas('user_preferences', [
|
||
90▕ 'user_id' => $user->id,
|
||
91▕ 'notification_sms' => 0,
|
||
92▕ ]);
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Settings\PreferencesControllerTest > destroy…
|
||
Expected response status code [403] but received 401.
|
||
Failed asserting that 401 is identical to 403.
|
||
|
||
at tests/Feature/Api/V1/Settings/PreferencesControllerTest.php:102
|
||
98▕ Sanctum::actingAs($user);
|
||
99▕
|
||
100▕ $response = $this->deleteJson('/api/v1/preferences/'.$user->id);
|
||
101▕
|
||
➜ 102▕ $response->assertForbidden();
|
||
103▕ }
|
||
104▕
|
||
105▕ public function test_destroy_deletes_preferences(): void
|
||
106▕ {
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Settings\PreferencesControllerTest > destroy…
|
||
Expected response status code [200] but received 401.
|
||
Failed asserting that 401 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/Settings/PreferencesControllerTest.php:118
|
||
114▕ ]);
|
||
115▕
|
||
116▕ $response = $this->deleteJson('/api/v1/preferences/'.$admin->id);
|
||
117▕
|
||
➜ 118▕ $response->assertOk();
|
||
119▕ $this->assertDatabaseMissing('user_preferences', [
|
||
120▕ 'user_id' => $admin->id,
|
||
121▕ ]);
|
||
122▕ }
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Settings\PreferencesControllerTest > store v…
|
||
Expected response status code [422] but received 401.
|
||
Failed asserting that 401 is identical to 422.
|
||
|
||
at tests/Feature/Api/V1/Settings/PreferencesControllerTest.php:133
|
||
129▕ $response = $this->postJson('/api/v1/preferences', [
|
||
130▕ 'theme' => 'invalid',
|
||
131▕ ]);
|
||
132▕
|
||
➜ 133▕ $response->assertStatus(422);
|
||
134▕ $response->assertJsonStructure(['message', 'errors']);
|
||
135▕ }
|
||
136▕
|
||
137▕ private function createUser(string $roleName, int $id = 1): User
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Settings\SchoolCalendarControllerTest > upda…
|
||
Expected response status code [200] but received 500.
|
||
Failed asserting that 500 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/Settings/SchoolCalendarControllerTest.php:96
|
||
92▕ $response = $this->patchJson('/api/v1/settings/school-calendar/events/'.$eventId, [
|
||
93▕ 'title' => 'Updated Event',
|
||
94▕ ]);
|
||
95▕
|
||
➜ 96▕ $response->assertOk();
|
||
97▕ $response->assertJsonPath('status', true);
|
||
98▕ $this->assertDatabaseHas('calendar_events', [
|
||
99▕ 'id' => $eventId,
|
||
100▕ 'title' => 'Updated Event',
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Settings\SchoolCalendarControllerTest > stor…
|
||
Expected response status code [500] but received 404.
|
||
Failed asserting that 404 is identical to 500.
|
||
|
||
The following exception occurred during the last request:
|
||
|
||
TypeError: App\Http\Controllers\Api\Settings\SchoolCalendarController::__construct(): Argument #5 ($mutationService) must be of type App\Services\Settings\SchoolCalendar\SchoolCalendarMutationService, class@anonymous given, called in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Container/Container.php on line 1168 and defined in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Controllers/Api/Settings/SchoolCalendarController.php:28
|
||
Stack trace:
|
||
#0 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Container/Container.php(1168): App\Http\Controllers\Api\Settings\SchoolCalendarController->__construct(Object(App\Services\Settings\SchoolCalendar\SchoolCalendarContextService), Object(App\Services\Settings\SchoolCalendar\SchoolCalendarQueryService), Object(App\Services\Settings\SchoolCalendar\SchoolCalendarMeetingService), Object(App\Services\Settings\SchoolCalendar\SchoolCalendarFormatterService), Object(class@anonymous))
|
||
#1 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Container/Container.php(933): Illuminate\Container\Container->build('App\\Http\\Contro...')
|
||
#2 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1078): Illuminate\Container\Container->resolve('App\\Http\\Contro...', Array, true)
|
||
#3 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Container/Container.php(864): Illuminate\Foundation\Application->resolve('App\\Http\\Contro...', Array)
|
||
#4 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1058): Illuminate\Container\Container->make('App\\Http\\Contro...', Array)
|
||
#5 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php(286): Illuminate\Foundation\Application->make('App\\Http\\Contro...')
|
||
#6 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php(1133): Illuminate\Routing\Route->getController()
|
||
#7 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Route.php(1062): Illuminate\Routing\Route->controllerMiddleware()
|
||
#8 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(834): Illuminate\Routing\Route->gatherMiddleware()
|
||
#9 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(816): Illuminate\Routing\Router->gatherRouteMiddleware(Object(Illuminate\Routing\Route))
|
||
#10 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(800): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
|
||
#11 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(764): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))
|
||
#12 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(753): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
|
||
#13 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
|
||
#14 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Kernel->{closure:Illuminate\Foundation\Http\Kernel::dispatchToRouter():197}(Object(Illuminate\Http\Request))
|
||
#15 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/app/Http/Middleware/SecurityHeaders.php(22): Illuminate\Pipeline\Pipeline->{closure:Illuminate\Pipeline\Pipeline::prepareDestination():178}(Object(Illuminate\Http\Request))
|
||
#16 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\Http\Middleware\SecurityHeaders->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#17 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
|
||
#18 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#19 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#20 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
|
||
#21 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#22 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\TrimStrings->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#23 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
|
||
#24 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#25 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(109): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
|
||
#26 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#27 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(74): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
|
||
#28 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\HandleCors->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#29 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
|
||
#30 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#31 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php(22): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
|
||
#32 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\InvokeDeferredCallbacks->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#33 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php(26): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
|
||
#34 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\ValidatePathEncoding->handle(Object(Illuminate\Http\Request), Object(Closure))
|
||
#35 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
|
||
#36 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\Pipeline\Pipeline->then(Object(Closure))
|
||
#37 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
|
||
#38 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php(607): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
|
||
#39 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php(573): Illuminate\Foundation\Testing\TestCase->call('POST', '/api/v1/setting...', Array, Array, Array, Array, '{"title":"Event...')
|
||
#40 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php(411): Illuminate\Foundation\Testing\TestCase->json('POST', '/api/v1/setting...', Array, Array, 0)
|
||
#41 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/tests/Feature/Api/V1/Settings/SchoolCalendarControllerTest.php(148): Illuminate\Foundation\Testing\TestCase->postJson('/api/v1/setting...', Array)
|
||
#42 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php(1667): Tests\Feature\Api\V1\Settings\SchoolCalendarControllerTest->test_store_returns_error_on_service_exception()
|
||
#43 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php(519): PHPUnit\Framework\TestCase->runTest()
|
||
#44 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(87): PHPUnit\Framework\TestCase->runBare()
|
||
#45 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestCase.php(365): PHPUnit\Framework\TestRunner->run(Object(Tests\Feature\Api\V1\Settings\SchoolCalendarControllerTest))
|
||
#46 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php(369): PHPUnit\Framework\TestCase->run()
|
||
#47 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php(369): PHPUnit\Framework\TestSuite->run()
|
||
#48 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/Framework/TestSuite.php(369): PHPUnit\Framework\TestSuite->run()
|
||
#49 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run()
|
||
#50 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/src/TextUI/Application.php(211): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite))
|
||
#51 /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/phpunit/phpunit/phpunit(104): PHPUnit\TextUI\Application->run(Array)
|
||
#52 {main}
|
||
|
||
----------------------------------------------------------------------------------
|
||
|
||
App\Http\Controllers\Api\Settings\SchoolCalendarController::__construct(): Argument #5 ($mutationService) must be of type App\Services\Settings\SchoolCalendar\SchoolCalendarMutationService, class@anonymous given, called in /Volumes/ExternalApps/repos/alrahma_sunday_school_api/vendor/laravel/framework/src/Illuminate/Container/Container.php on line 1168
|
||
|
||
at tests/Feature/Api/V1/Settings/SchoolCalendarControllerTest.php:155
|
||
151▕ 'semester' => 'Fall',
|
||
152▕ 'school_year' => '2025-2026',
|
||
153▕ ]);
|
||
154▕
|
||
➜ 155▕ $response->assertStatus(500);
|
||
156▕ $response->assertJsonPath('status', false);
|
||
157▕ }
|
||
158▕
|
||
159▕ public function test_requires_authentication(): void
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\System\HealthControllerTest > health returns…
|
||
Failed asserting that an array has the key 'status'.
|
||
|
||
at tests/Feature/Api/V1/System/HealthControllerTest.php:17
|
||
13▕ {
|
||
14▕ $response = $this->getJson('/api/v1/health');
|
||
15▕
|
||
16▕ $this->assertContains($response->status(), [200, 503]);
|
||
➜ 17▕ $response->assertJsonStructure([
|
||
18▕ 'status',
|
||
19▕ 'message',
|
||
20▕ 'data' => [
|
||
21▕ 'health' => [
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\System\NavBuilderControllerTest > delete rem…
|
||
Failed asserting that a row in the table [nav_items] does not match the attributes {
|
||
"id": 2
|
||
}.
|
||
|
||
Found similar results: [
|
||
{
|
||
"id": 2
|
||
}
|
||
].
|
||
|
||
at tests/Feature/Api/V1/System/NavBuilderControllerTest.php:129
|
||
125▕
|
||
126▕ $response = $this->actingAs($user, 'sanctum')->deleteJson("/api/v1/nav-builder/{$navId}");
|
||
127▕
|
||
128▕ $response->assertOk();
|
||
➜ 129▕ $this->assertDatabaseMissing('nav_items', ['id' => $navId]);
|
||
130▕ }
|
||
131▕
|
||
132▕ public function test_reorder_updates_items(): void
|
||
133▕ {
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\System\NavBuilderControllerTest > reorder up…
|
||
Failed asserting that a row in the table [nav_items] matches the attributes {
|
||
"id": 2,
|
||
"sort_order": 9
|
||
}.
|
||
|
||
Found similar results: [
|
||
{
|
||
"id": 2,
|
||
"sort_order": 1
|
||
}
|
||
].
|
||
|
||
at tests/Feature/Api/V1/System/NavBuilderControllerTest.php:148
|
||
144▕ 'orders' => [$navId => 9],
|
||
145▕ ]);
|
||
146▕
|
||
147▕ $response->assertOk();
|
||
➜ 148▕ $this->assertDatabaseHas('nav_items', ['id' => $navId, 'sort_order' => 9]);
|
||
149▕ }
|
||
150▕ }
|
||
151▕
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\System\SchoolIdControllerTest > assign sets…
|
||
Failed asserting that 2600001 is identical to '2600001'.
|
||
|
||
at tests/Feature/Api/V1/System/SchoolIdControllerTest.php:56
|
||
52▕
|
||
53▕ $response->assertOk();
|
||
54▕ $response->assertJson(['ok' => true]);
|
||
55▕ $this->assertNotEmpty($response->json('result.school_id'));
|
||
➜ 56▕ $this->assertSame(
|
||
57▕ $response->json('result.school_id'),
|
||
58▕ User::query()->findOrFail($target->id)->school_id
|
||
59▕ );
|
||
60▕ }
|
||
|
||
1 tests/Feature/Api/V1/System/SchoolIdControllerTest.php:56
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Whatsapp\WhatsappInviteControllerTest > send…
|
||
Expected response status code [422] but received 200.
|
||
Failed asserting that 200 is identical to 422.
|
||
|
||
at tests/Feature/Api/V1/Whatsapp/WhatsappInviteControllerTest.php:89
|
||
85▕ 'school_year' => '2025-2026',
|
||
86▕ 'semester' => 'Fall',
|
||
87▕ ]);
|
||
88▕
|
||
➜ 89▕ $response->assertStatus(422);
|
||
90▕ $response->assertJsonPath('status', false);
|
||
91▕ }
|
||
92▕
|
||
93▕ public function test_membership_update_saves_record(): void
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioAFamilyEnrollmentTest > ad…
|
||
Expected response status code [200] but received 403.
|
||
Failed asserting that 403 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/Workflows/ScenarioAFamilyEnrollmentTest.php:58
|
||
54▕
|
||
55▕ // Teacher sees student in roster.
|
||
56▕ $this->actingAs($teacher, 'api');
|
||
57▕ $this->getJson('/api/v1/teachers/classes?class_section_id='.$classSectionId)
|
||
➜ 58▕ ->assertOk()
|
||
59▕ ->assertJsonPath('ok', true);
|
||
60▕
|
||
61▕ $studentIds = array_column($this->getJson('/api/v1/teachers/classes?class_section_id='.$classSectionId)->json('students'), 'student_id');
|
||
62▕ $this->assertContains($studentId, $studentIds);
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioAFamilyEnrollmentTest > pa…
|
||
Expected response status code [404] but received 403.
|
||
Failed asserting that 403 is identical to 404.
|
||
|
||
at tests/Feature/Api/V1/Workflows/ScenarioAFamilyEnrollmentTest.php:97
|
||
93▕ 'firstname' => 'Hacked',
|
||
94▕ 'lastname' => 'Child',
|
||
95▕ 'dob' => '2015-01-01',
|
||
96▕ 'gender' => 'Male',
|
||
➜ 97▕ ])->assertNotFound();
|
||
98▕
|
||
99▕ $this->assertDatabaseHas('students', [
|
||
100▕ 'id' => $studentB,
|
||
101▕ 'firstname' => 'Other',
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioBSundaySchoolDayTest > tea…
|
||
Expected response status code [200] but received 422.
|
||
Failed asserting that 422 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/Workflows/ScenarioBSundaySchoolDayTest.php:31
|
||
27▕
|
||
28▕ $this->actingAs($teacher, 'api');
|
||
29▕
|
||
30▕ $form = $this->getJson('/api/v1/attendance/teacher/form?class_section_id='.$classSectionId)
|
||
➜ 31▕ ->assertOk();
|
||
32▕
|
||
33▕ $date = (string) ($form->json('data.current_sunday') ?? '2025-10-05');
|
||
34▕ $submit = $this->postJson('/api/v1/attendance/teacher/submit', [
|
||
35▕ 'class_section_id' => $classSectionId,
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioKParentSelfServiceAndPriva…
|
||
Expected response status code [404] but received 403.
|
||
Failed asserting that 403 is identical to 404.
|
||
|
||
at tests/Feature/Api/V1/Workflows/ScenarioKParentSelfServiceAndPrivacyTest.php:131
|
||
127▕ 'firstname' => 'Tampered',
|
||
128▕ 'lastname' => 'Student',
|
||
129▕ 'dob' => '2015-01-01',
|
||
130▕ 'gender' => 'Male',
|
||
➜ 131▕ ])->assertNotFound();
|
||
132▕
|
||
133▕ $this->patchJson('/api/v1/parents/emergency-contacts/'.$foreignContactId, [
|
||
134▕ 'name' => 'Tampered Contact',
|
||
135▕ 'cellphone' => '5553334444',
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioLTeacherAcademicOperations…
|
||
Expected response status code [201] but received 422.
|
||
Failed asserting that 422 is identical to 201.
|
||
|
||
at tests/Feature/Api/V1/Workflows/ScenarioLTeacherAcademicOperationsTest.php:48
|
||
44▕ 'covered_quran' => 'Surah recitation practice',
|
||
45▕ 'homework_islamic' => 'Read lesson notes',
|
||
46▕ 'homework_quran' => 'Memorize assigned ayat',
|
||
47▕ 'flags' => ['on_track'],
|
||
➜ 48▕ ])->assertCreated()->assertJsonPath('status', true);
|
||
49▕
|
||
50▕ $reportId = (int) DB::table('class_progress_reports')
|
||
51▕ ->where('teacher_id', $teacher->id)
|
||
52▕ ->where('class_section_id', $classSectionId)
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioMAdministratorEnrollmentAn…
|
||
Expected response status code [200] but received 403.
|
||
Failed asserting that 403 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/Workflows/ScenarioMAdministratorEnrollmentAndClassOperationsTest.php:89
|
||
85▕ ->assertJsonPath('ok', true);
|
||
86▕
|
||
87▕ $this->actingAs($teacher, 'api');
|
||
88▕ $this->getJson('/api/v1/teachers/classes?class_section_id=909')
|
||
➜ 89▕ ->assertOk()
|
||
90▕ ->assertJsonPath('ok', true);
|
||
91▕ }
|
||
92▕
|
||
93▕ public function test_admin_can_reverse_roster_and_teacher_assignments_without_orphaning_records(): void
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioNCommunicationsAndSupportL…
|
||
Failed asserting that null is identical to true.
|
||
|
||
at tests/Feature/Api/V1/Workflows/ScenarioNCommunicationsAndSupportLifecycleTest.php:46
|
||
42▕
|
||
43▕ $this->actingAs($teacher, 'api');
|
||
44▕ $this->getJson('/api/v1/messages/inbox')
|
||
45▕ ->assertOk()
|
||
➜ 46▕ ->assertJsonPath('ok', true);
|
||
47▕
|
||
48▕ $this->getJson('/api/v1/messages/'.$messageId)
|
||
49▕ ->assertOk()
|
||
50▕ ->assertJsonPath('ok', true);
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioNCommunicationsAndSupportL…
|
||
Failed asserting that null is identical to true.
|
||
|
||
at tests/Feature/Api/V1/Workflows/ScenarioNCommunicationsAndSupportLifecycleTest.php:82
|
||
78▕
|
||
79▕ $this->actingAs($admin, 'api');
|
||
80▕ $this->getJson('/api/v1/support')
|
||
81▕ ->assertOk()
|
||
➜ 82▕ ->assertJsonPath('ok', true);
|
||
83▕
|
||
84▕ $response = $this->postJson('/api/v1/support', [
|
||
85▕ 'name' => 'Internal Support Case',
|
||
86▕ 'email' => 'internal.support@example.test',
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioPSettingsConfigurationAndC…
|
||
Expected response status code [200] but received 404.
|
||
Failed asserting that 404 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/Workflows/ScenarioPSettingsConfigurationAndCalendarGovernanceTest.php:113
|
||
109▕ $admin = $this->actingAsApiAdministrator();
|
||
110▕ $this->actingAs($admin, 'api');
|
||
111▕
|
||
112▕ $this->getJson('/api/v1/configuration-admin')
|
||
➜ 113▕ ->assertOk();
|
||
114▕
|
||
115▕ $create = $this->postJson('/api/v1/configuration-admin', [
|
||
116▕ 'config_key' => 'e2e_guardrail_message',
|
||
117▕ 'config_value' => 'E2E guardrail enabled',
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioRAttendanceOperationsAndEx…
|
||
Expected response status code [>=200, <300] but received 422.
|
||
Failed asserting that false is true.
|
||
|
||
at tests/Feature/Api/V1/Workflows/ScenarioRAttendanceOperationsAndExceptionHandlingTest.php:36
|
||
32▕ $this->actingAs($teacher, 'api');
|
||
33▕ $this->getJson('/api/v1/attendance/teacher/grid?class_section_id='.$classSectionId.'&date=2025-10-05')
|
||
34▕ ->assertSuccessful();
|
||
35▕ $this->getJson('/api/v1/attendance/teacher/form?class_section_id='.$classSectionId.'&date=2025-10-05')
|
||
➜ 36▕ ->assertSuccessful();
|
||
37▕
|
||
38▕ $submit = $this->postJson('/api/v1/attendance/teacher/submit', [
|
||
39▕ 'class_section_id' => $classSectionId,
|
||
40▕ 'date' => '2025-10-05',
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioRAttendanceOperationsAndEx…
|
||
Expected response status code [>=200, <300] but received 404.
|
||
Failed asserting that false is true.
|
||
|
||
at tests/Feature/Api/V1/Workflows/ScenarioRAttendanceOperationsAndExceptionHandlingTest.php:130
|
||
126▕ ->assertSuccessful();
|
||
127▕ $this->getJson('/api/v1/attendance-tracking/student-case/'.$studentId)
|
||
128▕ ->assertSuccessful();
|
||
129▕ $this->getJson('/api/v1/attendance-tracking/compose?student_id='.$studentId)
|
||
➜ 130▕ ->assertSuccessful();
|
||
131▕
|
||
132▕ $note = $this->postJson('/api/v1/attendance-tracking/save-notification-note', [
|
||
133▕ 'student_id' => $studentId,
|
||
134▕ 'note' => 'Parent notified about attendance pattern.',
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioRAttendanceOperationsAndEx…
|
||
Expected response status code [201] but received 422.
|
||
Failed asserting that 422 is identical to 201.
|
||
|
||
The following errors occurred during the last request:
|
||
|
||
{
|
||
"message": "Validation failed.",
|
||
"errors": {
|
||
"min_score": [
|
||
"The min score field is required."
|
||
],
|
||
"max_score": [
|
||
"The max score field is required."
|
||
],
|
||
"template_text": [
|
||
"The template text field is required."
|
||
]
|
||
}
|
||
}
|
||
|
||
at tests/Feature/Api/V1/Workflows/ScenarioRAttendanceOperationsAndExceptionHandlingTest.php:151
|
||
147▕ 'comment' => 'E2E: arrived after first lesson.',
|
||
148▕ 'type' => 'late',
|
||
149▕ 'is_active' => true,
|
||
150▕ ]);
|
||
➜ 151▕ $create->assertCreated();
|
||
152▕
|
||
153▕ $templateId = (int) DB::table('attendance_comment_templates')
|
||
154▕ ->where('comment', 'E2E: arrived after first lesson.')
|
||
155▕ ->value('id');
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioSScoringGradingAndReportCa…
|
||
Expected response status code [>=200, <300] but received 422.
|
||
Failed asserting that false is true.
|
||
|
||
The following errors occurred during the last request:
|
||
|
||
{
|
||
"message": "Validation failed.",
|
||
"errors": {
|
||
"comments": [
|
||
"The comments field is required."
|
||
]
|
||
}
|
||
}
|
||
|
||
at tests/Feature/Api/V1/Workflows/ScenarioSScoringGradingAndReportCardLifecycleTest.php:70
|
||
66▕ 'class_section_id' => $classSectionId,
|
||
67▕ 'school_year' => self::E2E_SCHOOL_YEAR,
|
||
68▕ 'semester' => self::E2E_SEMESTER,
|
||
69▕ 'comment' => 'Consistent progress across the semester.',
|
||
➜ 70▕ ])->assertSuccessful();
|
||
71▕
|
||
72▕ $this->getJson('/api/v1/scores/overview?class_section_id='.$classSectionId.'&school_year='.self::E2E_SCHOOL_YEAR)
|
||
73▕ ->assertSuccessful();
|
||
74▕ $this->getJson('/api/v1/scores/student-scores?student_id='.$studentId.'&class_section_id='.$classSectionId)
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioSScoringGradingAndReportCa…
|
||
Expected response status code [>=200, <300] but received 422.
|
||
Failed asserting that false is true.
|
||
|
||
The following errors occurred during the last request:
|
||
|
||
{
|
||
"message": "Validation failed.",
|
||
"errors": {
|
||
"semester": [
|
||
"The semester field is required."
|
||
]
|
||
}
|
||
}
|
||
|
||
at tests/Feature/Api/V1/Workflows/ScenarioSScoringGradingAndReportCardLifecycleTest.php:115
|
||
111▕ 'locked' => false,
|
||
112▕ ])->assertSuccessful();
|
||
113▕
|
||
114▕ $this->getJson('/api/v1/grading/below-sixty?school_year='.self::E2E_SCHOOL_YEAR)
|
||
➜ 115▕ ->assertSuccessful();
|
||
116▕ $this->postJson('/api/v1/grading/below-sixty/decisions', [
|
||
117▕ 'student_id' => $studentId,
|
||
118▕ 'class_section_id' => $classSectionId,
|
||
119▕ 'decision' => 'monitor',
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioTDocumentsPrintBadgesAndCe…
|
||
Expected response status code [>=200, <300] but received 422.
|
||
Failed asserting that false is true.
|
||
|
||
The following errors occurred during the last request:
|
||
|
||
{
|
||
"status": false,
|
||
"message": "Validation failed",
|
||
"errors": {
|
||
"status": [
|
||
"The selected status is invalid."
|
||
]
|
||
}
|
||
}
|
||
|
||
at tests/Feature/Api/V1/Workflows/ScenarioTDocumentsPrintBadgesAndCertificatesLifecycleTest.php:62
|
||
58▕ ->assertSuccessful();
|
||
59▕ $this->patchJson('/api/v1/print-requests/'.$requestId.'/status', [
|
||
60▕ 'status' => 'processing',
|
||
61▕ 'admin_notes' => 'Queued for printing.',
|
||
➜ 62▕ ])->assertSuccessful();
|
||
63▕ $this->get('/api/v1/print-requests/'.$requestId.'/file')
|
||
64▕ ->assertSuccessful();
|
||
65▕ }
|
||
66▕ }
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioWAccessControlRolesNavigat…
|
||
Expected response status code [>=200, <300] but received 422.
|
||
Failed asserting that false is true.
|
||
|
||
The following errors occurred during the last request:
|
||
|
||
{
|
||
"message": "Validation failed.",
|
||
"errors": {
|
||
"permissions": [
|
||
"The permissions field is required."
|
||
]
|
||
}
|
||
}
|
||
|
||
at tests/Feature/Api/V1/Workflows/ScenarioWAccessControlRolesNavigationAndPreferencesTest.php:48
|
||
44▕
|
||
45▕ if ($permissionId > 0 && $teacherRoleId > 0) {
|
||
46▕ $this->putJson('/api/v1/role-permissions/roles/'.$teacherRoleId.'/permissions', [
|
||
47▕ 'permission_ids' => [$permissionId],
|
||
➜ 48▕ ])->assertSuccessful();
|
||
49▕ $this->postJson('/api/v1/role-permissions/users/'.$teacher->id.'/roles', [
|
||
50▕ 'role_ids' => [$teacherRoleId],
|
||
51▕ ])->assertSuccessful();
|
||
52▕ }
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioWAccessControlRolesNavigat…
|
||
Expected response status code [200] but received 403.
|
||
Failed asserting that 403 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/Workflows/ScenarioWAccessControlRolesNavigationAndPreferencesTest.php:110
|
||
106▕ 'key' => 'active_role',
|
||
107▕ 'value' => 'parent',
|
||
108▕ ])->assertSuccessful();
|
||
109▕ $this->getJson('/api/v1/preferences/list')
|
||
➜ 110▕ ->assertOk();
|
||
111▕
|
||
112▕ $this->putJson('/api/v1/preferences/'.$user->id, [
|
||
113▕ 'preferences' => [
|
||
114▕ 'theme' => 'light',
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioXPublicKioskScannerAndVeri…
|
||
Invalid time-off notification token returned unexpected status 400. Body: <!DOCTYPE html><html><head><meta charset="utf-8"><title>TimeOff</title></head><body style="font-family:Arial,Helvetica,sans-serif;padding:24px;"><p>Sorry, this link is invalid or has expired.</p></body></html>
|
||
Failed asserting that an array contains 400.
|
||
|
||
at tests/Concerns/AssertsE2EApiResponses.php:23
|
||
19▕ * @param array<int, int> $statuses
|
||
20▕ */
|
||
21▕ protected function assertStatusIn(TestResponse $response, array $statuses, string $context): void
|
||
22▕ {
|
||
➜ 23▕ $this->assertContains(
|
||
24▕ $response->getStatusCode(),
|
||
25▕ $statuses,
|
||
26▕ $context.' returned unexpected status '.$response->getStatusCode().'. Body: '.$response->getContent()
|
||
27▕ );
|
||
|
||
1 tests/Concerns/AssertsE2EApiResponses.php:23
|
||
2 tests/Feature/Api/V1/Workflows/ScenarioXPublicKioskScannerAndVerificationLifecycleTest.php:89
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioZLegacyAliasesValidationAn…
|
||
Expected response status code [422] but received 400.
|
||
Failed asserting that 400 is identical to 422.
|
||
|
||
at tests/Feature/Api/V1/Workflows/ScenarioZLegacyAliasesValidationAndCompatibilityTest.php:101
|
||
97▕
|
||
98▕ $this->postJson('/api/v1/auth/login', [
|
||
99▕ 'email' => 'not-an-email',
|
||
100▕ 'password' => '',
|
||
➜ 101▕ ])->assertStatus(422)
|
||
102▕ ->assertJsonStructure(['message', 'errors']);
|
||
103▕
|
||
104▕ $this->postJson('/api/v1/contact', [
|
||
105▕ 'name' => '',
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\ScenarioZLegacyAliasesValidationAn…
|
||
Expected response status code [201, 301, 302, 303, 307, 308] but received 401.
|
||
Failed asserting that false is true.
|
||
|
||
at tests/Feature/Api/V1/Workflows/ScenarioZLegacyAliasesValidationAndCompatibilityTest.php:136
|
||
132▕
|
||
133▕ public function test_legacy_redirects_and_non_versioned_auth_aliases_remain_available(): void
|
||
134▕ {
|
||
135▕ $this->get('/api/attendance-templates')
|
||
➜ 136▕ ->assertRedirect('/api/v1/attendance-templates');
|
||
137▕ $this->get('/api/attendance-comment-templates')
|
||
138▕ ->assertRedirect('/api/v1/attendance-comment-templates');
|
||
139▕ $this->get('/api/administrator/attendance-templates')
|
||
140▕ ->assertRedirect('/api/v1/administrator/attendance-templates');
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\Api\V1\Workflows\StudentEnrollmentWorkflowTest > ad…
|
||
Expected response status code [200] but received 207.
|
||
Failed asserting that 207 is identical to 200.
|
||
|
||
at tests/Feature/Api/V1/Workflows/StudentEnrollmentWorkflowTest.php:201
|
||
197▕ $this->post(
|
||
198▕ '/api/v1/administrator/enrollment-withdrawal/update-statuses?'.
|
||
199▕ http_build_query(['enrollment_status' => [$studentId => 'enrolled']]),
|
||
200▕ []
|
||
➜ 201▕ )->assertOk();
|
||
202▕
|
||
203▕ // ...then withdraw.
|
||
204▕ $this->post(
|
||
205▕ '/api/v1/administrator/enrollment-withdrawal/update-statuses?'.
|
||
|
||
────────────────────────────────────────────────────────────────────────────
|
||
FAILED Tests\Feature\BulkUserRoleCreationTest > it creates one thousand…
|
||
Failed asserting that 3001 is identical to 3000.
|
||
|
||
at tests/Feature/BulkUserRoleCreationTest.php:25
|
||
21▕ $this->createUsersThroughApi('parent', (int) $roles['parent']->id, 1000);
|
||
22▕ $this->createUsersThroughApi('teacher', (int) $roles['teacher']->id, 1000);
|
||
23▕ $this->createUsersThroughApi('admin', (int) $roles['admin']->id, 1000);
|
||
24▕
|
||
➜ 25▕ $this->assertSame(3000, User::query()->where('email', 'like', 'bulk_api_%')->count());
|
||
26▕ $this->assertSame(1000, User::query()->hasRoleName('parent')->where('email', 'like', 'bulk_api_parent_%')->count());
|
||
27▕ $this->assertSame(1000, User::query()->hasRoleName('teacher')->where('email', 'like', 'bulk_api_teacher_%')->count());
|
||
28▕ $this->assertSame(1000, User::query()->hasRoleName('admin')->where('email', 'like', 'bulk_api_admin_%')->count());
|
||
29▕
|
||
|
||
1 tests/Feature/BulkUserRoleCreationTest.php:25
|
||
|
||
|
||
Tests: 184 failed, 2 risky, 1609 passed (120956 assertions)
|
||
Duration: 92.84s
|
||
|