001 package org.cocome.tradingsystem.systests.scenarios; 002 003 import java.util.concurrent.TimeoutException; 004 005 import org.cocome.tradingsystem.systests.util.GeneratedStockItem; 006 007 /** 008 * This test covers use case 1 (ProcessSale) with an invalid item id entered 009 * (excepetion in step 3). 010 * 011 * @author Christian Pfaller 012 * @author $Author: hummel $ 013 * @version $Rev: 64 $ 014 * @levd.rating GREEN Rev: 64 015 */ 016 public class ProcessSaleInvalidItemIdTest extends ProcessSaleBase { 017 018 /** Executes the test scenario. */ 019 public void testScenario() throws Exception { 020 021 // a single purchase of on product will be done 022 023 initializeCashDesk(0, 0); 024 startNewSale(1); 025 026 enterAllRemainingProducts(); 027 028 finishSale(); 029 handleCashPayment(); 030 updateInventory(); 031 } 032 033 /** 034 * Executes actions for entering a product where at first the barcode reader 035 * send an invalid item id. 036 */ 037 protected void enterAllRemainingProducts() throws Exception, 038 TimeoutException { 039 040 // get an item customer wants to buy 041 GeneratedStockItem stockItem = stores.get(0).getStockGenerator() 042 .getGeneratedStockItem(2 * currentlySold + 3); 043 products[currentlySold] = stockItem.getProduct().getProduct(); 044 expectedAmounts[currentlySold] = stockItem.getAmount() - 1; 045 priceSum += stockItem.getSalesPrice(); 046 047 // barcode scanner reads an unkown barcode 048 int invalidBarcode = productGenerator.getUnusedBarcode(); 049 cashDesk.getBarcodeScanner().sendBarcode(invalidBarcode); 050 051 // 1. System signals error 052 cashDesk.getUserDisplay().waitForUpdate(500); 053 assertTrue("The message indicating invalid Barcode should be shown.", 054 cashDesk.getUserDisplay().isMessageForInvalidBarcodeShown()); 055 056 // 2.1.1 Cashier again enters item Id (using barcode scanner) 057 int correctBarcode = stockItem.getProduct().getBarcode(); 058 cashDesk.getBarcodeScanner().sendBarcode(correctBarcode); 059 060 // The system records sale item and presents product description, 061 // price, and running total. 062 cashDesk.getUserDisplay().waitForUpdate(1000); 063 assertTrue(cashDesk.getUserDisplay().isPriceShown( 064 stockItem.getSalesPrice())); 065 assertTrue(cashDesk.getUserDisplay().isProductNameShown( 066 stockItem.getProduct().getName())); 067 068 currentlySold++; 069 } 070 }