# Panduan Ujian Node EcommerceApi

Panduan ini menerangkan cara menguji kedua-dua fungsi dalam node EcommerceApi untuk memastikan ia berfungsi dengan betul.

## 📋 Prasyarat

1. **Secret Key Bizapp**: Anda memerlukan secret key yang sah dari Bizapp
2. **Node.js**: Pastikan Node.js dipasang di sistem anda
3. **Sambungan Internet**: Untuk mengakses API Bizapp

## 🚀 Cara Menjalankan Ujian

### Langkah 1: Sediakan Secret Key

1. Buka fail `test_node_functions.js`
2. Cari baris:
   ```javascript
   secretKey: '-your-secret-key-here', // Gantikan dengan secret key sebenar
   ```
3. Gantikan `-your-secret-key-here` dengan secret key Bizapp anda yang sebenar

### Langkah 2: Jalankan Ujian

```bash
# Masuk ke direktori n8n-nodes-ecommerce-api
cd n8n-nodes-ecommerce-api

# Jalankan ujian
node test_node_functions.js
```

## 🧪 Apa Yang Diuji

### Test 1: Get Product List
- **Endpoint**: `GET /v2/getproductlist/{secretkey}`
- **Tujuan**: Mengambil senarai produk dari Bizapp
- **Verifikasi**:
  - Status code 200
  - Response mengandungi `productinfo`
  - Data produk (SKU, nama, harga, stok)

### Test 2: Submit Order
- **Endpoint**: `POST /v2/wooapi.php`
- **Tujuan**: Menghantar pesanan ke Bizapp
- **Data Ujian**:
  - Customer: Ahmad Test
  - Email: ahmad.test@gmail.com
  - Phone: +60123456789
  - Address: No 123, Jalan Test, 50000 Kuala Lumpur
  - Product: SKU dari ujian pertama (atau dummy SKU)
  - Payment: COD
  - **Parameter Baru**: Transaction ID dan Payment Gateway ID
- **Verifikasi**:
  - Status code 200
  - Response API yang sah

## 📊 Output Yang Dijangka

### Ujian Berjaya
```
🚀 MEMULAKAN UJIAN NODE ECOMMERCE API
=====================================

=== UJIAN 1: GET PRODUCT LIST ===
📡 Menghantar request ke: https://woo.bizapp.my/v2/getproductlist/-your-secret
🔧 Method: GET
📋 Headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }

📊 RESPONSE:
Status Code: 200
Content-Type: application/json
✅ SUCCESS: API response received
📦 Products found: 25

🔍 Sample Product:
- SKU: PROD-001
- Name: Sample Product
- Price: 99.90
- Stock: 10

🎯 Menggunakan SKU produk sebenar untuk ujian: PROD-001

=== UJIAN 2: SUBMIT ORDER ===
📡 Menghantar request ke: https://woo.bizapp.my/v2/wooapi.php?...
🔧 Method: POST
📋 Headers: { 'Content-Type': 'application/x-www-form-urlencoded', ... }

📦 Order Data:
- Customer: Ahmad Test
- Email: ahmad.test@gmail.com
- Phone: +60123456789
- Total Price: 99.90
- Order ID: ORD-1703123456789-123
- Product SKU: PROD-001
- Quantity: 1
- Payment Method: cod
- Payment Gateway ID: cod
- Transaction ID: txn_test_123456

📊 RESPONSE:
Status Code: 200
Content-Type: application/json
✅ SUCCESS: Order submitted successfully
Response: { "status": "success", "message": "Order created" }

🏁 UJIAN SELESAI
================
```

### Ujian Gagal
```
❌ ERROR in getProductList test:
Request timeout

❌ ERROR in submitOrder test:
Invalid secret key
```

## 🔧 Penyelesaian Masalah

### Masalah Biasa

1. **"Invalid secret key"**
   - Semak secret key anda betul
   - Pastikan secret key bermula dengan tanda `-`

2. **"Request timeout"**
   - Semak sambungan internet
   - Cuba tingkatkan timeout dalam `TEST_CONFIG`

3. **"No productinfo found"**
   - Mungkin tiada produk dalam sistem Bizapp
   - Semak dengan admin Bizapp

4. **"ENOTFOUND" atau "ECONNREFUSED"**
   - Masalah sambungan rangkaian
   - Semak firewall atau proxy

## 📝 Parameter Baru Yang Diuji

Ujian ini juga menguji parameter baru yang ditambah:

1. **`woo_payment_txn`**: Transaction ID untuk payment gateway
2. **`woo_paymentgateway_id`**: Specific Payment Gateway ID

Kedua-dua parameter ini dihantar dalam ujian submitOrder untuk memastikan ia berfungsi dengan betul.

## ⚠️ Amaran

- **Ujian submitOrder akan menghantar pesanan sebenar** ke sistem Bizapp
- Gunakan data ujian sahaja
- Jangan gunakan maklumat pelanggan sebenar
- Semak dengan admin Bizapp sebelum menjalankan ujian dalam persekitaran production

## 🔄 Ujian Automatik

Anda boleh menambah ujian ini ke dalam CI/CD pipeline:

```bash
# Dalam package.json
"scripts": {
  "test": "node test_node_functions.js",
  "test:api": "node test_node_functions.js"
}

# Jalankan dengan npm
npm test
```

## 📞 Sokongan

Jika anda menghadapi masalah:
1. Semak log output dengan teliti
2. Pastikan secret key betul
3. Cuba ujian manual menggunakan Postman atau curl
4. Hubungi sokongan Bizapp jika perlu