001    package org.cocome.tradingsystem.systests.scenarios;
002    
003    /**
004     * This test covers use case 1 (process sale) with exception in step 5.2 (credit
005     * card validation fails)
006     * 
007     * @author Christian Pfaller
008     * @author $Author: hummel $
009     * @version $Revision: 1.1 $
010     * @lev.rating GREEN Rev: 65
011     */
012    
013    public class ProcessSaleCreditCardFailTest extends ProcessSaleBase {
014    
015            /** Number of valid credit card in this test */
016            private final static int CARD_NUMBER = 99999;
017    
018            /** PIN of valid credit card in ths test */
019            private final static int CARD_PIN = 1234;
020    
021            /**
022             * Mony available for the credit card, given in cents Thus 1 Million Euro
023             * should be enough to cover every sale
024             */
025            private final static int CARD_MONEY = 100000000;
026    
027            /** Execute the test scenario. */
028            public void testScenario() throws Exception {
029                    // first, create a valid credit card
030                    bank.createCreditCard(CARD_NUMBER, CARD_PIN, CARD_MONEY);
031    
032                    // execute sales szenario
033                    initializeCashDesk(0, 0);
034                    startNewSale();
035                    enterAllRemainingProducts();
036                    finishSale();
037                    handlePayment();
038                    updateInventory();
039            }
040    
041            /**
042             * Executes actions for credit card payment. Corresponds to step 5 b. in use
043             * case 1.
044             */
045            protected void handlePayment() throws Exception {
046                    // 5 b. The cashier presses button for credit card payment.
047                    cashBox.startCreditCardPayment();
048    
049                    // 5 b. i. Cashier pulls credit card through the card reader
050                    cashDesk.getCardReader().enterCard(CARD_NUMBER);
051    
052                    // try to use credit card with wrong pin
053                    // provoke card validation failure
054                    cashDesk.getCardReader().enterPin(0);
055    
056                    // credit card validation fails
057                    cashDesk.getUserDisplay().waitForUpdate(500);
058                    assertTrue("Message for failed credit card validation should be shown",
059                                    cashDesk.getUserDisplay()
060                                                    .isMessageForCreditCardValidationFailedShown());
061    
062                    // do cash payment instead
063                    handleCashPayment();
064            }
065    
066    }