Comprehensive test cases generated for WS-1463 — Direct Discount Handling for Denomination-based Payment Methods
Generated: March 22, 2026 · Source: Jira WS Board 124
Understanding the problem this test suite validates
The system lacks promotion logic for fixed-denomination payment methods (ZingCard, VNGGames Card). When a user applies a promotion and pays with a fixed-denomination card, the actual deducted amount doesn't match the reconciliation amount, causing the game to reject the transaction.
Example
200K package - 30K discount = 170K needed
ZingCard only has 200K denomination
Billing adds 30K promo = 230K sent to game
Game expects 200K → rejects → user loses money
No Wallet (Valorant)
Card must match final amount. Mismatch → auto-remove promo
Has Wallet (GunPow)
Overpay → surplus to wallet. Underpay → all to wallet, no item
System blocks the invalid config and shows error message preventing save
System allows config to be saved successfully
System blocks config and shows validation error
Final Paying Amount = 170K displayed correctly in checkout
Final Paying Amount = 150K (200K - 30K - 20K) displayed correctly
Promotion applied successfully. Payment proceeds. User receives item
System auto-removes promotion. User prompted to pay original 200K. Notification shown
Promotion applied. Payment proceeds. User receives item. No wallet surplus
Item delivered. Surplus 100K (200K - 100K) credited to user's wallet
Item NOT delivered. Full 100K amount credited to user's wallet
Final Paying Amount = Base Price - Promotion. No point deduction option shown
Popup notification displayed explaining promotion was removed due to incompatible payment method
Inline error message displayed near card input field. CTA (submit) button is disabled
CTA re-enables after promotion is removed and user returns to original price
ZingCard payment method remains selected. Price reverts to original package price
New promotion applied successfully. No error message. CTA enabled
User returns to checkout with original price. Payment flow continues normally
Event fired with: promotion_id, game_id, payment_method=ZingCard, amount, denomination
Event fired with: reason=denomination_mismatch, original_amount, discount_amount, card_denomination
Event fired with: transaction_status=success, final_amount, promotion_applied=true
System auto-removes promotion and notifies user
Step 2: Promotion stays. Step 4: Promotion stays (200K > 100K, overpay handled per game type)
Final amount = original price. Card denomination matching follows normal logic
Final amount = 0 VND. System handles zero-amount payment (free order or block ZingCard selection)
Graceful error handling. User informed to retry. No partial state left
System rejects with clear error. No charge applied. User prompted to proceed without promotion