╔══════════════════════════════════════════════════════════╗ ║ 📅 Kalender Pendidikan - Test Suite Runner ║ ║ 22 Jun 2026 12:55:10 ║ ╚══════════════════════════════════════════════════════════╝ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🔧 Helper Functions ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✅ [PASS] base_url tanpa path - 2 assertions ✅ [PASS] base_url dengan path - 3 assertions ✅ [PASS] asset_url - 2 assertions ✅ [PASS] esc - 1 assertions ✅ [PASS] csrf_token - 2 assertions ✅ [PASS] csrf_verify - 2 assertions ✅ [PASS] session helpers - 3 assertions ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🛤️ Router & Routes ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✅ [PASS] parseUri root - 1 assertions ✅ [PASS] parseUri dengan path - 1 assertions ✅ [PASS] parseUri dengan query string - 1 assertions ✅ [PASS] definisi route terdaftar - 6 assertions ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📦 Models (CRUD + Query) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✅ [PASS] UserModel verifyPassword - 3 assertions ✅ [PASS] UserModel findByUsername - 2 assertions ✅ [PASS] EventModel getGroupedByDate - 4 assertions ✅ [PASS] EventModel countByType - 3 assertions ✅ [PASS] EventModel getByDateRange - 1 assertions ✅ [PASS] EventModel create + update + delete - 3 assertions ✅ [PASS] PeriodModel findAll - 7 assertions
Warning: Trying to access array offset on value of type null in /home/smpr6486/public_html/kalenderpendidikan.smpn167jakarta.sch.id/tests/ModelTest.php on line 77
❌ [FAIL] PeriodModel getActive - 1 assertions - harus ada active period - Exception: TestCase::assertTrue(): Argument #1 ($condition) must be of type bool, null given, called in /home/smpr6486/public_html/kalenderpendidikan.smpn167jakarta.sch.id/tests/ModelTest.php on line 77 in /home/smpr6486/public_html/kalenderpendidikan.smpn167jakarta.sch.id/tests/TestCase.php:10 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📊 Analysis Logic ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✅ [PASS] hasType mendeteksi tipe event - 3 assertions ✅ [PASS] hasType array kosong - 1 assertions ✅ [PASS] buildWeeklyRows struktur - 7 assertions ✅ [PASS] countEffectiveWeeks integer - 1 assertions ✅ [PASS] countNotEffectiveWeeks integer - 1 assertions ✅ [PASS] buildMonthlyAnalysis struktur & totalDays benar - 8 assertions ✅ [PASS] buildMonthlyAnalysis Februari kabisat 2024 - 1 assertions ✅ [PASS] buildSemesterAnalysis struktur - 8 assertions ✅ [PASS] perDay distribusi hari efektif - 2 assertions ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🌐 HTTP Endpoint Tests (via curl) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ❌ [GET /] Homepage → HTTP 404 (expected 200) ❌ [GET /auth/login] Login Form → HTTP 404 (expected 200) ❌ [GET /api/data] API Data → HTTP 404 (expected 200) ❌ [GET /export/csv-template] CSV Template Download → HTTP 404 (expected 200) ❌ [GET /export/pdf] Calendar PDF View → HTTP 404 (expected 200) ❌ [GET /export/analisis] Analisis PDF View → HTTP 404 (expected 200) ❌ [GET /export/analisis-bulanan] Analisis Bulanan PDF → HTTP 404 (expected 200) ✅ [GET /nonexistent-page] 404 Not Found → HTTP 404 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📡 API Data Validation ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ❌ API /api/data failed (HTTP 404) ╔══════════════════════════════════════════════════════════╗ ║ 📊 SUMMARY ║ ╠══════════════════════════════════════════════════════════╣ ║ Total Tests: 37 ║ ║ ✅ Passed: 28 ║ ║ ❌ Failed: 9 ║ ║ Time: 0.36s ║ ╚══════════════════════════════════════════════════════════╝ ⚠️ Some tests FAILED. Please review the output above.