Files
REG_IBL/one-ui/agreement/one-md-packet-v8/TESTING_GUIDE.md
2026-05-25 20:01:37 +07:00

984 lines
26 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PANDUAN TESTING - MODUL ONE MD PACKET V8
## 📋 DESKRIPSI MODUL
Modul **One MD Packet v8** adalah sistem manajemen paket pemeriksaan medis (Medical Check-up) yang terintegrasi dengan Agreement/MOU perusahaan. Modul ini memungkinkan pengguna untuk membuat, mengelola, dan mengatur paket pemeriksaan dengan harga khusus berdasarkan perjanjian dengan perusahaan.
---
## 🎯 FITUR UTAMA
### 1. Manajemen Paket (Packet Management)
- **Pencarian paket** berdasarkan nama, perusahaan, dan MOU
- **Menambah paket baru** (Profile atau Panel)
- **Mengubah paket** yang sudah ada
- **Menghapus paket**
- **Filter berdasarkan** perusahaan dan agreement
### 2. Manajemen Detail Paket (Packet Detail Management)
- **Menambah pemeriksaan** ke dalam paket
- **Menghapus pemeriksaan** dari paket
- **Edit diskon detail** (persen dan rupiah)
- **Edit harga paket** dengan mekanisme lock/unlock
- **Import/Duplikasi paket** dari paket lain
### 3. Tipe Paket
- **Profile (PR)**: Harga paket = total harga item (tidak bisa diubah manual)
- **Panel (PN)**: Harga paket bisa dikunci dan diubah manual, atau auto-calculate
---
## 🧪 SKENARIO TESTING
## A. TESTING PENCARIAN DAN FILTER
### A1. Pencarian Paket Berdasarkan Nama
**Prasyarat:**
- Sudah ada data paket di database
- User sudah login
**Langkah Testing:**
1. Buka halaman modul Packet v8
2. Pilih perusahaan dari dropdown "Perusahaan"
3. Pilih MOU/Agreement dari dropdown "Agreement"
4. Ketik nama paket di field pencarian
5. Tekan Enter atau klik tombol Search
**Expected Result:**
- ✅ Data paket yang sesuai dengan kriteria ditampilkan di tabel
- ✅ Kolom yang ditampilkan: Tipe Paket, Nama Paket, Cetak Nota, Harga Normal, Harga Paket, Action
- ✅ Jika tidak ada data, tabel menampilkan "No data available"
**Test Data:**
- Perusahaan: "PT Maju Jaya"
- Agreement: "MOU 2026 - MCU Karyawan"
- Pencarian: "Paket Executive"
---
### A2. Filter Berdasarkan Perusahaan
**Prasyarat:**
- Ada multiple perusahaan dengan paket berbeda
**Langkah Testing:**
1. Buka halaman modul
2. Klik dropdown "Perusahaan"
3. Ketik beberapa karakter nama perusahaan (autocomplete)
4. Pilih perusahaan dari hasil pencarian
5. Pilih MOU yang tersedia
**Expected Result:**
- ✅ Autocomplete menampilkan list perusahaan yang sesuai
- ✅ Setelah pilih perusahaan, dropdown MOU otomatis ter-update dengan MOU perusahaan tersebut
- ✅ Tabel paket otomatis refresh menampilkan paket dari perusahaan yang dipilih
- ✅ Jika perusahaan di-clear (X), list paket menjadi kosong
---
### A3. Filter Berdasarkan Agreement/MOU
**Prasyarat:**
- Perusahaan sudah terpilih
- Ada multiple MOU untuk perusahaan tersebut
**Langkah Testing:**
1. Pilih perusahaan
2. Klik dropdown "Agreement"
3. Pilih salah satu MOU
4. Perhatikan list paket yang ditampilkan
**Expected Result:**
- ✅ Dropdown MOU menampilkan hanya MOU dari perusahaan yang dipilih
- ✅ Setelah pilih MOU, tabel paket otomatis refresh
- ✅ Hanya paket yang terkait dengan MOU tersebut yang ditampilkan
---
## B. TESTING CRUD PAKET (CREATE, READ, UPDATE, DELETE)
### B1. Membuat Paket Baru - Tipe Profile
**Prasyarat:**
- User sudah login
- Ada perusahaan dan MOU yang aktif (belum released/verified)
**Langkah Testing:**
1. Pilih perusahaan dari dropdown
2. Pilih MOU yang belum released/verified
3. Klik tombol "+" (Tambah Paket)
4. Di dialog yang muncul, isi:
- Nama Paket: "Paket MCU Executive Profile"
- Tipe: Pilih "Profile"
- Cetak Nota: Pilih "Ya" atau "Tidak"
- Perusahaan: Sudah otomatis terisi
- MOU: Sudah otomatis terisi
5. Klik "Simpan"
**Expected Result:**
- ✅ Dialog "Tambah Data Paket" muncul
- ✅ Field Perusahaan dan MOU sudah otomatis terisi sesuai pilihan sebelumnya
- ✅ Setelah klik Simpan, dialog tertutup
- ✅ Paket baru muncul di list paket
- ✅ Paket baru otomatis terseleksi (background amber)
- ✅ Alert sukses ditampilkan
**Test Data:**
```
Nama Paket: "Paket MCU Executive Profile 2026"
Tipe: Profile
Cetak Nota: Ya
```
---
### B2. Membuat Paket Baru - Tipe Panel
**Prasyarat:**
- Sama dengan B1
**Langkah Testing:**
1-5. (Sama dengan B1, tetapi pilih Tipe: "Panel")
**Expected Result:**
- ✅ Sama dengan B1
- ✅ Tipe paket di tabel menampilkan "Panel"
**Test Data:**
```
Nama Paket: "Paket Diabetes Panel"
Tipe: Panel
Cetak Nota: Tidak
```
---
### B3. Mengubah Nama Paket
**Prasyarat:**
- Ada paket yang sudah dibuat
- MOU belum released/verified
**Langkah Testing:**
1. Pilih paket di tabel
2. Klik tombol "Edit" (icon pensil warna biru)
3. Di dialog, ubah nama paket
4. Klik "Simpan"
**Expected Result:**
- ✅ Dialog edit muncul dengan data paket yang sudah ada
- ✅ Field Perusahaan dan MOU dalam status disabled (tidak bisa diubah)
- ✅ Field Tipe dalam status disabled (tidak bisa diubah)
- ✅ Hanya Nama Paket dan Cetak Nota yang bisa diubah
- ✅ Setelah simpan, nama paket ter-update di tabel
---
### B4. Menghapus Paket
**Prasyarat:**
- Ada paket yang akan dihapus
- MOU belum released/verified
**Langkah Testing:**
1. Pilih paket di tabel
2. Klik tombol "Delete" (icon X warna merah)
3. Di konfirmasi dialog, baca pesan konfirmasi
4. Klik "Confirm" atau "Cancel"
**Expected Result:**
- ✅ Dialog konfirmasi muncul dengan pesan: "Anda Yakin mau menghapus PAKET : [Nama Paket] ?"
- ✅ Jika klik Confirm, paket terhapus dari list
- ✅ Jika klik Cancel, paket tidak terhapus
- ✅ Setelah hapus, detail paket (panel kanan) menjadi kosong
---
### B5. Testing Tombol Disabled untuk MOU Released/Verified
**Prasyarat:**
- Ada MOU dengan status Released atau Verified
**Langkah Testing:**
1. Pilih MOU yang sudah released/verified
2. Perhatikan tombol Add, Edit, Delete
**Expected Result:**
- ✅ Tombol "+" (Add) dalam status disabled (abu-abu)
- ✅ Tombol "Edit" untuk setiap paket dalam status disabled
- ✅ Tombol "Delete" untuk setiap paket dalam status disabled
- ✅ User tidak bisa menambah, edit, atau hapus paket
---
## C. TESTING MANAJEMEN DETAIL PAKET
### C1. Melihat Detail Paket
**Prasyarat:**
- Ada paket dengan detail pemeriksaan
**Langkah Testing:**
1. Klik salah satu paket di tabel kiri
2. Perhatikan panel kanan (Detail Paket)
**Expected Result:**
- ✅ Paket yang diklik ter-highlight (background amber)
- ✅ Panel kanan menampilkan list pemeriksaan dalam paket
- ✅ Kolom ditampilkan: Kode, Nama, Bruto, Disc %, Disc Rp, Harga, Action
- ✅ Field "Harga Normal" dan "Harga Paket" di atas tabel terisi
---
### C2. Menambah Item ke Paket - Profile Type
**Prasyarat:**
- Ada paket tipe Profile yang sudah dibuat
- MOU belum released/verified
**Langkah Testing:**
1. Pilih paket Profile di tabel kiri
2. Klik tombol "Edit" (icon pensil di panel kanan)
3. Panel kiri berganti menjadi "Tambah / Ubah Detail Paket"
4. Ketik nama pemeriksaan di field pencarian
5. Klik tombol Search atau Enter
6. Dari hasil pencarian, klik tombol "»" untuk menambah item
7. Perhatikan:
- Item pindah ke panel kanan
- Harga Normal ter-update
- Harga Paket ter-update (otomatis sama dengan Harga Normal untuk Profile)
8. Klik "Simpan Paket"
**Expected Result:**
- ✅ Panel kiri menampilkan daftar pemeriksaan yang tersedia
- ✅ Setelah klik "»", item pindah ke panel kanan
- ✅ Total Harga dan Harga Paket ter-update otomatis
- ✅ Untuk Profile: Harga Paket = Total Harga (tidak bisa diubah manual)
- ✅ Chip "Profile" muncul di sebelah field Harga Paket
- ✅ Info alert muncul: "Profile: Harga paket adalah summary dari total detail. Tidak dapat mengubah harga paket atau diskon detail."
- ✅ Setelah simpan, success alert muncul
- ✅ Tombol "Simpan Paket" dan "Batal & Kembali" hilang, tombol "Kembali" muncul
---
### C3. Menambah Item ke Paket - Panel Type (Auto-Calculate Mode)
**Prasyarat:**
- Ada paket baru tipe Panel yang belum ada detailnya
- MOU belum released/verified
**Langkah Testing:**
1. Buat paket Panel baru
2. Paket otomatis terpilih
3. Klik tombol "Edit" di panel kanan
4. Tambahkan beberapa item pemeriksaan (3-5 item)
5. Perhatikan Harga Paket ter-update otomatis setiap kali tambah item
6. Klik "Simpan Paket"
**Expected Result:**
- ✅ Mode: UNLOCKED (Harga Paket auto-calculate)
- ✅ Setiap tambah item, Harga Paket = Total Harga
- ✅ Tidak ada chip "Dikunci" di sebelah Harga Paket
- ✅ Console log menampilkan: "Panel UNLOCKED - updating packet price"
- ✅ Setelah simpan, data tersimpan ke database
- ✅ Success alert muncul
---
### C4. Menambah Item ke Paket - Panel Type (Locked Mode)
**Prasyarat:**
- Ada paket Panel yang sudah tersimpan di database dengan detail items
**Langkah Testing:**
1. Pilih paket Panel yang sudah ada detailnya
2. Klik tombol "Edit"
3. Perhatikan:
- Ada chip "Dikunci" (warna orange) di sebelah Harga Paket
- Tooltip menjelaskan: "Harga paket dikunci. Tidak akan berubah otomatis..."
4. Tambahkan item baru
5. Perhatikan: Harga Paket TIDAK berubah (tetap terkunci)
6. Hapus item
7. Perhatikan: Harga Paket tetap TIDAK berubah
**Expected Result:**
- ✅ Mode: LOCKED (Harga Paket tidak auto-calculate)
- ✅ Chip "Dikunci" dengan icon lock muncul
- ✅ Harga Paket tetap fixed saat add/remove item
- ✅ Total Harga berubah, tetapi Harga Paket tidak berubah
- ✅ Console log menampilkan: "Panel LOCKED - NOT updating packet price"
---
### C5. Edit Harga Paket Manual - Panel Type
**Prasyarat:**
- Ada paket Panel dalam mode edit
**Langkah Testing:**
1. Buka mode edit paket Panel
2. Tambahkan 3 item dengan total harga misalnya Rp 500.000
3. Perhatikan Harga Paket = Rp 500.000
4. Klik icon "Edit" (pencil) di sebelah field Harga Paket
5. Field Harga Paket menjadi editable
6. Ubah Harga Paket menjadi Rp 400.000
7. Perhatikan:
- Diskon otomatis terdistribusi pro-rata ke setiap item
- Disc % di-set ke 0 untuk semua item
- Disc Rp ter-update untuk setiap item
8. Klik icon "Save" (di sebelah field Harga Paket)
9. Tambahkan item baru
10. Perhatikan: Harga Paket TIDAK berubah (terkunci)
**Expected Result:**
- ✅ Setelah klik icon Edit, field Harga Paket menjadi editable
- ✅ Icon berubah dari "edit" menjadi "save"
- ✅ Saat ubah Harga Paket, diskon terdistribusi pro-rata:
```
Total Disc = Total Harga - Harga Paket
Disc per item = (Bruto item / Total Bruto) × Total Disc
```
- ✅ Console log menampilkan detail distribusi diskon untuk setiap item
- ✅ Setelah klik Save:
- Alert muncul: "Harga paket dikonfirmasi dan dikunci..."
- Chip "Dikunci" muncul
- Harga Paket tidak auto-update saat add/remove item
- ✅ Validation: Harga Paket tidak boleh > Total Harga (muncul alert)
**Test Case - Distribusi Pro-rata:**
```
Contoh:
Item 1: Bruto Rp 200.000
Item 2: Bruto Rp 200.000
Item 3: Bruto Rp 100.000
Total: Rp 500.000
Ubah Harga Paket jadi Rp 400.000
Total Disc = Rp 100.000
Hasil distribusi:
Item 1: Disc Rp = (200k/500k) × 100k = Rp 40.000 → Harga jadi Rp 160.000
Item 2: Disc Rp = (200k/500k) × 100k = Rp 40.000 → Harga jadi Rp 160.000
Item 3: Disc Rp = (100k/500k) × 100k = Rp 20.000 → Harga jadi Rp 80.000
Total Harga Paket = Rp 400.000 ✅
```
---
### C6. Edit Diskon Detail Item - Panel Type
**Prasyarat:**
- Ada paket Panel dengan items dalam mode edit
**Langkah Testing:**
1. Buka mode edit paket Panel
2. Tambahkan 2-3 items
3. Klik tombol "Edit Diskon Detail Paket"
4. Kolom "Disc %" dan "Disc Rp" menjadi editable (input field)
5. Ubah Disc % untuk item pertama (misal: 10%)
6. Perhatikan: Harga item ter-update otomatis
7. Ubah Disc Rp untuk item kedua (misal: Rp 20.000)
8. Perhatikan: Harga item ter-update otomatis
9. Perhatikan: Total Harga ter-update
10. Perhatikan: Harga Paket ter-update (jika tidak locked)
11. Klik "Simpan Diskon Detail"
**Expected Result:**
- ✅ Setelah klik "Edit Diskon Detail Paket", kolom disc menjadi input field
- ✅ Info hint muncul: "Edit diskon persen (%) dan/atau diskon rupiah (Rp) untuk setiap item"
- ✅ Rumus perhitungan:
```
Harga Item = Bruto - (Bruto × Disc%/100) - Disc Rp
```
- ✅ Setiap perubahan langsung ter-reflect di kolom Harga
- ✅ Total Harga ter-update otomatis
- ✅ Jika tidak locked, Harga Paket juga ter-update
- ✅ Setelah klik "Simpan Diskon Detail":
- Alert: "Diskon detail dikonfirmasi. Klik 'Simpan Paket' untuk menyimpan ke database."
- Edit mode diskon tertutup
- Tombol berubah jadi "Edit Diskon Detail Paket" lagi
**Test Case:**
```
Item: Darah Lengkap
Bruto: Rp 100.000
Disc %: 10
Disc Rp: Rp 5.000
Perhitungan:
= 100.000 - (100.000 × 10/100) - 5.000
= 100.000 - 10.000 - 5.000
= Rp 85.000 ✅
```
---
### C7. Menghapus Item dari Paket
**Prasyarat:**
- Ada paket dengan items dalam mode edit
**Langkah Testing:**
1. Buka mode edit paket
2. Klik tombol "«" (warna merah) pada item yang akan dihapus
3. Perhatikan:
- Item hilang dari list
- Item kembali ke list pencarian (panel kiri)
- Total Harga ter-update
- Harga Paket ter-update (jika tidak locked)
**Expected Result:**
- ✅ Item terhapus dari panel kanan
- ✅ Item kembali muncul di panel kiri (list test)
- ✅ Total Harga dikurangi harga item yang dihapus
- ✅ Untuk Profile: Harga Paket otomatis = Total Harga
- ✅ Untuk Panel Unlocked: Harga Paket = Total Harga
- ✅ Untuk Panel Locked: Harga Paket tetap (tidak berubah)
- ✅ Console log menampilkan info update/tidak update
---
### C8. Validasi Duplikasi Item
**Prasyarat:**
- Ada paket dalam mode edit dengan beberapa items
**Langkah Testing:**
1. Tambahkan item "Hemoglobin" ke paket
2. Coba tambahkan lagi item "Hemoglobin" atau item yang mengandung NAT test yang sama
3. Perhatikan alert yang muncul
**Expected Result:**
- ✅ Alert muncul: "Pemeriksaan tersebut sudah ada !"
- ✅ Item tidak ditambahkan ke paket (duplikasi dicegah)
- ✅ Validasi berdasarkan NAT test (natural test) yang sama
---
### C9. Batal Edit Paket
**Prasyarat:**
- Ada paket dalam mode edit dengan perubahan yang belum disimpan
**Langkah Testing:**
1. Buka mode edit paket
2. Tambahkan/hapus beberapa items
3. Ubah diskon atau harga paket
4. Klik tombol "Batal & Kembali"
5. Konfirmasi: "Yakin ingin membatalkan perubahan dan kembali?"
6. Klik OK
**Expected Result:**
- ✅ Konfirmasi dialog muncul
- ✅ Setelah OK:
- Mode edit ditutup
- Panel kiri kembali normal (tidak ada list test)
- Data paket di-refresh dari database (perubahan dibatalkan)
- Harga Paket kembali ke nilai sebelumnya
- Detail items kembali ke state sebelumnya
---
### C10. Simpan Paket dengan Perubahan
**Prasyarat:**
- Ada paket dalam mode edit dengan perubahan
**Langkah Testing:**
1. Buka mode edit paket
2. Lakukan perubahan (add items, edit disc, edit harga)
3. Klik "Simpan Paket"
4. Tunggu proses penyimpanan
**Expected Result:**
- ✅ Data dikirim ke backend (API call)
- ✅ Success alert muncul: "✅ Data berhasil disimpan! Klik 'Kembali' untuk kembali ke list paket."
- ✅ Alert banner hijau muncul dengan pesan sukses
- ✅ Tombol "Simpan Paket" dan "Batal & Kembali" hilang
- ✅ Tombol "Kembali" tetap ada
- ✅ Flag `is_data_saved` = true
- ✅ Mode LOCKED aktif (untuk Panel type)
- ✅ Console log: "✅ is_data_saved: true"
---
### C11. Kembali Setelah Simpan
**Prasyarat:**
- Data paket sudah berhasil disimpan (success alert muncul)
**Langkah Testing:**
1. Klik tombol "Kembali"
2. Perhatikan perubahan UI
**Expected Result:**
- ✅ Mode edit ditutup
- ✅ Panel kiri kembali normal
- ✅ Data paket di-refresh dari backend
- ✅ Data px (detail) di-refresh dari backend
- ✅ Paket yang baru disimpan masih terseleksi
- ✅ Detail paket menampilkan data terbaru dari database
- ✅ Semua state edit ter-reset (edit_detail_discount_mode, edit_packet_price_mode, is_packet_price_locked, is_data_saved)
---
## D. TESTING IMPORT/DUPLIKASI PAKET
### D1. Import Paket dari Paket Lain
**Prasyarat:**
- Ada paket sumber dengan detail items
- Ada paket target yang akan di-import
**Langkah Testing:**
1. Pilih paket target di tabel
2. Klik tombol "Import" (icon import warna orange) di panel kanan
3. Dialog "DUPLIKASI PAKET" muncul
4. Pilih paket sumber dari list
5. Klik tombol import/copy
6. Dialog tertutup
7. Perhatikan detail paket target ter-update
**Expected Result:**
- ✅ Dialog duplikasi muncul dengan list paket yang bisa di-import
- ✅ Setelah pilih dan klik import, items dari paket sumber ter-copy ke paket target
- ✅ Harga dan diskon ikut ter-copy
- ✅ Dialog tertutup otomatis
- ✅ Detail paket target menampilkan items yang ter-import
---
### D2. Validasi Import - MOU Verified
**Prasyarat:**
- MOU target dalam status verified
**Langkah Testing:**
1. Pilih MOU verified
2. Pilih paket
3. Perhatikan tombol Import
**Expected Result:**
- ✅ Tombol Import dalam status disabled
- ✅ User tidak bisa import paket jika MOU sudah verified dan paket sudah ada isinya
---
## E. TESTING EDGE CASES DAN VALIDASI
### E1. Validasi Harga Paket > Total Harga
**Prasyarat:**
- Ada paket Panel dalam mode edit
**Langkah Testing:**
1. Tambahkan items dengan total Rp 300.000
2. Edit Harga Paket menjadi Rp 350.000 (lebih besar dari total)
3. Coba simpan atau tekan enter
**Expected Result:**
- ✅ Alert muncul: "Harga paket tidak boleh melebihi total harga normal!"
- ✅ Harga Paket kembali ke nilai sebelumnya (original_packet_price)
---
### E2. Paket Kosong (Tanpa Items)
**Prasyarat:**
- Ada paket baru tanpa items
**Langkah Testing:**
1. Buat paket baru
2. Klik Edit
3. Langsung klik "Simpan Paket" tanpa menambah items
**Expected Result:**
- ✅ Paket bisa disimpan dengan 0 items
- ✅ Harga Paket = 0
- ✅ Total Harga = 0
---
### E3. Loading State
**Prasyarat:**
- Network lambat atau data besar
**Langkah Testing:**
1. Buka mode edit dan search test
2. Perhatikan loading indicator
**Expected Result:**
- ✅ Progress bar muncul di atas search box (warna abu untuk test list)
- ✅ Progress bar muncul di atas tabel detail paket (warna biru)
- ✅ Loading indicator indeterminate (animasi bergerak)
- ✅ Setelah data loaded, loading indicator hilang
---
### E4. Harga Paket = Total Harga (Clear All Discounts)
**Prasyarat:**
- Ada paket Panel dengan items dan discounts
**Langkah Testing:**
1. Edit paket dengan total harga Rp 500.000
2. Ada beberapa items dengan disc % dan disc Rp
3. Edit Harga Paket menjadi Rp 500.000 (sama dengan total)
4. Perhatikan semua discounts
**Expected Result:**
- ✅ Semua Disc % di-set ke 0
- ✅ Semua Disc Rp di-set ke 0
- ✅ Harga setiap item = Bruto
- ✅ Total Harga = Harga Paket
---
### E5. Add Item Setelah Save (Data Saved State)
**Prasyarat:**
- Paket sudah disimpan (success alert muncul, is_data_saved = true)
**Langkah Testing:**
1. Setelah simpan paket (success alert muncul)
2. Tambahkan item baru dari list test
3. Perhatikan UI changes
**Expected Result:**
- ✅ Success alert hilang
- ✅ Flag `is_data_saved` menjadi false lagi
- ✅ Tombol "Simpan Paket" dan "Batal & Kembali" muncul kembali
- ✅ Total Harga ter-update
- ✅ Harga Paket ter-update sesuai mode (locked/unlocked)
- ✅ Console log: "→ Items count changed, resetting is_data_saved"
---
## F. TESTING INTEGRASI DAN WORKFLOW
### F1. Complete Workflow - Buat Paket Profile dari Awal
**Langkah Testing:**
1. Login ke sistem
2. Pilih perusahaan "PT ABC"
3. Pilih MOU "MCU 2026"
4. Klik tambah paket (+)
5. Isi nama: "Paket MCU Standard Profile"
6. Pilih tipe: Profile
7. Cetak nota: Ya
8. Simpan
9. Paket otomatis terpilih
10. Klik Edit (icon pensil di panel kanan)
11. Search test: "hemoglobin"
12. Add test ke paket (tombol »)
13. Add 5-7 test lagi
14. Perhatikan Harga Paket = Total Harga (otomatis)
15. Klik "Simpan Paket"
16. Klik "Kembali"
17. Verify paket muncul di list dengan harga yang benar
**Expected Result:**
- ✅ Semua step berjalan lancar tanpa error
- ✅ Paket tersimpan di database
- ✅ Harga Paket = Total Harga untuk Profile
- ✅ Tidak ada tombol Edit Harga Paket untuk Profile
- ✅ Info alert muncul menjelaskan Profile type
---
### F2. Complete Workflow - Buat Paket Panel dengan Harga Custom
**Langkah Testing:**
1. Login ke sistem
2. Pilih perusahaan dan MOU
3. Buat paket baru tipe Panel
4. Nama: "Paket Diabetes Panel Custom"
5. Simpan
6. Edit paket
7. Add 5 test dengan total misalnya Rp 600.000
8. Harga Paket otomatis = Rp 600.000
9. Klik icon Edit Harga Paket
10. Ubah menjadi Rp 500.000
11. Verify distribusi diskon pro-rata
12. Klik icon Save Harga Paket
13. Alert: Harga dikunci
14. Add test baru
15. Verify Harga Paket tetap Rp 500.000 (tidak berubah)
16. Klik "Simpan Paket"
17. Success alert muncul
18. Klik "Kembali"
19. Verify data tersimpan dengan benar
**Expected Result:**
- ✅ Semua step berjalan lancar
- ✅ Diskon terdistribusi pro-rata dengan benar
- ✅ Harga Paket terkunci setelah edit manual
- ✅ Add item setelah lock tidak mengubah Harga Paket
- ✅ Data tersimpan di database dengan benar
---
### F3. Complete Workflow - Edit Diskon Detail
**Langkah Testing:**
1. Pilih paket Panel yang sudah ada
2. Edit paket
3. Klik "Edit Diskon Detail Paket"
4. Ubah Disc % item 1 menjadi 15%
5. Ubah Disc Rp item 2 menjadi Rp 10.000
6. Verify harga ter-calculate dengan benar
7. Klik "Simpan Diskon Detail"
8. Alert konfirmasi
9. Klik "Simpan Paket"
10. Klik "Kembali"
11. Edit lagi paket tersebut
12. Verify discount tersimpan dengan benar
**Expected Result:**
- ✅ Edit diskon detail berfungsi dengan baik
- ✅ Perhitungan harga benar
- ✅ Data tersimpan ke database
- ✅ Setelah refresh, discount masih tersimpan
---
## G. TESTING COMPATIBILITY DAN BROWSER
### G1. Testing di Multiple Browser
**Browser Testing:**
- ✅ Chrome (latest)
- ✅ Firefox (latest)
- ✅ Safari (latest)
- ✅ Edge (latest)
**Langkah Testing:**
1. Buka aplikasi di setiap browser
2. Lakukan workflow dasar (create, edit, save)
3. Test semua fitur utama
**Expected Result:**
- ✅ UI tampil dengan benar di semua browser
- ✅ Semua fungsi bekerja normal
- ✅ Tidak ada console error
---
### G2. Testing Responsiveness
**Langkah Testing:**
1. Buka aplikasi
2. Resize browser window
3. Test di berbagai ukuran:
- Desktop: 1920x1080
- Laptop: 1366x768
- Tablet: 768x1024
**Expected Result:**
- ✅ Layout tetap proper di berbagai ukuran
- ✅ Tabel responsive (scroll jika perlu)
- ✅ Dialog/modal tetap centered
---
## H. TESTING PERFORMANCE
### H1. Testing dengan Data Besar
**Prasyarat:**
- Ada paket dengan 50+ items
**Langkah Testing:**
1. Pilih paket dengan banyak items
2. Edit paket
3. Add/remove items
4. Edit harga paket
5. Simpan
**Expected Result:**
- ✅ UI tetap responsive
- ✅ Tidak ada lag saat add/remove items
- ✅ Perhitungan diskon pro-rata cepat (< 1 detik)
- ✅ Save operation berhasil
---
### H2. Testing Search Performance
**Langkah Testing:**
1. Search test dengan query yang menghasilkan 100+ results
2. Perhatikan loading time
3. Test scroll di tabel
**Expected Result:**
- ✅ Search results ditampilkan dalam < 2 detik
- ✅ Tabel di-paginate dengan baik (5 items per page)
- ✅ Pagination berfungsi normal
---
## 📊 CHECKLIST TESTING
### Functional Testing
- [ ] A1. Pencarian Paket
- [ ] A2. Filter Perusahaan
- [ ] A3. Filter MOU
- [ ] B1. Create Paket Profile
- [ ] B2. Create Paket Panel
- [ ] B3. Update Paket
- [ ] B4. Delete Paket
- [ ] B5. Tombol Disabled MOU Released
- [ ] C1. View Detail Paket
- [ ] C2. Add Item - Profile
- [ ] C3. Add Item - Panel Unlocked
- [ ] C4. Add Item - Panel Locked
- [ ] C5. Edit Harga Paket Manual
- [ ] C6. Edit Diskon Detail
- [ ] C7. Remove Item
- [ ] C8. Validasi Duplikasi Item
- [ ] C9. Batal Edit
- [ ] C10. Simpan Paket
- [ ] C11. Kembali Setelah Simpan
- [ ] D1. Import Paket
- [ ] D2. Validasi Import MOU Verified
### Edge Case Testing
- [ ] E1. Validasi Harga > Total
- [ ] E2. Paket Kosong
- [ ] E3. Loading State
- [ ] E4. Clear All Discounts
- [ ] E5. Add Item After Save
### Integration Testing
- [ ] F1. Workflow Profile Complete
- [ ] F2. Workflow Panel Custom Price
- [ ] F3. Workflow Edit Diskon
### Compatibility Testing
- [ ] G1. Multiple Browser
- [ ] G2. Responsiveness
### Performance Testing
- [ ] H1. Data Besar
- [ ] H2. Search Performance
---
## 🐛 BUG REPORTING TEMPLATE
Jika menemukan bug, gunakan template berikut:
```
**Bug ID:** BUG-[YYYYMMDD]-[XX]
**Severity:** Critical / High / Medium / Low
**Module:** One MD Packet V8
**Feature:** [Nama fitur, misal: "Edit Harga Paket Manual"]
**Test Case:** [Test case yang gagal, misal: "C5. Edit Harga Paket Manual"]
**Environment:**
- Browser: [Chrome 120 / Firefox 121 / etc]
- OS: [Windows 11 / macOS 14 / etc]
- User Role: [Admin / User / etc]
**Steps to Reproduce:**
1. [Step 1]
2. [Step 2]
3. [Step 3]
**Expected Result:**
[Apa yang seharusnya terjadi]
**Actual Result:**
[Apa yang benar-benar terjadi]
**Screenshot/Video:**
[Attach jika ada]
**Console Error:**
[Copy paste console error jika ada]
**Additional Notes:**
[Info tambahan]
```
---
## 📝 TEST DATA
### Data Perusahaan
```
1. PT Maju Jaya
- MOU: MCU Karyawan 2026 (Status: Active)
- MOU: MCU Karyawan 2025 (Status: Released)
2. PT Sukses Sentosa
- MOU: General MCU 2026 (Status: Active)
```
### Data Paket
```
1. Paket MCU Executive Profile
- Tipe: Profile
- Cetak Nota: Ya
- Items: 15 tests
- Total: Rp 850.000
2. Paket Diabetes Panel
- Tipe: Panel
- Cetak Nota: Tidak
- Items: 8 tests
- Total: Rp 450.000
- Harga Paket: Rp 400.000 (dengan diskon)
3. Paket Hepatitis Panel
- Tipe: Panel
- Cetak Nota: Ya
- Items: 6 tests
- Total: Rp 350.000
- Harga Paket: Rp 350.000 (tanpa diskon)
```
### Data Test/Pemeriksaan
```
1. Hemoglobin - Rp 25.000
2. Leukosit - Rp 25.000
3. Trombosit - Rp 25.000
4. Eritrosit - Rp 25.000
5. Gula Darah Puasa - Rp 30.000
6. Gula Darah 2 Jam PP - Rp 30.000
7. HbA1c - Rp 120.000
8. Kolesterol Total - Rp 40.000
9. HDL - Rp 40.000
10. LDL - Rp 40.000
11. Trigliserida - Rp 40.000
12. SGOT - Rp 35.000
13. SGPT - Rp 35.000
14. Ureum - Rp 30.000
15. Kreatinin - Rp 30.000
```
---
## 🎓 TIPS TESTING
### 1. Console Monitoring
Selalu buka Browser Console (F12) saat testing untuk melihat:
- ✅ Log state changes (locked/unlocked)
- ✅ Log pro-rata distribution
- ✅ Error messages
- ✅ API responses
### 2. State Verification
Perhatikan state flags di console:
- `is_packet_price_locked`
- `is_data_saved`
- `edit_detail_discount_mode`
- `edit_packet_price_mode`
### 3. Visual Indicators
Perhatikan visual feedback:
- ✅ Amber background = selected item
- ✅ Orange chip "Dikunci" = locked price
- ✅ Blue chip "Profile" = profile type
- ✅ Green alert = success save
- ✅ Progress bar = loading
### 4. Workflow Testing Priority
Test berdasarkan prioritas:
1. **P0 (Critical):** Create, Edit, Save, Delete paket
2. **P1 (High):** Add/remove items, Edit harga/diskon
3. **P2 (Medium):** Search, filter, import
4. **P3 (Low):** UI/UX, loading states
---
## 📞 KONTAK & SUPPORT
Untuk pertanyaan atau issue terkait testing:
- **Developer:** [Nama Developer]
- **QA Lead:** [Nama QA]
- **Project Manager:** [Nama PM]
---
**Document Version:** 1.0
**Last Updated:** 2026-01-22
**Prepared By:** AI Assistant (Claude)
**Module:** One MD Packet V8
---
**SELAMAT TESTING! 🚀**