# Workload Assignment Test Cases

## Skenario Minimum

1. SK Pembimbing terbit -> pembimbing aktif = 1
- Setup: proposal dengan `proposal_supervisors.is_active=1`, generate `SK_PEMBIMBING`.
- Expected:
  - `lecturer_assignments` terisi `role_group=PEMBIMBING`, `status=ACTIVE`, `start_date` dari tanggal SK.
  - Query beban aktif pembimbing per dosen bertambah 1.

2. SK Penguji terbit -> penguji aktif = 1
- Setup: assign penguji untuk sempro/semhas/ujian dari WD1.
- Expected:
  - `lecturer_assignments` terisi `role_group=PENGUJI`, `status=ACTIVE`, `start_date` dari tanggal SK.
  - Query beban aktif penguji per dosen bertambah sesuai jumlah assignment.

3. Ujian selesai, status kelulusan belum ada -> penguji aktif = 0, pembimbing tetap aktif = 1
- Setup: simpan BA `UJIAN` tanpa `graduation_status`.
- Expected:
  - Semua assignment `role_group=PENGUJI` pada proposal tsb berubah `ENDED`.
  - Assignment `role_group=PEMBIMBING` tetap `ACTIVE`.

4. Status LULUS diinput -> pembimbing aktif = 0
- Setup: update `students.status` menjadi `LULUS` (atau simpan BA ujian dengan `graduation_status=LULUS`).
- Expected:
  - Assignment pembimbing proposal tsb berubah `ENDED`.
  - `end_date` >= tanggal ujian selesai.

5. Status TIDAK LULUS -> pembimbing tetap aktif = 1, penguji tetap 0
- Setup: simpan BA ujian dengan `graduation_status=TIDAK_LULUS`.
- Expected:
  - Penguji tetap `ENDED` (karena ujian selesai).
  - Pembimbing tetap `ACTIVE`.

6. Input ulang event yang sama -> tidak dobel assignment
- Setup: submit ulang assign penguji/sk pembimbing/event ujian selesai.
- Expected:
  - Tidak ada row aktif ganda untuk kombinasi assignment yang sama.
  - `end_date` tidak mundur ke tanggal lebih baru (hanya diisi jika null atau dikoreksi ke tanggal lebih awal yang valid).

