001 package org.cocome.tradingsystem.testdriver;
002
003 import javax.jms.JMSException;
004 import javax.jms.TopicSubscriber;
005
006 import org.cocome.tradingsystem.cashdeskline.events.CashAmountEnteredEvent;
007 import org.cocome.tradingsystem.cashdeskline.events.ChangeAmountCalculatedEvent;
008 import org.cocome.tradingsystem.cashdeskline.events.CreditCardScanFailedEvent;
009 import org.cocome.tradingsystem.cashdeskline.events.ExpressModeDisabledEvent;
010 import org.cocome.tradingsystem.cashdeskline.events.ExpressModeEnabledEvent;
011 import org.cocome.tradingsystem.cashdeskline.events.InvalidCreditCardEvent;
012 import org.cocome.tradingsystem.cashdeskline.events.ProductBarcodeNotValidEvent;
013 import org.cocome.tradingsystem.cashdeskline.events.RunningTotalChangedEvent;
014 import org.cocome.tradingsystem.cashdeskline.events.SaleStartedEvent;
015 import org.cocome.tradingsystem.cashdeskline.events.SaleSuccessEvent;
016 import org.cocome.tradingsystem.systests.interfaces.IUserDisplay;
017
018 /**
019 * Glue code for the user display.
020 *
021 * @author Benjamin Hummel
022 * @author $Author: hummel $
023 * @version $Rev: 63 $
024 * @levd.rating GREEN Rev: 63
025 */
026 public class UserDisplay extends UpdateReceiver implements IUserDisplay {
027
028 /** Constructor. */
029 public UserDisplay(TopicSubscriber subscriber) throws JMSException {
030 super(subscriber, RunningTotalChangedEvent.class,
031 CashAmountEnteredEvent.class,
032 ChangeAmountCalculatedEvent.class,
033 ExpressModeDisabledEvent.class, ExpressModeEnabledEvent.class,
034 InvalidCreditCardEvent.class, CreditCardScanFailedEvent.class,
035 ProductBarcodeNotValidEvent.class, SaleSuccessEvent.class,
036 SaleStartedEvent.class);
037 }
038
039 /** {@inheritDoc} */
040 public boolean isMessageForExpressModeShown() {
041 expectMessage(ExpressModeEnabledEvent.class);
042 return getLastRelevantMessage() instanceof ExpressModeEnabledEvent;
043 }
044
045 /** {@inheritDoc} */
046 public boolean isMessageForInvalidBarcodeShown() {
047 expectMessage(ProductBarcodeNotValidEvent.class);
048 return getLastRelevantMessage() instanceof ProductBarcodeNotValidEvent;
049 }
050
051 /** {@inheritDoc} */
052 public boolean isPriceShown(int expectedPrice) {
053 expectMessage(RunningTotalChangedEvent.class);
054 if (getLastRelevantMessage() instanceof RunningTotalChangedEvent) {
055 int price = (int) Math
056 .round(((RunningTotalChangedEvent) getLastRelevantMessage())
057 .getProductPrice() * 100);
058 return price == expectedPrice;
059 }
060 return false;
061 }
062
063 /** {@inheritDoc} */
064 public boolean isProductNameShown(String expectedName) {
065 expectMessage(RunningTotalChangedEvent.class);
066 if (getLastRelevantMessage() instanceof RunningTotalChangedEvent) {
067 String name = ((RunningTotalChangedEvent) getLastRelevantMessage())
068 .getProductName();
069 return expectedName.equals(name);
070 }
071 return false;
072 }
073
074 /** {@inheritDoc} */
075 public boolean isMessageForCreditCardNotPossibleShown() {
076 // FIXME: this is currently not supported by the implementation
077 return false;
078 }
079
080 /** {@inheritDoc} */
081 public boolean isMessageForCreditCardPaymentSuccessfulShown() {
082 expectMessage(SaleSuccessEvent.class);
083 return getLastRelevantMessage() instanceof SaleSuccessEvent;
084 }
085
086 /** {@inheritDoc} */
087 public boolean isMessageForCreditCardValidationFailedShown() {
088 expectMessage(InvalidCreditCardEvent.class);
089 return getLastRelevantMessage() instanceof InvalidCreditCardEvent;
090 }
091 }