001    package org.cocome.tradingsystem.systests.scenarios;
002    
003    /**
004     * This test covers use case 1 (ProcessSale) for credit card payment without any
005     * exceptions.
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 ProcessSaleCreditCardTest 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            /** Executes 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                    handleCreditCardPayment();
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 handleCreditCardPayment() 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                    // 5 b. ii. Customer enters PIN
053                    cashDesk.getCardReader().enterPin(CARD_PIN);
054    
055                    cashDesk.getUserDisplay().waitForUpdate(500);
056                    assertTrue(
057                                    "Message for successful credit card payment should be shown",
058                                    cashDesk.getUserDisplay()
059                                                    .isMessageForCreditCardPaymentSuccessfulShown());
060    
061            }
062    
063    }