984 lines
26 KiB
Markdown
984 lines
26 KiB
Markdown
# 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! 🚀**
|