feat: Add UAT checklist HTML version and enhance report generation with collection date support
This commit adds a print-friendly HTML version of the UAT checklist and enhances the report generation system with collection date tracking. New Features: - Add UAT_GDC_CMOD_Checklist.html with interactive checkboxes and print-friendly layout - Simplify UAT markdown checklist by removing 'No.' column and refining instructions Report Generation Enhancements: - Add collection date tracking to report generation workflow - ReportController now passes collection date to PDF spooler - ReportHelper fetches collection date from SP_REQUESTS table via getCollectionDateRaw() - Node spooler receives collection date parameter for report generation UI Improvements (content_requests.php): - Add new 'Result' column showing Ready/Pending status with visual indicators - Move Print, Generate PDF, and Retry PDF actions from Actions menu to Result dropdown - Result dropdown shows green 'Ready' for duavalidated requests, yellow 'Pending' otherwise - Actions appropriately restricted by role and validation status - Simplify Actions menu by relocating report-related functions
This commit is contained in:
parent
cfb81201a2
commit
440f8b0362
195
UAT_GDC_CMOD_Checklist.html
Normal file
195
UAT_GDC_CMOD_Checklist.html
Normal file
@ -0,0 +1,195 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="id">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>UAT Checklist - GDC CMOD 📋</title>
|
||||
<style>
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
body {
|
||||
font-family: 'Segoe UI', 'Arial', sans-serif;
|
||||
line-height: 1.1;
|
||||
color: #000;
|
||||
background: white;
|
||||
padding: 3mm;
|
||||
font-size: 10pt;
|
||||
}
|
||||
.container {
|
||||
max-width: 100%;
|
||||
margin: 0 auto;
|
||||
background: white;
|
||||
padding: 0;
|
||||
}
|
||||
@media print {
|
||||
body { padding: 1mm; font-size: 10pt; }
|
||||
h1 {
|
||||
font-size: 12pt;
|
||||
padding: 1px 0;
|
||||
margin: 0 0 2px 0;
|
||||
page-break-after: avoid !important;
|
||||
}
|
||||
.data-table { margin: 0; }
|
||||
table { page-break-inside: avoid !important; }
|
||||
.container { padding-top: 0; }
|
||||
tr { page-break-inside: avoid !important; }
|
||||
input[type="text"] {
|
||||
border: 1px solid #ccc !important;
|
||||
background: #fff !important;
|
||||
}
|
||||
input[type="checkbox"] {
|
||||
-webkit-appearance: square !important;
|
||||
appearance: square !important;
|
||||
width: 10px !important;
|
||||
height: 10px !important;
|
||||
}
|
||||
}
|
||||
h1 {
|
||||
color: #000;
|
||||
text-align: center;
|
||||
font-size: 11pt;
|
||||
border-bottom: 1px solid #000;
|
||||
padding: 1px 0;
|
||||
margin: 0;
|
||||
page-break-after: avoid;
|
||||
}
|
||||
.data-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin: 2px 0 0 0;
|
||||
font-size: 8pt;
|
||||
}
|
||||
.data-table th {
|
||||
background: #e9ecef;
|
||||
color: #000;
|
||||
padding: 1px 2px;
|
||||
text-align: left;
|
||||
font-size: 8pt;
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
border: 1px solid #000;
|
||||
line-height: 1.1;
|
||||
}
|
||||
.data-table td {
|
||||
border: 1px solid #000;
|
||||
padding: 1px 2px;
|
||||
vertical-align: top;
|
||||
word-wrap: break-word;
|
||||
line-height: 1.1;
|
||||
}
|
||||
.data-table tr:nth-child(even) { background: #f8f8f8; }
|
||||
input[type="text"] {
|
||||
width: 100%;
|
||||
padding: 2px;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 2px;
|
||||
font-size: 8pt;
|
||||
}
|
||||
input[type="checkbox"] {
|
||||
margin: 0 2px;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
}
|
||||
code {
|
||||
background: #ddd;
|
||||
padding: 1px 2px;
|
||||
border: 1px solid #999;
|
||||
font-size: 8pt;
|
||||
}
|
||||
.spacer { height: 0; display: none; }
|
||||
br { line-height: 1.5; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div style="page-break-inside: avoid; display: inline-block; width: 100%;">
|
||||
<h1>📋 UAT (User Acceptance Testing) 🧪 - GDC CMOD Laboratory Management System 🏥</h1>
|
||||
<table class="data-table">
|
||||
<tr><th>ID</th><th>Judul Test Case</th><th>Langkah Utama</th><th>Expected Result</th><th>Role</th><th>Hasil</th><th>Issue/Jawaban</th></tr>
|
||||
<tr><td>🎯</td><td>📌 Ready to Test!</td><td>🚀 Let's Go!</td><td>✨ Good Luck!</td><td>👥 All Roles</td><td>🎉 Fun!</td><td>📝 Notes...</td></tr>
|
||||
<tr><td>TC-001</td><td>Login Berhasil 🔐</td><td>Login dengan username & password valid</td><td>Redirect ke dashboard sesuai role 🎯</td><td>AUTENTIKASI & SESI 🔑</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-002</td><td>Login Gagal - Username Salah 🚫</td><td>Masukkan username tidak ada</td><td>Error "Invalid credentials" ⚠️</td><td>AUTENTIKASI & SESI 🔐</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-003</td><td>Login Gagal - Password Salah 🙅</td><td>Password salah</td><td>Error invalid credentials 🚨</td><td>AUTENTIKASI & SESI 🔐</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-004</td><td>Login Gagal - Akun Terkunci 🔒</td><td>Login ke akun locked dari legacy</td><td>Error "Account locked" 🛑</td><td>AUTENTIKASI & SESI 🔐</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-005</td><td>Logout Berhasil 👋</td><td>Klik menu Logout</td><td>Session terhapus, redirect ke login ✨</td><td>AUTENTIKASI & SESI 🔑</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-006</td><td>Redirect ke Login Belum Login 🔄</td><td>Akses protected page tanpa login</td><td>Redirect otomatis ke halaman login 🚪</td><td>AUTENTIKASI & SESI 🛡️</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-007</td><td>Ganti Password Berhasil 🔑</td><td>Change password baru</td><td>Password berhasil diubah dan di-hash ✅</td><td>AUTENTIKASI & SESI 🆕</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-008</td><td>Ganti Password Gagal - Password Lama Salah ❌</td><td>Masukkan password lama salah</td><td>Error "Invalid old password" 🚫</td><td>AUTENTIKASI & SESI 🔐</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-009</td><td>Role-Based Redirect Login 👥</td><td>Login dengan berbagai role</td><td>Redirect ke dashboard sesuai role 🎯</td><td>AUTENTIKASI & SESI 🎭</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-010</td><td>Tampilkan Semua Request 📊</td><td>Login Superuser → <code>/superuser</code></td><td>Tabel requests semua status ditampilkan 📋</td><td>SU, ADM, PHLEB, CS</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-011</td><td>Filter by Status 🎛️</td><td>Pilih status di dashboard filter</td><td>Filter berfungsi sesuai status 🔍</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-012</td><td>Filter by Date Range 📅</td><td>Set date1 & date2 → filter</td><td>Filter tanggal berfungsi 🗓️</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-013</td><td>Search by Patient Name 👤</td><td>Masukkan nama pasien</td><td>Tampilkan request dengan nama tsb 🔍</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-014</td><td>Search by Lab Number 🔢</td><td>Masukkan Lab Number</td><td>Tampilkan request tsb 🎯</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-015</td><td>Search by Register Number #️⃣</td><td>Masukkan Register Number</td><td>Tampilkan request tsb 📌</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-016</td><td>Table Sorting ↕️</td><td>Klik header kolom</td><td>Kolom di-sort ASC/DESC 📈📉</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-017</td><td>Pagination 📖</td><td>Klik halaman berbeda</td><td>Berpindah halaman dengan benar 📄</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-018</td><td>Tampilkan List User 👥</td><td>Access <code>/superuser/users</code></td><td>Tabel users ditampilkan lengkap 📋</td><td>SU, ADM</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-019</td><td>Buat User Baru ➕</td><td>Add User → isi form</td><td>User berhasil dibuat dan password di-hash 🆔</td><td>SU, ADM</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-020</td><td>Validasi Password Min 3 Karakter 🔢</td><td>Buat user dengan password < 3 char</td><td>Error "Password min 3 karakter" ⚠️</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-021</td><td>Update User Role ✏️</td><td>Edit user → ubah role</td><td>Role berhasil diubah 🔄</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-022</td><td>Update Password User 🔐</td><td>Edit user → ganti password</td><td>Password di-hash dengan benar 🔄</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-023</td><td>Delete User 🗑️</td><td>Delete user</td><td>User terhapus dari database 🗑️</td><td>SU, ADM</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-024</td><td>Tampilkan Request Final ✨</td><td>Access <code>/superuser/validate</code></td><td>Hanya request "Fin" yang tampil ✅</td><td>SU, ADM, LAB</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-025</td><td>Filter by Date Range Validasi 📅</td><td>Set date1 & date2 → filter</td><td>Filter berfungsi di halaman validasi 🔍</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-026</td><td>First Validation (VAL1) ✅</td><td>Validasi request "Fin"</td><td>ISVAL1=1, VAL1USER & VAL1DATE diset 📝</td><td>SU, ADM, LAB</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-027</td><td>Second Validation (VAL2) ✅✅</td><td>Validasi dengan user berbeda</td><td>ISVAL2=1, request duavalidated 🎉</td><td>SU, ADM, LAB</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-028</td><td>Gagal Validasi Sendiri 🚫</td><td>Coba validasi ulang sama user</td><td>Error "Cannot validate own request" 🙅</td><td>SU, ADM, LAB</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-029</td><td>Un-Validate Request ↩️</td><td>Un-validate dengan reason</td><td>ISVAL reset, PENDING diset 🔄</td><td>SU, ADM</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-030</td><td>Shortcut Keyboard ⌨️</td><td>Enter=Validate, N=Skip, Esc=Close</td><td>Shortcut berfungsi dengan benar ⚡</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-031</td><td>Progress Indicator 📊</td><td>Buka validation modal</td><td>Progress muncul (posisi / total) 📈</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-032</td><td>Collect Sample 🧪</td><td>Buka dialog sample → Collect</td><td>STATUS=1, COLLECTIONDATE & USERID diset ✅</td><td>SU, ADM, LAB</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-033</td><td>Un-Collect Sample ↩️</td><td>Buka dialog sample → Un-Collect</td><td>STATUS di-reset, audit log tercatat 📝</td><td>SU, ADM, LAB</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-034</td><td>Un-Receive Sample 🔙</td><td>Un-receive sample yang received</td><td>Status berubah, audit log tercatat 📋</td><td>SU, ADM, LAB</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-035</td><td>Print Label Individu 🏷️</td><td>Print label per tube</td><td>Label tercetak dengan ZPL format 🖨️</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-036</td><td>Print Collection Label 📋</td><td>Print collection label</td><td>Label collection tercetak 🏷️</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-037</td><td>Print All Labels 📄</td><td>Print semua tubes</td><td>Semua labels tercetak 🖨️</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-038</td><td>View Request Audit 🔍</td><td>Buka audit dialog request</td><td>Audit trail timeline ditampilkan 📜</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-039</td><td>Filter by Category 🎯</td><td>Filter: All, Validation, Receive, Sample</td><td>Filter berfungsi sesuai kategori 🔍</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-040</td><td>View Report Validated 📊</td><td>View report request duavalidated</td><td>Report ditampilkan lengkap 📋</td><td>SU, ADM, LAB, CS</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-041</td><td>Cannot View Not Validated 🚫</td><td>View report belum duavalidated</td><td>Error: "Validated request required" ⚠️</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-042</td><td>Print Report 🖨️</td><td>Print report request validated</td><td>Print dialog buka, audit log tercatat 📝</td><td>SU, ADM, LAB, CS</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-043</td><td>Generate PDF 📑</td><td>Generate PDF request validated</td><td>PDF berhasil di-generate ✅</td><td>SU, ADM, LAB, CS</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-044</td><td>Preview Report (No Audit) 👀</td><td>Preview report tanpa log audit</td><td>Report tampil, tidak ada audit log 📄</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-045</td><td>English Version Report 🇬🇧</td><td>Access <code>/report/{id}/eng</code></td><td>Report dalam Bahasa Inggris 🗣️</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-046</td><td>Edit Comment ✏️</td><td>Edit comment di dashboard</td><td>Comment berubah tersimpan 💾</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-047</td><td>Error Handling 404 🚫</td><td>Akses URL tidak valid</td><td>Custom notfound page tampil 📄</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-048</td><td>Error Handling Unauthorized 🔒</td><td>Coba akses role lain</td><td>Redirect ke <code>/unauthorized</code> 🚫</td><td>SU</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-049</td><td>Filter & Search 🔍</td><td>Uji berbagai filter dan search</td><td>Semua berfungsi seperti Superuser ⚡</td><td>ADMIN, PHLEB, CS</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-050</td><td>Sample Collection Buttons Enabled ✅</td><td>Buka dialog sample</td><td>Tombol Collect/Un-Coll/Un-Recv enabled 🔘</td><td>ADMIN</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-051</td><td>Edit Comment Enabled ✏️</td><td>Edit comment dashboard</td><td>Comment dapat diubah 💬</td><td>ADMIN</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-052</td><td>Print Labels 🏷️</td><td>Print individual/collection/all</td><td>Semua labels tercetak 🖨️</td><td>ADM, LAB, PHLEB</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-053</td><td>View Audit Trail 📜</td><td>Buka audit dialog</td><td>Timeline audit ditampilkan 🔍</td><td>ADM, LAB, PHLEB, CS</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-054</td><td>Update User 🔄</td><td>Edit user → ubah data</td><td>User berhasil di-update ✅</td><td>ADMIN</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-055</td><td>Cannot Access Role Lain 🚫</td><td>Coba <code>/superuser</code>, <code>/lab</code>, <code>/phlebo</code>, <code>/cs</code></td><td>Redirect ke unauthorized/error ⛔</td><td>ADM, LAB, PHLEB, CS</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-056</td><td>Filter Test Code Alphabetical 🔤</td><td>Login Lab → <code>/lab</code></td><td>Hanya request TESTS A-Z yang tampil 📋</td><td>LAB</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-057</td><td>View Request Details 👁️</td><td>Buka request</td><td>Detail request ditampilkan 📄</td><td>LAB</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-058</td><td>Filter & Search dalam Batas Filter 🔍</td><td>Uji filter & search</td><td>Sesuai batas test code A-Z ✅</td><td>LAB</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-059</td><td>Sample Buttons Enabled ✅</td><td>Buka dialog sample</td><td>Tombol Collect/Un-Coll/Un-Recv enabled 🔘</td><td>LAB</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-060</td><td>Edit Comment Disabled 🔒</td><td>Cek comment field</td><td>Comment field non-editable 🚫</td><td>LAB, PHLEB, CS</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-061</td><td>Un-Validate Disabled 🔒</td><td>Coba un-validate</td><td>Error/Unauthorized - cannot un-validate 🚫</td><td>LAB</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-062</td><td>Sample Collection Disabled 🔒</td><td>Buka dialog sample</td><td>Tombol Collect/Un-Coll/Un-Recv DISABLED 🚫</td><td>PHLEB, CS</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-063</td><td>Validation Page Denied 🔒</td><td>Coba <code>/phlebo/validate</code></td><td>Halaman tidak tersedia/unauthorized ⛔</td><td>PHLEB, CS</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-064</td><td>View Sample Details (Read-Only) 👀</td><td>Buka dialog sample</td><td>Sample details view-only 📄</td><td>PHLEB, CS</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-065</td><td>Cannot View Report 🔒</td><td>Coba view report</td><td>Report tidak tersedia/error 🚫</td><td>PHLEB</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-066</td><td>Cannot Print Report 🖨️❌</td><td>Coba print report</td><td>Print tidak tersedia 🚫</td><td>PHLEB</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-067</td><td>Cannot Generate PDF 📑❌</td><td>Coba generate PDF</td><td>PDF tidak tersedia 🚫</td><td>PHLEB</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-068</td><td>Print Labels (Limited) 🏷️</td><td>Print labels</td><td>Labels tercetak sesuai kapasitas 🖨️</td><td>CS</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-069</td><td>User Mgmt Role Restrictions 🔐</td><td>Lab/Phlebo/CS coba user management API</td><td>Error unauthorized 🚫</td><td>FITUR CROSS-ROLE 🔗</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-070</td><td>Cross-Role Validation 🤝</td><td>Lab A validasi VAL1, Superuser B validasi VAL2</td><td>Cross-role validation berhasil ✅</td><td>FITUR CROSS-ROLE 🔄</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-071</td><td>Un-Validate Role Restrictions 🔒</td><td>Lab/Phlebo/CS coba un-validate</td><td>Error unauthorized - only SU/Admin 🚫</td><td>FITUR CROSS-ROLE 🛡️</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-072</td><td>Un-Receive Role Restrictions 🔒</td><td>Lab/Phlebo/CS coba un-receive</td><td>Error unauthorized - only SU/Admin 🚫</td><td>FITUR CROSS-ROLE 🛡️</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-073</td><td>Report Access Restrictions 👁️</td><td>Coba view report semua role</td><td>SU/Admin/Lab/CS OK, Phlebo NOT ✅❌</td><td>FITUR CROSS-ROLE 🔍</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-074</td><td>Report Validated Requirement ✅✅</td><td>View report hanya VAR1 vs duavalidated</td><td>Hanya duavalidated dapat dilihat 🎯</td><td>FITUR CROSS-ROLE ✅</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-075</td><td>Comment Edit Restrictions 💬🔒</td><td>Lab/Phlebo/CS coba edit comment</td><td>Error - only SU/Admin editable 🚫</td><td>FITUR CROSS-ROLE ✏️</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-076</td><td>Validasi tidak Pengaruhi Data Lain 🛡️</td><td>Record data sebelum & sesudah validasi</td><td>Hanya status validasi berubah 📝</td><td>FITUR CROSS-ROLE 🔍</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-077</td><td>Un-Validate Mempertahankan Data 🔄</td><td>Record data sebelum & sesudah un-validate</td><td>Hanya status validasi berubah 📝</td><td>FITUR CROSS-ROLE 🔍</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-078</td><td>Audit Trail Logging 📜</td><td>Lakukan berbagai aktivitas</td><td>Semua tercatat di audit log ✅</td><td>FITUR CROSS-ROLE 🔍</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-079</td><td>Concurrent Validation ⚡</td><td>2 user buka validation dialog bersamaan</td><td>Validasi berhasil, tidak conflict ✅</td><td>FITUR CROSS-ROLE 🤝</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-080</td><td>Concurrent Sample Collection ⚡</td><td>2 user collect tube berbeda bersamaan</td><td>Semua berhasil tercatat ✅</td><td>FITUR CROSS-ROLE 🧪</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-081</td><td>Session Timeout ⏱️</td><td>Tunggu session timeout</td><td>Redirect ke login 🔄</td><td>FITUR CROSS-ROLE 🔐</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-082</td><td>Password Hashing Security 🔒</td><td>Buat user → cek database</td><td>Password dalam HASH bukan plain 🛡️</td><td>FITUR CROSS-ROLE 🔐</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
<tr><td>TC-083</td><td>Legacy Read-Only 👀</td><td>Cek koneksi & fungsi Firebird</td><td>Hanya READ dari Firebird, TIDAK WRITE 🚫✍️</td><td>FITUR CROSS-ROLE 🗄️</td><td><input type="checkbox"> ✅ <br> <input type="checkbox"> ❌</td><td><input type="text" value="___________"></td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@ -29,23 +29,23 @@
|
||||
1. Centang checkbox [ ] jika test case LULUS (PASS)
|
||||
2. Tulis "X" dalam kotak [X] jika test case GAGAL (FAIL)
|
||||
3. Tambahkan catatan @ kolom "Issue/Jawaban" untuk kasus FAIL/N/A/BLOCKED
|
||||
4. Beri nomor urut di "No." untuk tracking
|
||||
4. Gunakan ID test case untuk tracking
|
||||
|
||||
---
|
||||
|
||||
## 3. TEST CASE - AUTENTIKASI & SESI
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-AUTH-001** | Login Berhasil | Login dengan username & password valid | Redirect ke dashboard sesuai role | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-AUTH-002** | Login Gagal - Username Salah | Masukkan username tidak ada | Error "Invalid credentials" | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-AUTH-003** | Login Gagal - Password Salah | Password salah | Error invalid credentials | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-AUTH-004** | Login Gagal - Akun Terkunci | Login ke akun locked dari legacy | Error "Account locked" | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-AUTH-005** | Logout Berhasil | Klik menu Logout | Session terhapus, redirect ke login | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-AUTH-006** | Redirect ke Login Belum Login | Akses protected page tanpa login | Redirect otomatis ke halaman login | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-AUTH-007** | Ganti Password Berhasil | Change password baru | Password berhasil diubah dan di-hash | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-AUTH-008** | Ganti Password Gagal - Password Lama Salah | Masukkan password lama salah | Error "Invalid old password" | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-AUTH-009** | Role-Based Redirect Login | Login dengan berbagai role | Redirect ke dashboard sesuai role | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-AUTH-001** | Login Berhasil | Login dengan username & password valid | Redirect ke dashboard sesuai role | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-AUTH-002** | Login Gagal - Username Salah | Masukkan username tidak ada | Error "Invalid credentials" | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-AUTH-003** | Login Gagal - Password Salah | Password salah | Error invalid credentials | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-AUTH-004** | Login Gagal - Akun Terkunci | Login ke akun locked dari legacy | Error "Account locked" | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-AUTH-005** | Logout Berhasil | Klik menu Logout | Session terhapus, redirect ke login | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-AUTH-006** | Redirect ke Login Belum Login | Akses protected page tanpa login | Redirect otomatis ke halaman login | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-AUTH-007** | Ganti Password Berhasil | Change password baru | Password berhasil diubah dan di-hash | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-AUTH-008** | Ganti Password Gagal - Password Lama Salah | Masukkan password lama salah | Error "Invalid old password" | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-AUTH-009** | Role-Based Redirect Login | Login dengan berbagai role | Redirect ke dashboard sesuai role | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### Ringkasan Autentikasi: _ LULUS / _____ GAGAL
|
||||
|
||||
@ -55,77 +55,77 @@
|
||||
|
||||
### 4.1 DASHBOARD SUPERUSER
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-SU-001** | Tampilkan Semua Request | Login Superuser → `/superuser` | Tabel requests semua status ditampilkan | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-002** | Filter by Status | Pilih status di dashboard filter | Filter berfungsi sesuai status | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-003** | Filter by Date Range | Set date1 & date2 → filter | Filter tanggal berfungsi | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-004** | Search by Patient Name | Masukkan nama pasien | Tampilkan request dengan nama tsb | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-005** | Search by Lab Number | Masukkan Lab Number | Tampilkan request tsb | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-006** | Search by Register Number | Masukkan Register Number | Tampilkan request tsb | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-007** | Table Sorting | Klik header kolom | Kolom di-sort ASC/DESC | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-008** | Pagination | Klik halaman berbeda | Berpindah halaman dengan benar | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-SU-001** | Tampilkan Semua Request | Login Superuser → `/superuser` | Tabel requests semua status ditampilkan | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-002** | Filter by Status | Pilih status di dashboard filter | Filter berfungsi sesuai status | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-003** | Filter by Date Range | Set date1 & date2 → filter | Filter tanggal berfungsi | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-004** | Search by Patient Name | Masukkan nama pasien | Tampilkan request dengan nama tsb | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-005** | Search by Lab Number | Masukkan Lab Number | Tampilkan request tsb | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-006** | Search by Register Number | Masukkan Register Number | Tampilkan request tsb | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-007** | Table Sorting | Klik header kolom | Kolom di-sort ASC/DESC | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-008** | Pagination | Klik halaman berbeda | Berpindah halaman dengan benar | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### 4.2 USER MANAGEMENT SUPERUSER
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-SU-009** | Tampilkan List User | Access `/superuser/users` | Tabel users ditampilkan lengkap | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-010** | Buat User Baru | Add User → isi form | User berhasil dibuat dan password di-hash | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-011** | Validasi Password Min 3 Karakter | Buat user dengan password < 3 char | Error "Password min 3 karakter" | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-012** | Update User Role | Edit user → ubah role | Role berhasil diubah | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-013** | Update Password User | Edit user → ganti password | Password di-hash dengan benar | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-014** | Delete User | Delete user | User terhapus dari database | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-SU-009** | Tampilkan List User | Access `/superuser/users` | Tabel users ditampilkan lengkap | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-010** | Buat User Baru | Add User → isi form | User berhasil dibuat dan password di-hash | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-011** | Validasi Password Min 3 Karakter | Buat user dengan password < 3 char | Error "Password min 3 karakter" | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-012** | Update User Role | Edit user → ubah role | Role berhasil diubah | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-013** | Update Password User | Edit user → ganti password | Password di-hash dengan benar | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-014** | Delete User | Delete user | User terhapus dari database | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### 4.3 VALIDASI SUPERUSER
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-SU-015** | Tampilkan Request Final | Access `/superuser/validate` | Hanya request "Fin" yang tampil | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-016** | Filter by Date Range Validasi | Set date1 & date2 → filter | Filter berfungsi di halaman validasi | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-017** | First Validation (VAL1) | Validasi request "Fin" | ISVAL1=1, VAL1USER & VAL1DATE diset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-018** | Second Validation (VAL2) | Validasi dengan user berbeda | ISVAL2=1, request duavalidated | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-019** | Gagal Validasi Sendiri | Coba validasi ulang sama user | Error "Cannot validate own request" | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-020** | Un-Validate Request | Un-validate dengan reason | ISVAL reset, PENDING diset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-021** | Shortcut Keyboard | Enter=Validate, N=Skip, Esc=Close | Shortcut berfungsi dengan benar | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-022** | Progress Indicator | Buka validation modal | Progress muncul (posisi / total) | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-SU-015** | Tampilkan Request Final | Access `/superuser/validate` | Hanya request "Fin" yang tampil | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-016** | Filter by Date Range Validasi | Set date1 & date2 → filter | Filter berfungsi di halaman validasi | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-017** | First Validation (VAL1) | Validasi request "Fin" | ISVAL1=1, VAL1USER & VAL1DATE diset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-018** | Second Validation (VAL2) | Validasi dengan user berbeda | ISVAL2=1, request duavalidated | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-019** | Gagal Validasi Sendiri | Coba validasi ulang sama user | Error "Cannot validate own request" | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-020** | Un-Validate Request | Un-validate dengan reason | ISVAL reset, PENDING diset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-021** | Shortcut Keyboard | Enter=Validate, N=Skip, Esc=Close | Shortcut berfungsi dengan benar | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-022** | Progress Indicator | Buka validation modal | Progress muncul (posisi / total) | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### 4.4 SAMPLE MANAGEMENT SUPERUSER
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-SU-023** | Collect Sample | Buka dialog sample → Collect | STATUS=1, COLLECTIONDATE & USERID diset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-024** | Un-Collect Sample | Buka dialog sample → Un-Collect | STATUS di-reset, audit log tercatat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-025** | Un-Receive Sample | Un-receive sample yang received | Status berubah, audit log tercatat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-026** | Print Label Individu | Print label per tube | Label tercetak dengan ZPL format | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-027** | Print Collection Label | Print collection label | Label collection tercetak | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-028** | Print All Labels | Print semua tubes | Semua labels tercetak | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-SU-023** | Collect Sample | Buka dialog sample → Collect | STATUS=1, COLLECTIONDATE & USERID diset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-024** | Un-Collect Sample | Buka dialog sample → Un-Collect | STATUS di-reset, audit log tercatat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-025** | Un-Receive Sample | Un-receive sample yang received | Status berubah, audit log tercatat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-026** | Print Label Individu | Print label per tube | Label tercetak dengan ZPL format | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-027** | Print Collection Label | Print collection label | Label collection tercetak | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-028** | Print All Labels | Print semua tubes | Semua labels tercetak | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### 4.5 AUDIT TRAIL SUPERUSER
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-SU-029** | View Request Audit | Buka audit dialog request | Audit trail timeline ditampilkan | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-030** | Filter by Category | Filter: All, Validation, Receive, Sample | Filter berfungsi sesuai kategori | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-SU-029** | View Request Audit | Buka audit dialog request | Audit trail timeline ditampilkan | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-030** | Filter by Category | Filter: All, Validation, Receive, Sample | Filter berfungsi sesuai kategori | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### 4.6 REPORT SUPERUSER
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-SU-031** | View Report Validated | View report request duavalidated | Report ditampilkan lengkap | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-032** | Cannot View Not Validated | View report belum duavalidated | Error: "Validated request required" | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-033** | Print Report | Print report request validated | Print dialog buka, audit log tercatat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-034** | Generate PDF | Generate PDF request validated | PDF berhasil di-generate | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-035** | Preview Report (No Audit) | Preview report tanpa log audit | Report tampil, tidak ada audit log | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-036** | English Version Report | Access `/report/{id}/eng` | Report dalam Bahasa Inggris | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-SU-031** | View Report Validated | View report request duavalidated | Report ditampilkan lengkap | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-032** | Cannot View Not Validated | View report belum duavalidated | Error: "Validated request required" | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-033** | Print Report | Print report request validated | Print dialog buka, audit log tercatat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-034** | Generate PDF | Generate PDF request validated | PDF berhasil di-generate | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-035** | Preview Report (No Audit) | Preview report tanpa log audit | Report tampil, tidak ada audit log | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-036** | English Version Report | Access `/report/{id}/eng` | Report dalam Bahasa Inggris | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### 4.7 FITUR TAMBAHAN SUPERUSER
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-SU-037** | Edit Comment | Edit comment di dashboard | Comment berubah tersimpan | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-038** | Error Handling 404 | Akses URL tidak valid | Custom notfound page tampil | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-SU-039** | Error Handling Unauthorized | Coba akses role lain | Redirect ke `/unauthorized` | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-SU-037** | Edit Comment | Edit comment di dashboard | Comment berubah tersimpan | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-038** | Error Handling 404 | Akses URL tidak valid | Custom notfound page tampil | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-SU-039** | Error Handling Unauthorized | Coba akses role lain | Redirect ke `/unauthorized` | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### Ringkasan Superuser: _ LULUS / _____ GAGAL
|
||||
|
||||
@ -135,50 +135,50 @@
|
||||
|
||||
### 5.1 DASHBOARD ADMIN
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-ADM-001** | Tampilkan Semua Request | Login Admin → `/admin` | Tabel requests semua status | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-ADM-002** | Filter & Search | Uji berbagai filter dan search | Semua berfungsi seperti Superuser | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-ADM-003** | Sample Collection Buttons Enabled | Buka dialog sample | Tombol Collect/Un-Coll/Un-Recv enabled | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-ADM-004** | Edit Comment Enabled | Edit comment dashboard | Comment dapat diubah | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-ADM-001** | Tampilkan Semua Request | Login Admin → `/admin` | Tabel requests semua status | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-ADM-002** | Filter & Search | Uji berbagai filter dan search | Semua berfungsi seperti Superuser | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-ADM-003** | Sample Collection Buttons Enabled | Buka dialog sample | Tombol Collect/Un-Coll/Un-Recv enabled | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-ADM-004** | Edit Comment Enabled | Edit comment dashboard | Comment dapat diubah | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### 5.2 VALIDASI ADMIN
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-ADM-005** | Tampilkan Request Final | Access `/admin/validate` | Hanya request "Fin" tampil | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-ADM-006** | First Validation (VAL1) | Validasi request "Fin" | ISVAL1=1, VAL1USER & VAL1DATE diset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-ADM-007** | Second Validation (VAL2) | Validasi dengan user berbeda | ISVAL2=1, request duavalidated | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-ADM-008** | Gagal Validasi Sendiri | Coba validasi ulang sama user | Error "Cannot validate own request" | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-ADM-009** | Un-Validate Request | Un-validate request validated | ISVAL reset, PENDING diset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-ADM-005** | Tampilkan Request Final | Access `/admin/validate` | Hanya request "Fin" tampil | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-ADM-006** | First Validation (VAL1) | Validasi request "Fin" | ISVAL1=1, VAL1USER & VAL1DATE diset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-ADM-007** | Second Validation (VAL2) | Validasi dengan user berbeda | ISVAL2=1, request duavalidated | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-ADM-008** | Gagal Validasi Sendiri | Coba validasi ulang sama user | Error "Cannot validate own request" | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-ADM-009** | Un-Validate Request | Un-validate request validated | ISVAL reset, PENDING diset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### 5.3 SAMPLE & FITUR LAIN ADMIN
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-ADM-010** | Collect Sample | Collect tube | STATUS=1, COLLECTIONDATE & USERID diset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-ADM-011** | Un-Collect Sample | Un-collect tube | STATUS di-reset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-ADM-012** | Un-Receive Sample | Un-receive sample | Status berubah, audit log tercatat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-ADM-013** | Print Labels | Print individual/collection/all | Semua labels tercetak | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-ADM-014** | View Audit Trail | Buka audit dialog | Timeline audit ditampilkan | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-ADM-015** | Tampilkan List User | Access `/admin/users` | Tabel users ditampilkan | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-ADM-016** | Buat User Baru | Add user lengkap | User berhasil dibuat dan di-hash | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-ADM-017** | Update User | Edit user → ubah data | User berhasil di-update | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-ADM-018** | Delete User | Delete user | User terhapus | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-ADM-010** | Collect Sample | Collect tube | STATUS=1, COLLECTIONDATE & USERID diset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-ADM-011** | Un-Collect Sample | Un-collect tube | STATUS di-reset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-ADM-012** | Un-Receive Sample | Un-receive sample | Status berubah, audit log tercatat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-ADM-013** | Print Labels | Print individual/collection/all | Semua labels tercetak | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-ADM-014** | View Audit Trail | Buka audit dialog | Timeline audit ditampilkan | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-ADM-015** | Tampilkan List User | Access `/admin/users` | Tabel users ditampilkan | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-ADM-016** | Buat User Baru | Add user lengkap | User berhasil dibuat dan di-hash | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-ADM-017** | Update User | Edit user → ubah data | User berhasil di-update | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-ADM-018** | Delete User | Delete user | User terhapus | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### 5.4 REPORT ADMIN
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-ADM-019** | View Report Validated | View report request validated | Report ditampilkan lengkap | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-ADM-020** | Print Report | Print report | Print dialog buka, audit log tercatat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-ADM-021** | Generate PDF | Generate PDF report | PDF berhasil di-generate | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-ADM-019** | View Report Validated | View report request validated | Report ditampilkan lengkap | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-ADM-020** | Print Report | Print report | Print dialog buka, audit log tercatat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-ADM-021** | Generate PDF | Generate PDF report | PDF berhasil di-generate | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### 5.5 ROLE RESTRICTIONS ADMIN
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-ADM-PageNav** | Cannot Access Role Lain | Coba `/superuser`, `/lab`, `/phlebo`, `/cs` | Redirect ke unauthorized/error | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-ADM-PageNav** | Cannot Access Role Lain | Coba `/superuser`, `/lab`, `/phlebo`, `/cs` | Redirect ke unauthorized/error | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### Ringkasan Admin: _ LULUS / _____ GAGAL
|
||||
|
||||
@ -188,47 +188,47 @@
|
||||
|
||||
### 6.1 DASHBOARD LAB
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-LAB-001** | Filter Test Code Alphabetical | Login Lab → `/lab` | Hanya request TESTS A-Z yang tampil | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-LAB-002** | View Request Details | Buka request | Detail request ditampilkan | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-LAB-003** | Filter & Search dalam Batas Filter | Uji filter & search | Sesuai batas test code A-Z | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-LAB-004** | Sample Buttons Enabled | Buka dialog sample | Tombol Collect/Un-Coll/Un-Recv enabled | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-LAB-005** | Edit Comment Disabled | Cek comment field | Comment field non-editable | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-LAB-001** | Filter Test Code Alphabetical | Login Lab → `/lab` | Hanya request TESTS A-Z yang tampil | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-LAB-002** | View Request Details | Buka request | Detail request ditampilkan | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-LAB-003** | Filter & Search dalam Batas Filter | Uji filter & search | Sesuai batas test code A-Z | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-LAB-004** | Sample Buttons Enabled | Buka dialog sample | Tombol Collect/Un-Coll/Un-Recv enabled | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-LAB-005** | Edit Comment Disabled | Cek comment field | Comment field non-editable | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### 6.2 VALIDASI LAB
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-LAB-006** | Tampilkan Request Final | Access `/lab/validate` | Hanya "Fin" dengan TESTS A-Z tampil | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-LAB-007** | First Validation (VAL1) | Validasi request "Fin" | ISVAL1=1, VAL1USER & VAL1DATE diset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-LAB-008** | Second Validation (VAL2) | Validasi user berbeda | ISVAL2=1, request duavalidated | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-LAB-009** | Gagal Validasi Sendiri | Coba validasi sendiri | Error "Cannot validate own request" | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-LAB-010** | Un-Validate Disabled | Coba un-validate | Error/Unauthorized - cannot un-validate | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-LAB-006** | Tampilkan Request Final | Access `/lab/validate` | Hanya "Fin" dengan TESTS A-Z tampil | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-LAB-007** | First Validation (VAL1) | Validasi request "Fin" | ISVAL1=1, VAL1USER & VAL1DATE diset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-LAB-008** | Second Validation (VAL2) | Validasi user berbeda | ISVAL2=1, request duavalidated | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-LAB-009** | Gagal Validasi Sendiri | Coba validasi sendiri | Error "Cannot validate own request" | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-LAB-010** | Un-Validate Disabled | Coba un-validate | Error/Unauthorized - cannot un-validate | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### 6.3 SAMPLE & FITUR LAIN LAB
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-LAB-011** | Collect Sample | Collect tube | STATUS=1, COLLECTIONDATE & USERID diset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-LAB-012** | Un-Collect Sample | Un-collect tube | STATUS di-reset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-LAB-013** | Un-Receive Sample | Un-receive sample | Status berubah, audit log tercatat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-LAB-014** | Print Labels | Print semua jenis label | Semua labels tercetak | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-LAB-015** | View Audit Trail | Buka audit dialog | Timeline audit ditampilkan | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-LAB-011** | Collect Sample | Collect tube | STATUS=1, COLLECTIONDATE & USERID diset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-LAB-012** | Un-Collect Sample | Un-collect tube | STATUS di-reset | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-LAB-013** | Un-Receive Sample | Un-receive sample | Status berubah, audit log tercatat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-LAB-014** | Print Labels | Print semua jenis label | Semua labels tercetak | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-LAB-015** | View Audit Trail | Buka audit dialog | Timeline audit ditampilkan | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### 6.4 REPORT LAB
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-LAB-016** | View Report Validated | View report request validated | Report ditampilkan lengkap | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-LAB-017** | Print Report | Print report validated | Print dialog buka, audit log tercatat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-LAB-018** | Generate PDF | Generate PDF | PDF berhasil di-generate | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-LAB-016** | View Report Validated | View report request validated | Report ditampilkan lengkap | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-LAB-017** | Print Report | Print report validated | Print dialog buka, audit log tercatat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-LAB-018** | Generate PDF | Generate PDF | PDF berhasil di-generate | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### 6.5 ROLE RESTRICTIONS LAB
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-LAB-PageNav** | Cannot Access Role Lain | Coba `/superuser`, `/admin`, `/phlebo`, `/cs` | Redirect ke unauthorized/error | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-LAB-PageNav** | Cannot Access Role Lain | Coba `/superuser`, `/admin`, `/phlebo`, `/cs` | Redirect ke unauthorized/error | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### Ringkasan Lab: _ LULUS / _____ GAGAL
|
||||
|
||||
@ -236,20 +236,20 @@
|
||||
|
||||
## 7. TEST CASE - PHLEBOTOMIST (ROLE 3)
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-PHB-001** | Tampilkan Semua Request | Login Phlebo → `/phlebo` | Tabel requests semua status | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-PHB-002** | Filter & Search | Uji filter & search | Semua berfungsi | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-PHB-003** | Sample Collection Disabled | Buka dialog sample | Tombol Collect/Un-Coll/Un-Recv DISABLED | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-PHB-004** | Edit Comment Disabled | Cek comment field | Comment field non-editable | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-PHB-005** | Validation Page Denied | Coba `/phlebo/validate` | Halaman tidak tersedia/unauthorized | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-PHB-006** | View Sample Details (Read-Only) | Buka dialog sample | Sample details view-only | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-PHB-007** | Print Labels | Print individual/collection/all | Labels tercetak | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-PHB-008** | View Audit Trail | Buka audit dialog | Audit trail ditampilkan (read-only) | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-PHB-009** | Cannot View Report | Coba view report | Report tidak tersedia/error | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-PHB-010** | Cannot Print Report | Coba print report | Print tidak tersedia | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-PHB-011** | Cannot Generate PDF | Coba generate PDF | PDF tidak tersedia | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-PHB-PageNav** | Cannot Access Role Lain | Coba `/superuser`, `/admin`, `/lab`, `/cs` | Redirect ke unauthorized/error | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-PHB-001** | Tampilkan Semua Request | Login Phlebo → `/phlebo` | Tabel requests semua status | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-PHB-002** | Filter & Search | Uji filter & search | Semua berfungsi | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-PHB-003** | Sample Collection Disabled | Buka dialog sample | Tombol Collect/Un-Coll/Un-Recv DISABLED | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-PHB-004** | Edit Comment Disabled | Cek comment field | Comment field non-editable | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-PHB-005** | Validation Page Denied | Coba `/phlebo/validate` | Halaman tidak tersedia/unauthorized | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-PHB-006** | View Sample Details (Read-Only) | Buka dialog sample | Sample details view-only | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-PHB-007** | Print Labels | Print individual/collection/all | Labels tercetak | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-PHB-008** | View Audit Trail | Buka audit dialog | Audit trail ditampilkan (read-only) | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-PHB-009** | Cannot View Report | Coba view report | Report tidak tersedia/error | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-PHB-010** | Cannot Print Report | Coba print report | Print tidak tersedia | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-PHB-011** | Cannot Generate PDF | Coba generate PDF | PDF tidak tersedia | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-PHB-PageNav** | Cannot Access Role Lain | Coba `/superuser`, `/admin`, `/lab`, `/cs` | Redirect ke unauthorized/error | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### Ringkasan Phlebotomist: _ LULUS / _____ GAGAL
|
||||
|
||||
@ -257,20 +257,20 @@
|
||||
|
||||
## 8. TEST CASE - CUSTOMER SERVICE (ROLE 4)
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-CS-001** | Tampilkan Semua Request | Login CS → `/cs` | Tabel requests semua status | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-CS-002** | Filter & Search | Uji filter & search | Semua berfungsi | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-CS-003** | Sample Collection Disabled | Buka dialog sample | Tombol Collect/Un-Coll/Un-Recv DISABLED | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-CS-004** | Edit Comment Disabled | Cek comment field | Comment field non-editable | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-CS-005** | Validation Page Denied | Coba `/cs/validate` | Halaman tidak tersailable | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-CS-006** | View Sample Details (Read-Only) | Buka dialog sample | Sample details view-only | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-CS-007** | Print Labels (Limited) | Print labels | Labels tercetak sesuai kapasitas | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-CS-008** | View Audit Trail | Buka audit dialog | Audit trail ditampilkan | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-CS-009** | View Report Validated | View report request validated | Report ditampilkan lengkap | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-CS-010** | Print Report | Print report validated | Print dialog buka, audit log tercatat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-CS-011** | Generate PDF | Generate PDF | PDF berhasil di-generate | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-CS-PageNav** | Cannot Access Role Lain | Coba `/superuser`, `/admin`, `/lab`, `/phlebo` | Redirect ke unauthorized/error | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-CS-001** | Tampilkan Semua Request | Login CS → `/cs` | Tabel requests semua status | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-CS-002** | Filter & Search | Uji filter & search | Semua berfungsi | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-CS-003** | Sample Collection Disabled | Buka dialog sample | Tombol Collect/Un-Coll/Un-Recv DISABLED | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-CS-004** | Edit Comment Disabled | Cek comment field | Comment field non-editable | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-CS-005** | Validation Page Denied | Coba `/cs/validate` | Halaman tidak tersailable | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-CS-006** | View Sample Details (Read-Only) | Buka dialog sample | Sample details view-only | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-CS-007** | Print Labels (Limited) | Print labels | Labels tercetak sesuai kapasitas | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-CS-008** | View Audit Trail | Buka audit dialog | Audit trail ditampilkan | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-CS-009** | View Report Validated | View report request validated | Report ditampilkan lengkap | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-CS-010** | Print Report | Print report validated | Print dialog buka, audit log tercatat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-CS-011** | Generate PDF | Generate PDF | PDF berhasil di-generate | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-CS-PageNav** | Cannot Access Role Lain | Coba `/superuser`, `/admin`, `/lab`, `/phlebo` | Redirect ke unauthorized/error | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### Ringkasan Customer Service: _ LULUS / _____ GAGAL
|
||||
|
||||
@ -278,23 +278,23 @@
|
||||
|
||||
## 9. TEST CASE - FITUR CROSS-ROLE
|
||||
|
||||
| No. | ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|-----|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| | **TC-X-001** | User Mgmt Role Restrictions | Lab/Phlebo/CS coba user management API | Error unauthorized | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-X-002** | Cross-Role Validation | Lab A validasi VAL1, Superuser B validasi VAL2 | Cross-role validation berhasil | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-X-003** | Un-Validate Role Restrictions | Lab/Phlebo/CS coba un-validate | Error unauthorized - only SU/Admin | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-X-004** | Un-Receive Role Restrictions | Lab/Phlebo/CS coba un-receive | Error unauthorized - only SU/Admin | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-X-005** | Report Access Restrictions | Coba view report semua role | SU/Admin/Lab/CS OK, Phlebo NOT | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-X-006** | Report Validated Requirement | View report hanya VAR1 vs duavalidated | Hanya duavalidated dapat dilihat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-X-007** | Comment Edit Restrictions | Lab/Phlebo/CS coba edit comment | Error - only SU/Admin editable | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-X-008** | Validasi tidak Pengaruhi Data Lain | Record data sebelum & sesudah validasi | Hanya status validasi berubah | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-X-009** | Un-Validate Mempertahankan Data | Record data sebelum & sesudah un-validate | Hanya status validasi berubah | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-X-010** | Audit Trail Logging | Lakukan berbagai aktivitas | Semua tercatat di audit log | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-X-011** | Concurrent Validation | 2 user buka validation dialog bersamaan | Validasi berhasil, tidak conflict | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-X-012** | Concurrent Sample Collection | 2 user collect tube berbeda bersamaan | Semua berhasil tercatat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-X-013** | Session Timeout | Tunggu session timeout | Redirect ke login | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-X-014** | Password Hashing Security | Buat user → cek database | Password dalam HASH bukan plain | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| | **TC-X-015** | Legacy Read-Only | Cek koneksi & fungsi Firebird | Hanya READ dari Firebird, TIDAK WRITE | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| ID | Judul Test Case | Langkah Utama | Expected Result | Hasil | Issue/Jawaban |
|
||||
|----|----------------|---------------|-----------------|-------|---------------|
|
||||
| **TC-X-001** | User Mgmt Role Restrictions | Lab/Phlebo/CS coba user management API | Error unauthorized | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-X-002** | Cross-Role Validation | Lab A validasi VAL1, Superuser B validasi VAL2 | Cross-role validation berhasil | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-X-003** | Un-Validate Role Restrictions | Lab/Phlebo/CS coba un-validate | Error unauthorized - only SU/Admin | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-X-004** | Un-Receive Role Restrictions | Lab/Phlebo/CS coba un-receive | Error unauthorized - only SU/Admin | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-X-005** | Report Access Restrictions | Coba view report semua role | SU/Admin/Lab/CS OK, Phlebo NOT | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-X-006** | Report Validated Requirement | View report hanya VAR1 vs duavalidated | Hanya duavalidated dapat dilihat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-X-007** | Comment Edit Restrictions | Lab/Phlebo/CS coba edit comment | Error - only SU/Admin editable | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-X-008** | Validasi tidak Pengaruhi Data Lain | Record data sebelum & sesudah validasi | Hanya status validasi berubah | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-X-009** | Un-Validate Mempertahankan Data | Record data sebelum & sesudah un-validate | Hanya status validasi berubah | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-X-010** | Audit Trail Logging | Lakukan berbagai aktivitas | Semua tercatat di audit log | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-X-011** | Concurrent Validation | 2 user buka validation dialog bersamaan | Validasi berhasil, tidak conflict | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-X-012** | Concurrent Sample Collection | 2 user collect tube berbeda bersamaan | Semua berhasil tercatat | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-X-013** | Session Timeout | Tunggu session timeout | Redirect ke login | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-X-014** | Password Hashing Security | Buat user → cek database | Password dalam HASH bukan plain | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
| **TC-X-015** | Legacy Read-Only | Cek koneksi & fungsi Firebird | Hanya READ dari Firebird, TIDAK WRITE | [ ] PASS <br> [ ] FAIL | ___________ |
|
||||
|
||||
### Ringkasan Cross-Role: _ LULUS / _____ GAGAL
|
||||
|
||||
@ -304,8 +304,8 @@
|
||||
|
||||
### 10.1 Functional Criteria
|
||||
|
||||
| No. | Kriteria Functional | Hasil |
|
||||
|-----|---------------------|-------|
|
||||
| Kriteria Functional | Hasil |
|
||||
|---------------------|-------|
|
||||
| FC-01 | Autentikasi benar untuk semua role (0-4) | [ ] PASS <br> [ ] FAIL |
|
||||
| FC-02 | Role-based access control (RBAC) berfungsi | [ ] PASS <br> [ ] FAIL |
|
||||
| FC-03 | Dashboard menampilkan request sesuai filter & role | [ ] PASS <br> [ ] FAIL |
|
||||
@ -330,8 +330,8 @@
|
||||
|
||||
### 10.2 Security Criteria
|
||||
|
||||
| No. | Kriteria Security | Hasil |
|
||||
|-----|-------------------|-------|
|
||||
| Kriteria Security | Hasil |
|
||||
|-------------------|-------|
|
||||
| SC-01 | Password disimpan dalam bentuk HASH (bukan plain) | [ ] PASS <br> [ ] FAIL |
|
||||
| SC-02 | Session timeout bekerja dengan benar | [ ] PASS <br> [ ] FAIL |
|
||||
| SC-03 | Tidak ada SQL injection vulnerability | [ ] PASS <br> [ ] FAIL |
|
||||
@ -347,8 +347,8 @@
|
||||
|
||||
### 10.3 Performance Criteria
|
||||
|
||||
| No. | Kriteria Performance | Target | Hasil Aktual | Pass/Fail |
|
||||
|-----|----------------------|--------|--------------|-----------|
|
||||
| Kriteria Performance | Target | Hasil Aktual | Pass/Fail |
|
||||
|----------------------|--------|--------------|-----------|
|
||||
| PC-01 | Dashboard load time | < 3 detik | __________ detik | [ ] PASS <br> [ ] FAIL |
|
||||
| PC-02 | Validation page load time | < 3 detik | __________ detik | [ ] PASS <br> [ ] FAIL |
|
||||
| PC-03 | Report generation time | < 5 detik | __________ detik | [ ] PASS <br> [ ] FAIL |
|
||||
@ -362,8 +362,8 @@
|
||||
|
||||
### 10.4 Usability Criteria
|
||||
|
||||
| No. | Kriteria Usability | Hasil |
|
||||
|-----|---------------------|-------|
|
||||
| Kriteria Usability | Hasil |
|
||||
|---------------------|-------|
|
||||
| UC-01 | UI user-friendly dan mudah digunakan | [ ] PASS <br> [ ] FAIL |
|
||||
| UC-02 | Shortcut keyboard (Enter, N, Esc) berfungsi | [ ] PASS <br> [ ] FAIL |
|
||||
| UC-03 | Error messages jelas dan actionable | [ ] PASS <br> [ ] FAIL |
|
||||
@ -377,8 +377,8 @@
|
||||
|
||||
### 10.5 Data Integrity Criteria
|
||||
|
||||
| No. | Kriteria Data Integrity | Hasil |
|
||||
|-----|-------------------------|-------|
|
||||
| Kriteria Data Integrity | Hasil |
|
||||
|-------------------------|-------|
|
||||
| DC-01 | Validasi tidak menghapus/mengubah data lain | [ ] PASS <br> [ ] FAIL |
|
||||
| DC-02 | Un-validate hanya menghapus status validasi | [ ] PASS <br> [ ] FAIL |
|
||||
| DC-03 | Sample collection tidak modifikasi data lain | [ ] PASS <br> [ ] FAIL |
|
||||
@ -431,13 +431,13 @@ Untuk sistem dinyatakan **APPROVED** untuk production:
|
||||
|
||||
### 11.3 Issue Critical yang Harus Diperbaiki
|
||||
|
||||
| No. | Issue | Severity | Impact | Assigned To | Deadline |
|
||||
|-----|-------|----------|--------|-------------|----------|
|
||||
| 1 | ________________________________ | High | ___________ | ___________ | _______ |
|
||||
| 2 | ________________________________ | Medium | ___________ | ___________ | _______ |
|
||||
| 3 | ________________________________ | Low | ___________ | ___________ | _______ |
|
||||
| 4 | ________________________________ | | ___________ | ___________ | _______ |
|
||||
| 5 | ________________________________ | | ___________ | ___________ | _______ |
|
||||
| Issue | Severity | Impact | Assigned To | Deadline |
|
||||
|-------|----------|--------|-------------|----------|
|
||||
| ________________________________ | High | ___________ | ___________ | _______ |
|
||||
| ________________________________ | Medium | ___________ | ___________ | _______ |
|
||||
| ________________________________ | Low | ___________ | ___________ | _______ |
|
||||
| ________________________________ | | ___________ | ___________ | _______ |
|
||||
| ________________________________ | | ___________ | ___________ | _______ |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@ -112,9 +112,10 @@ class ReportController extends BaseController
|
||||
|
||||
$html = view('report/template', $data);
|
||||
$filename = $accessnumber . '.pdf';
|
||||
$collectionDate = $data['collectionDate'] ?? '';
|
||||
|
||||
try {
|
||||
$jobId = $this->postToSpooler($html, $filename);
|
||||
$jobId = $this->postToSpooler($html, $filename, $collectionDate);
|
||||
return $this->response->setJSON([
|
||||
'success' => true,
|
||||
'jobId' => $jobId,
|
||||
@ -153,15 +154,22 @@ class ReportController extends BaseController
|
||||
return $this->response->setJSON($response);
|
||||
}
|
||||
|
||||
private function postToSpooler($html, $filename)
|
||||
private function postToSpooler($html, $filename, $collectionDate = '')
|
||||
{
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, 'http://glenlis:3000/api/pdf/generate');
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
|
||||
|
||||
$payload = [
|
||||
'html' => $html,
|
||||
'filename' => $filename
|
||||
]));
|
||||
];
|
||||
|
||||
if ($collectionDate) {
|
||||
$payload['collectionDate'] = $collectionDate;
|
||||
}
|
||||
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, [
|
||||
'Content-Type: application/json'
|
||||
|
||||
@ -32,6 +32,7 @@ class ReportHelper
|
||||
|
||||
$valBy = $this->getValBy($accessnumber);
|
||||
$valData = $this->getValData($accessnumber);
|
||||
$collectionDate = $this->getCollectionDateRaw($accessnumber);
|
||||
return [
|
||||
'hostnumber' => $hostnumber,
|
||||
'result' => $result,
|
||||
@ -45,7 +46,8 @@ class ReportHelper
|
||||
'valBy' => $valBy,
|
||||
'val1User' => $valData['VAL1USER'] ?? '',
|
||||
'val2User' => $valData['VAL2USER'] ?? '',
|
||||
'date' => date('d-m-Y H:i')
|
||||
'date' => date('d-m-Y H:i'),
|
||||
'collectionDate' => $collectionDate
|
||||
];
|
||||
}
|
||||
|
||||
@ -783,4 +785,13 @@ class ReportHelper
|
||||
$row = $this->db->query($sql, [$accessnumber])->getRowArray();
|
||||
return $row ?? [];
|
||||
}
|
||||
|
||||
private function getCollectionDateRaw(string $accessnumber): string {
|
||||
$sql = "SELECT FORMAT(SR.COLLECTIONDATE,'yyyy-MM-dd') AS COLLDATE
|
||||
FROM REQUESTS R
|
||||
LEFT JOIN SP_REQUESTS SR ON SR.SP_ACCESSNUMBER=R.ACCESSNUMBER
|
||||
WHERE R.ACCESSNUMBER=?";
|
||||
$row = $this->db->query($sql, [$accessnumber])->getRowArray();
|
||||
return $row['COLLDATE'] ?? '';
|
||||
}
|
||||
}
|
||||
|
||||
@ -183,9 +183,10 @@
|
||||
</div>
|
||||
</th>
|
||||
<th style='width:20%;'>Tests</th>
|
||||
<th style='width:4%;'>ResTo</th>
|
||||
<th style='width:5%;'>Val</th>
|
||||
<th style='width:5%;'></th>
|
||||
<th style='width:4%;'>ResTo</th>
|
||||
<th style='width:5%;'>Val</th>
|
||||
<th style='width:5%;'>Result</th>
|
||||
<th style='width:5%;'></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -198,14 +199,65 @@
|
||||
<td x-text="req.REFF" :class="statusRowBg[req.STATS]"></td>
|
||||
<td x-text="req.DOC" :class="statusRowBg[req.STATS]"></td>
|
||||
<td x-text="req.TESTS" :class="statusRowBg[req.STATS]"></td>
|
||||
<td x-text="req.ODR_CRESULT_TO"></td>
|
||||
<td>
|
||||
<div class='text-xs'>
|
||||
<p>1: <span x-text="req.VAL1USER"></span></p>
|
||||
<p>2: <span x-text="req.VAL2USER"></span></p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<td x-text="req.ODR_CRESULT_TO"></td>
|
||||
<td>
|
||||
<div class='text-xs'>
|
||||
<p>1: <span x-text="req.VAL1USER"></span></p>
|
||||
<p>2: <span x-text="req.VAL2USER"></span></p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="dropdown dropdown-end dropdown-hover">
|
||||
<div tabindex="0" role="button"
|
||||
class="btn btn-xs w-full"
|
||||
:class="req.VAL1USER && req.VAL2USER ? 'btn-success text-white' : 'btn-warning'">
|
||||
<i class="fa fa-clipboard-check mr-1"></i>
|
||||
<span class="text-xs" x-text="req.VAL1USER && req.VAL2USER ? 'Ready' : 'Pending'"></span>
|
||||
</div>
|
||||
<ul tabindex="0"
|
||||
class="dropdown-content menu bg-base-100 rounded-box z-[1] w-40 p-2 shadow-lg border border-base-300">
|
||||
<template x-if="req.VAL1USER && req.VAL2USER">
|
||||
<div>
|
||||
<li>
|
||||
<a :href="'<?=base_url('report/');?>' + req.SP_ACCESSNUMBER" target="_blank">
|
||||
<i class="fa fa-print mr-2"></i> Print
|
||||
</a>
|
||||
</li>
|
||||
<template x-if="<?= in_array(session()->get('userroleid'), [1, 2]) ? 'true' : 'false' ?>">
|
||||
<li>
|
||||
<a @click="openGenerateDialog(req.SP_ACCESSNUMBER)">
|
||||
<i class="fa fa-file-pdf mr-2"></i> Generate
|
||||
</a>
|
||||
</li>
|
||||
</template>
|
||||
<template x-if="<?= !in_array(session()->get('userroleid'), [1, 2]) ? 'true' : 'false' ?>">
|
||||
<li>
|
||||
<a :href="'<?=base_url('report/');?>' + req.SP_ACCESSNUMBER + '/pdf'" target="_blank">
|
||||
<i class="fa fa-file-pdf mr-2"></i> PDF
|
||||
</a>
|
||||
</li>
|
||||
</template>
|
||||
<li>
|
||||
<a @click="retryPdf(req.SP_ACCESSNUMBER)">
|
||||
<i class="fa fa-sync-alt mr-2" :class="{ 'fa-spin': retryingPdf[req.SP_ACCESSNUMBER] }"></i>
|
||||
<span x-text="retryingPdf[req.SP_ACCESSNUMBER] ? 'Retrying...' : 'Retry PDF'"></span>
|
||||
</a>
|
||||
</li>
|
||||
</div>
|
||||
</template>
|
||||
<template x-if="!req.VAL1USER || !req.VAL2USER">
|
||||
<div>
|
||||
<li class="disabled opacity-50 cursor-not-allowed">
|
||||
<span class="flex items-center">
|
||||
<i class="fa fa-clock mr-2"></i> Result Pending
|
||||
</span>
|
||||
</li>
|
||||
</div>
|
||||
</template>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="dropdown dropdown-end dropdown-hover">
|
||||
<div tabindex="0" role="button" class="btn btn-xs btn-primary w-full">
|
||||
<i class="fa fa-cog mr-1"></i> Actions
|
||||
@ -219,40 +271,6 @@
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
</li>
|
||||
<template x-if="req.VAL1USER && req.VAL2USER">
|
||||
<div>
|
||||
<li>
|
||||
<a :href="'<?=base_url('report/');?>' + req.SP_ACCESSNUMBER" target="_blank">
|
||||
<i class="fa fa-print mr-2"></i> Print
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<!-- Admin/Lab: Generate Dialog -->
|
||||
<template x-if="<?= in_array(session()->get('userroleid'), [1, 2]) ? 'true' : 'false' ?>">
|
||||
<li>
|
||||
<a @click="openGenerateDialog(req.SP_ACCESSNUMBER)">
|
||||
<i class="fa fa-file-pdf mr-2"></i> Generate
|
||||
</a>
|
||||
</li>
|
||||
</template>
|
||||
|
||||
<!-- Read-only users: Direct PDF link -->
|
||||
<template x-if="<?= !in_array(session()->get('userroleid'), [1, 2]) ? 'true' : 'false' ?>">
|
||||
<li>
|
||||
<a :href="'<?=base_url('report/');?>' + req.SP_ACCESSNUMBER + '/pdf'" target="_blank">
|
||||
<i class="fa fa-file-pdf mr-2"></i> PDF
|
||||
</a>
|
||||
</li>
|
||||
</template>
|
||||
|
||||
<li>
|
||||
<a @click="retryPdf(req.SP_ACCESSNUMBER)">
|
||||
<i class="fa fa-sync-alt mr-2" :class="{ 'fa-spin': retryingPdf[req.SP_ACCESSNUMBER] }"></i>
|
||||
<span x-text="retryingPdf[req.SP_ACCESSNUMBER] ? 'Retrying...' : 'Retry PDF'"></span>
|
||||
</a>
|
||||
</li>
|
||||
</div>
|
||||
</template>
|
||||
<li>
|
||||
<a @click="openSampleDialog(req.SP_ACCESSNUMBER)">
|
||||
<i class="fa fa-vial mr-2 text-success"></i> View Samples
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user