Order Lifecycle State Machine & Test Suite

30:00

1. Studi Kasus

Dalam sistem e-commerce, status pesanan mengikuti diagram Finite State Machine (FSM) yang ketat. Sebagai QA Engineer / Backend Test Engineer, Anda bertugas membuat API validator transition status order dan menangani skenario illegal transition.

Endpoint:

POST /orders/transition

2. Spesifikasi State Machine

Status yang valid:

  • CREATED → transisi ke: PAID atau CANCELLED
  • PAID → transisi ke: PROCESSING atau CANCELLED
  • PROCESSING → transisi ke: SHIPPED
  • SHIPPED → transisi ke: DELIVERED
  • DELIVERED / CANCELLED → Terminal state (tidak bisa transisi lagi ke mana pun).

3. Spesifikasi Input & Output

Request Body:

{
  "currentStatus": "PAID",
  "targetStatus": "PROCESSING"
}

Response Berhasil (HTTP 200):

{
  "allowed": true,
  "message": "Transition from PAID to PROCESSING is valid"
}

Response Transisi Ilegal (HTTP 400):

{
  "allowed": false,
  "message": "Illegal transition from CANCELLED to SHIPPED"
}

4. Aturan Validasi

  1. Validasi Body: Jika currentStatus atau targetStatus kosong → HTTP 400 "currentStatus and targetStatus are required".
  2. Validasi Status Dikenal: Jika status tidak ada di FSM → HTTP 400 "Unknown status provided".
  3. Validasi Transisi: Cek apakah transisi dari currentStatus ke targetStatus diizinkan menurut aturan FSM.
    • Jika Valid → HTTP 200 dengan allowed: true.
    • Jika Tidak Valid (Illegal Transition) → HTTP 400 dengan allowed: false.

5. Pertanyaan Bonus Konseptual 💡

Integration Testing vs Contract Testing (Pact) Di bagian komentar kode solusi Anda, jelaskan perbedaan strategi Integration Testing vs Consumer-Driven Contract Testing (Pact) dalam menguji interaksi antar microservice.

solution.js
Loading...
Local Test Console