public void TestPurchase()//Тестирование покупки { _factory.Stub(x => x.CustomerPurseProxy).Return(new MockCustomerPurseRepository(1).Proxy); ICustomerPurseRepository customerBalance = _factory.CustomerPurseProxy.Repo; _factory.Stub(x => x.VendingMachineChangeProxy).Return(new MockVendingMachineChangeRepository(2).Proxy); IVendingMachineChangeRepository vendingMachineBalance = _factory.VendingMachineChangeProxy.Repo; _factory.Stub(x => x.GoodsProxy).Return(new MockGoodsRepository(1, 7).Proxy); IGoodsRepository goods = _factory.GoodsProxy.Repo; Assert.IsTrue(customerBalance.Payment(vendingMachineBalance, Dummies.DummyInitCoins(1))); //Перевод монет между балансами произошел без ошибок (в аппарате монет нужного номинала в достатке) Assert.IsTrue(customerBalance.Shipping(goods.Drinks.First(x => x.Value.type == DrinkType.Tea).Value.price)); //Успешное списание средств с внесенной суммы goods.Purchase(goods.Drinks.First(x => x.Value.type == DrinkType.Tea).Key); //Покупка напитка Assert.AreEqual(-1, goods.Drinks.Any(x => x.Value.type == DrinkType.Tea) ? goods.Drinks.First(x => x.Value.type == DrinkType.Tea).Value.quantity : -1); //Ассортимен напитков не содержит нужный Assert.IsTrue(customerBalance.Shipping(goods.Drinks.First(x => x.Value.type == DrinkType.Coffee).Value.price)); //Успешное списание средств с внесенной суммы goods.Purchase(goods.Drinks.First(x => x.Value.type == DrinkType.Coffee).Key); //Покупка напитка Assert.AreEqual(-1, goods.Drinks.Any(x => x.Value.type == DrinkType.Coffee) ? goods.Drinks.First(x => x.Value.type == DrinkType.Coffee).Value.quantity : -1); //Ассортимен напитков не содержит нужный Assert.IsFalse(customerBalance.Shipping(goods.Drinks.First(x => x.Value.type == DrinkType.Juice).Value.price)); //Списание средств не удалось из-за недостатка внесенной суммы Assert.IsFalse(customerBalance.Payment(vendingMachineBalance, Dummies.DummyInitCoins(1))); //Перевод монет между балансами имеет ошибку (в аппарате нет монет нужного номинала) Assert.AreEqual(1, goods.Drinks.Any(x => x.Value.type == DrinkType.Juice) ? goods.Drinks.First(x => x.Value.type == DrinkType.Juice).Value.quantity : -1); //Ассортимен напитков содержит нужный }
internal MockGoodsRepository(int quantity, int price) { (_proxy = new ModelFactory(null).GoodsProxy).Repo.Reinit(Dummies.DummyInitGoods(quantity, price)); }