| Area | File | Gap |
|---|---|---|
| Emancipation checklist | app/controllers/emancipations_controller.rb |
JSON API with 5+ action types (ADD/DELETE category/option, SET_OPTION) — zero tests |
| Placements CRUD | app/controllers/placements_controller.rb |
Full CRUD for youth placement records — only a pending placeholder spec |
| Admin user creation | app/services/create_casa_admin_service.rb |
Creates admin users with org setup — placeholder spec only |
| System admin creation | app/services/create_all_casa_admin_service.rb |
Creates system-wide admins — placeholder spec only |
| Case contacts CSV export | app/services/case_contacts_export_csv_service.rb |
Primary reporting export — placeholder spec only |
| Area | File | Gap |
|---|---|---|
| Followup reports | app/controllers/followup_reports_controller.rb |
CSV export with authorization — placeholder only |
| Mileage reports | app/controllers/mileage_reports_controller.rb |
Reimbursement CSV export — placeholder only |
| Learning hour topics | app/controllers/learning_hour_topics_controller.rb |
CRUD operations — placeholder only |
| Learning hour types | app/controllers/learning_hour_types_controller.rb |
CRUD operations — placeholder only |
| Court report date formatting | app/services/court_report_format_contact_date.rb |
Used in court report generation — placeholder only |
| FDF inputs (PDF forms) | app/services/fdf_inputs_service.rb |
PDF form generation — placeholder only |
- FundRequest model — only 1 assertion (validates presence), no tests on business logic
- MileageExportCsvService — 24 lines, minimal path coverage
- PlacementExportCsvService — 15 lines, minimal coverage
- CasaCaseChangeService — 23 lines, tracks case status transitions
- 13 models with <15-line specs testing only associations:
AllCasaAdmin,Address,ApplicationRecord,CaseGroupMembership,FundRequest,LoginActivity,PatchNote,PatchNoteGroup,PatchNoteType,PlacementType,SentEmail,SmsNotificationEvent,UserSmsNotificationEvent
- All 40 Pundit policies have corresponding specs
- All 7 mailers have specs
- Core flows (case contacts, volunteers, supervisors, court reports controllers) have substantive specs
- EmancipationsController — most complex untested controller with branching JSON logic
- CreateCasaAdminService / CreateAllCasaAdminService — user creation is security-critical
- CaseContactsExportCsvService — primary data export, used for grant reporting
- PlacementsController — full CRUD with no coverage