public void CancelOrderSuccess() { var state = new ReadyToProcessOrder(CreateReadyToAcceptCoinsState()); state.CancelOrder(); Assert.True(state.VendingMachine.State is ReadyToSellProduct); }
public void ProcessOrderSuccess() { var state = new ReadyToProcessOrder(CreateReadyToAcceptCoinsState()) { SelectedProduct = Product.Espresso, InsertedCoins = new List <Coin> { Coin.OneEuro, Coin.HalfEuro } }; var coinsToReturn = new List <CoinWithQuantity>() { new CoinWithQuantity(Coin.TwentyCent, 1), new CoinWithQuantity(Coin.TenCent, 1) }; var oneEuroQuantityBefore = state.Wallet.GetQuantity(Coin.OneEuro); var halfEuroQuantityBefore = state.Wallet.GetQuantity(Coin.HalfEuro); var twentyCentQuantityBefore = state.Wallet.GetQuantity(Coin.TwentyCent); var tenCentQuantityBefore = state.Wallet.GetQuantity(Coin.TenCent); var espressoStockBefore = state.Inventory.GetStock(Product.Espresso); state.ProcessOrder(coinsToReturn); var oneEuroQuantityAfter = state.Wallet.GetQuantity(Coin.OneEuro); var halfEuroQuantityAfter = state.Wallet.GetQuantity(Coin.HalfEuro); var twentyQuantityAfter = state.Wallet.GetQuantity(Coin.TwentyCent); var tenCentQuantityAfter = state.Wallet.GetQuantity(Coin.TenCent); var espressoStockAfter = state.Inventory.GetStock(Product.Espresso); Assert.True(state.VendingMachine.State.InsertedCoins.Count == 0); // insertedCoins is cleared Assert.True(oneEuroQuantityAfter == oneEuroQuantityBefore + 1); Assert.True(halfEuroQuantityAfter == halfEuroQuantityBefore + 1); Assert.True(tenCentQuantityAfter == tenCentQuantityBefore - 1); Assert.True(twentyQuantityAfter == twentyCentQuantityBefore - 1); Assert.True(espressoStockAfter == espressoStockBefore - 1); Assert.True(state.VendingMachine.State is ReadyToSellProduct); }