public void PurchaseProduct_When_TwoOneEuroCoinsAddedChickenSoupProductPurchased_Then_ReturnSuccess() { //Arrange var coin = Coin.OneEuro; var product = Product.ChickenSoup; var coinReturned = new List <CoinSlot> { new CoinSlot(Coin.TwentyCents) }; var inventory = new List <ProductSlot> { new ProductSlot(product) }; var purse = new List <CoinSlot> { new CoinSlot(Coin.TwentyCents), new CoinSlot(Coin.FiftyCents) }; var vendingMachine = new VendingMachine(inventory, purse); var sut = new PurchaseProductUseCase(vendingMachine); //Act sut.InsertCoin(coin); sut.InsertCoin(coin); var actual = sut.PurchaseProduct(product); //Assert actual.HasFailed.Should().BeFalse(); actual.ProductPurchased.Should().Be(product); actual.CoinsReturned.Should().BeEquivalentTo(coinReturned); }
public void PurchaseProduct_When_OneEuroCoinsAddedEspressoProductPurchased_Then_ReturnFailed() { //Arrange var coin = Coin.OneEuro; var product = Product.Espresso; var inventory = new List <ProductSlot> { new ProductSlot(product) }; var purse = new List <CoinSlot> { new CoinSlot(Coin.TwentyCents) }; var vendingMachine = new VendingMachine(inventory, purse); var sut = new PurchaseProductUseCase(vendingMachine); //Act sut.InsertCoin(coin); var actual = sut.PurchaseProduct(product); //Assert actual.HasFailed.Should().BeTrue(); actual.PurchaseFailedReason.Should().Be(PurchaseFailedType.InsufficientCoins); actual.ProductPurchased.Should().Be(product); }
public void CancelPurchase_When_PurchaseCanceled_Then_ReturnSuccess() { //Arrange var inventory = new List <ProductSlot>(); var purse = new List <CoinSlot>(); var vendingMachine = new VendingMachine(inventory, purse); var sut = new PurchaseProductUseCase(vendingMachine); //Act var actual = sut.CancelPurchase(); //Assert actual.HasFailed.Should().BeFalse(); }
public void InsertCoin_When_FiftyCentCoinInserted_Then_ReturnSuccess() { //Arrange decimal expectedCurrentAmount = 0.50m; var inventory = new List <ProductSlot>(); var purse = new List <CoinSlot>(); var vendingMachine = new VendingMachine(inventory, purse); var coin = Coin.FiftyCents; var sut = new PurchaseProductUseCase(vendingMachine); //Act var actual = sut.InsertCoin(coin); //Assert actual.HasFailed.Should().BeFalse(); actual.CurrentAmount.Should().Be(expectedCurrentAmount); }
public void CancelPurchase_When_TenCentCoinAddedAndPurchaseCanceled_Then_ReturnSuccess() { //Arrange var coin = Coin.TwentyCents; var coinsReturned = new List <CoinSlot> { new CoinSlot(Coin.TwentyCents) }; var inventory = new List <ProductSlot>(); var purse = new List <CoinSlot>(); var vendingMachine = new VendingMachine(inventory, purse); var sut = new PurchaseProductUseCase(vendingMachine); //Act sut.InsertCoin(coin); var actual = sut.CancelPurchase(); //Assert actual.HasFailed.Should().BeFalse(); actual.CoinsReturned.Should().BeEquivalentTo(coinsReturned); }
public VendingMachineHub(PurchaseProductUseCase useCase) { Guard.AgainstNull(useCase, nameof(useCase)); _useCase = useCase; }