public void VendingMachine_SelectProduct_CoinsEnteredAndReturnMoreThanOneCoin_IsValid() { // Arrange _coinService.Setup(mock => mock.GetCoin(9.5m, 22.5m, 3.15m)).Returns(CreateValidAcceptedOnePoundCoin); _coinService.Setup(mock => mock.GetCoin(3.25m, 18.0m, 1.7m)).Returns(CreateValidAcceptedFivePenceCoin); _coinService.Setup(mock => mock.GetCoin(5.0m, 21.4m, 1.7m)).Returns(CreateValidAcceptedTwentyPenceCoin); _productService.Setup(mock => mock.GetProduct(It.IsAny <string>())).Returns(CreateProduct()); _productService.Setup(mock => mock.GetProductQuantity(It.IsAny <string>())).Returns(10); _productService.Setup(mock => mock.UpdateProductQuantity(It.IsAny <string>())); // Act var vendingMachine = new VendingMachine(_coinService.Object, _productService.Object); vendingMachine.AcceptCoin(CreateValidOnePoundCoin()); vendingMachine.AcceptCoin(CreateValidFivePenceCoin()); vendingMachine.AcceptCoin(CreateValidTwentyPenceCoin()); VendingResponse result = vendingMachine.SelectProduct("COKE1"); // Assert Assert.AreEqual(result != null, true); Assert.AreEqual(result.IsSuccess, true); Assert.AreEqual(result.Message, "Thank You"); Assert.AreEqual(result.Change != null, true); Assert.AreEqual(result.Change.SingleOrDefault(item => item.Type == CoinType.FivePence).Number, 1); Assert.AreEqual(result.Change.SingleOrDefault(item => item.Type == CoinType.TwentyPence).Number, 1); Assert.AreEqual(result.Change.SingleOrDefault(item => item.Type == CoinType.FiftyPence) == null, true); }
public void VendingMachine_AcceptCoin_VerifyCoinServiceIsCalledOnce() { // Arrange _coinService.Setup(mock => mock.GetCoin(It.IsAny <decimal>(), It.IsAny <decimal>(), It.IsAny <decimal>())); // Act var vendingMachine = new VendingMachine(_coinService.Object, _productService.Object); VendingResponse result = vendingMachine.AcceptCoin(CreateInvalidCoin()); // Assert _coinService.Verify(mock => mock.GetCoin(It.IsAny <decimal>(), It.IsAny <decimal>(), It.IsAny <decimal>()), Times.Once); }
public void VendingMachine_SelectProduct_NoCoinsEntered_VerifyGetProductCalledOnce() { // Arrange _productService.Setup(mock => mock.GetProduct(It.IsAny <string>())).Returns(CreateProduct()); // Act var vendingMachine = new VendingMachine(_coinService.Object, _productService.Object); VendingResponse result = vendingMachine.SelectProduct("COKE1"); // Assert _productService.Verify(mock => mock.GetProduct(It.IsAny <string>()), Times.Once); }
public void VendingMachine_SelectProduct_InvalidCodeEntered_VerifyGetProductCalledOnce() { // Arrange _productService.Setup(mock => mock.GetProduct(It.IsAny <string>())).Returns(() => null); // Act var vendingMachine = new VendingMachine(_coinService.Object, _productService.Object); VendingResponse result = vendingMachine.SelectProduct("INVALIDCODE"); // Assert _productService.Verify(mock => mock.GetProduct(It.IsAny <string>()), Times.Once); }
public void VendingMachine_AcceptCoin_InvalidCoinEntered() { // Arrange _coinService.Setup(mock => mock.GetCoin(It.IsAny <decimal>(), It.IsAny <decimal>(), It.IsAny <decimal>())).Returns(() => null); // Act var vendingMachine = new VendingMachine(_coinService.Object, _productService.Object); VendingResponse result = vendingMachine.AcceptCoin(CreateInvalidCoin()); // Assert Assert.AreEqual(result != null, true); Assert.AreEqual(result.IsRejectedCoin, true); }
public void VendingMachine_SelectProduct_NoCoinsEntered() { // Arrange _productService.Setup(mock => mock.GetProduct(It.IsAny <string>())).Returns(CreateProduct()); // Act var vendingMachine = new VendingMachine(_coinService.Object, _productService.Object); VendingResponse result = vendingMachine.SelectProduct("COKE1"); // Assert Assert.AreEqual(result != null, true); Assert.AreEqual(result.IsSuccess, false); Assert.AreEqual(result.Message, "Insert Coin"); }
public void VendingMachine_SelectProduct_InvalidCodeEntered() { // Arrange _productService.Setup(mock => mock.GetProduct(It.IsAny <string>())).Returns(() => null); // Act var vendingMachine = new VendingMachine(_coinService.Object, _productService.Object); VendingResponse result = vendingMachine.SelectProduct("INVALIDCODE"); // Assert Assert.AreEqual(result != null, true); Assert.AreEqual(result.IsSuccess, false); Assert.AreEqual(result.Message, "Invalid Product Selected. Please try again"); }
public void VendingMachine_AcceptCoin_ValidCoinEntered() { // Arrange _coinService.Setup(mock => mock.GetCoin(It.IsAny <decimal>(), It.IsAny <decimal>(), It.IsAny <decimal>())).Returns(CreateValidAcceptedFivePenceCoin); // Act var vendingMachine = new VendingMachine(_coinService.Object, _productService.Object); VendingResponse result = vendingMachine.AcceptCoin(CreateValidFivePenceCoin()); // Assert Assert.AreEqual(result != null, true); Assert.AreEqual(result.IsRejectedCoin, false); Assert.AreEqual(result.IsSuccess, true); Assert.AreEqual(result.Message, "0.05"); }
public void VendingMachine_SelectProduct_CoinsEnteredAndReturned_VerifyUpdateProductQuantityCalledOnce() { // Arrange _coinService.Setup(mock => mock.GetCoin(It.IsAny <decimal>(), It.IsAny <decimal>(), It.IsAny <decimal>())).Returns(CreateValidAcceptedOnePoundCoin); _productService.Setup(mock => mock.GetProduct(It.IsAny <string>())).Returns(CreateProduct()); _productService.Setup(mock => mock.GetProductQuantity(It.IsAny <string>())).Returns(10); _productService.Setup(mock => mock.UpdateProductQuantity(It.IsAny <string>())); // Act var vendingMachine = new VendingMachine(_coinService.Object, _productService.Object); vendingMachine.AcceptCoin(CreateValidOnePoundCoin()); VendingResponse result = vendingMachine.SelectProduct("COKE1"); // Assert _productService.Verify(mock => mock.UpdateProductQuantity(It.IsAny <string>()), Times.Once); }
public void VendingMachine_SelectProduct_CoinsEntered_LessThanProductPrice() { // Arrange _coinService.Setup(mock => mock.GetCoin(It.IsAny <decimal>(), It.IsAny <decimal>(), It.IsAny <decimal>())).Returns(CreateValidAcceptedFivePenceCoin); _productService.Setup(mock => mock.GetProduct(It.IsAny <string>())).Returns(CreateProduct()); // Act var vendingMachine = new VendingMachine(_coinService.Object, _productService.Object); vendingMachine.AcceptCoin(CreateValidFivePenceCoin()); VendingResponse result = vendingMachine.SelectProduct("COKE1"); // Assert Assert.AreEqual(result != null, true); Assert.AreEqual(result.IsSuccess, false); Assert.AreEqual(result.Message, string.Format("Price : {0}", 1.00m)); }
public void VendingMachine_SelectProduct_CoinsEntered_IsValid() { // Arrange _coinService.Setup(mock => mock.GetCoin(It.IsAny <decimal>(), It.IsAny <decimal>(), It.IsAny <decimal>())).Returns(CreateValidAcceptedOnePoundCoin); _productService.Setup(mock => mock.GetProduct(It.IsAny <string>())).Returns(CreateProduct()); _productService.Setup(mock => mock.GetProductQuantity(It.IsAny <string>())).Returns(10); _productService.Setup(mock => mock.UpdateProductQuantity(It.IsAny <string>())); // Act var vendingMachine = new VendingMachine(_coinService.Object, _productService.Object); vendingMachine.AcceptCoin(CreateValidOnePoundCoin()); VendingResponse result = vendingMachine.SelectProduct("COKE1"); // Assert Assert.AreEqual(result != null, true); Assert.AreEqual(result.IsSuccess, true); Assert.AreEqual(result.Message, "Thank You"); }