Luồng nghiệp vụ end-to-end với 5 màn hình: register → pending → admin approve/reject → login → dashboard. Test state transition, auth guard, validation cross-screen.
Đây là bài system-level đầu tiên — không còn 1 form đơn lẻ, mà là một luồng nghiệp vụ end-to-end với nhiều màn hình. Học viên cần test toàn bộ luồng, bao gồm cả chuyển trạng thái, bypass URL, ràng buộc cross-screen.
┌──────────┐ submit ┌──────────┐ admin ┌──────────┐
│ register │ ────────→ │ pending │ approve │ login │
│ (Screen 1)│ │(Screen 2)│ ────────→ │(Screen 4)│
└──────────┘ └────┬─────┘ └────┬─────┘
│ │ login OK
"Tôi là admin" ↓
↓ ┌──────────┐
┌──────────┐ │dashboard │
│ admin │ │(Screen 5)│
│(Screen 3)│ └──────────┘
└──────────┘
| Field | Yêu cầu |
|---|---|
Bắt buộc, đúng format x@y.z, tối đa 150 ký tự, KHÔNG có khoảng trắng đầu/cuối (phải trim()). | |
| Họ và tên | Bắt buộc, 2–150 ký tự. |
| Số điện thoại | Bắt buộc, đúng 10 chữ số bắt đầu bằng 0. VD: 0901234567. |
| Mật khẩu | Bắt buộc, tối thiểu 6 ký tự, tối đa 72. |
| Nhập lại mật khẩu | Phải khớp với mật khẩu. |
| Email trùng | Nếu email đã tồn tại trong hệ thống → báo lỗi Email đã tồn tại. |
Submit thành công → hiện message Đăng ký thành công! Vui lòng chờ admin duyệt. rồi chuyển sang Screen 2 (pending). Account được tạo với status = pending.
Tài khoản <email> đang chờ admin duyệt.pending: email, họ tên, số điện thoại, ngày tạo.active. Sau approve, account biến mất khỏi danh sách pending.rejected. Account vẫn lưu trong hệ thống nhưng không cho login. Sau reject, account biến mất khỏi danh sách pending.| Tình huống | Xử lý mong đợi |
|---|---|
| Email rỗng / password rỗng | Báo lỗi Vui lòng nhập đầy đủ email và mật khẩu. |
| Email không tồn tại | Báo lỗi Email hoặc mật khẩu không đúng. |
| Sai mật khẩu | Báo lỗi Email hoặc mật khẩu không đúng. |
Account pending | Báo lỗi Tài khoản chưa được duyệt. Vui lòng chờ admin. — KHÔNG cho login. |
Account rejected | Báo lỗi Tài khoản đã bị từ chối. Liên hệ admin. |
Account active + đúng password | Login thành công → chuyển sang Screen 5 (dashboard). |
Welcome, <Họ tên>!?screen=dashboard, phải bị redirect về Screen 4." user@gmail.com " → kiểm tra hệ thống có trim không.?screen=dashboard trên thanh URL → phải bị redirect.pending → active, pending → rejected. Mỗi state có hành vi khác.| STT | Mô tả | Bước tái hiện | Thực tế | Mong đợi | Mức độ |
|---|---|---|---|---|---|
| 1 | (học viên điền) | ||||
Form thực hành chỉ dành cho học viên đã đăng nhập.
Tab này chứa danh sách các lỗi đã cài cắm trong form. Vui lòng nhập mã giảng viên để mở khóa. Mã sẽ ghi nhớ trong phiên làm việc — chỉ cần nhập 1 lần cho cả 3 bài.