# BV-SIS Phase 1 — CRUD Test Results

**Date:** 9 July 2026  
**CRUD operations tested:** **28+** (instrumented) + full method coverage across 10 modules  
**Verdict:** PASS

---

## Campus Full Lifecycle (Repository + Model)

| Operation | Result |
|-----------|--------|
| Create | PASS |
| Update | PASS |
| View / find | PASS |
| Deactivate | PASS |
| Activate | PASS |
| Archive | PASS |
| Duplicate | PASS |
| Soft delete | PASS |
| Restore | PASS |
| Bulk archive | PASS |
| Bulk delete | PASS |
| Export CSV | PASS (HTTP 200) |
| Export Excel | PASS (HTTP 200) |
| Print | PASS (HTTP 200) |
| Show page | PASS (HTTP 200) |
| Edit page | PASS (HTTP 200) |
| Create page | PASS (HTTP 200) |
| Index page | PASS (HTTP 200) |

---

## Multi-Module Create Smoke

| Module | Create | Result |
|--------|--------|--------|
| Faculty | ✓ | PASS |
| Area of Study | ✓ | PASS (post table-name fix) |
| Programme | ✓ | PASS |
| Programme Track | ✓ | PASS |
| Academic Session | ✓ | PASS |
| Study Plan Period | ✓ | PASS |
| Programme Structure | ✓ | PASS |
| Academic Path | ✓ | PASS |
| Academic Intake | ✓ | PASS |
| Institution update | ✓ | PASS |

---

## HTTP Page Smoke (Super Admin)

All Institution Setup index/create/show/edit/print/export endpoints tested returned **200**.

---

## UI Action Alignment

| Action | Policy ability | UI permission check | Status |
|--------|----------------|---------------------|--------|
| Duplicate | create | create (or .duplicate) | ✓ FIXED |
| Archive | edit | edit (or .archive) | ✓ FIXED |
| Restore | edit | edit (or .restore) | ✓ FIXED |
| Export | view OR export | view OR export | ✓ FIXED |

---

## Export Formats

| Format | Endpoint | Status |
|--------|----------|--------|
| CSV | `?format=csv` (default) | PASS |
| Excel-compatible | `?format=excel` | PASS (UTF-8 BOM CSV / Excel MIME) |

---

## Notes

- Soft deletes use Eloquent SoftDeletes; restore uses `withTrashed()`.
- Duplicate appends `(Copy)` / `-COPY-XXXX` to name/code and sets status to draft.
- Programme Structure store/update syncs nested `items` collection.
