Exemplo n.º 1
0
        public void UpdateIncomeTest()
        {
            var ask = Substitute.For <IInteractiveQuestion>();

            ask.Question(string.Empty).ReturnsForAnyArgs(true);

            using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) {
                var warehouse = new Warehouse {
                    Name = "TestWarehouse"
                };
                uow.Save(warehouse);

                var income = new Income {
                    Warehouse = warehouse,
                    Date      = new DateTime(2017, 1, 1),
                    Operation = IncomeOperations.Enter
                };
                var nomenclature1 = new Nomenclature {
                    Name = "TestNomenclature1"
                };
                uow.Save(nomenclature1);
                var nomenclature2 = new Nomenclature {
                    Name = "TestNomenclature2"
                };
                uow.Save(nomenclature2);
                var item1 = income.AddItem(nomenclature1);
                var item2 = income.AddItem(nomenclature2);

                income.UpdateOperations(uow, ask);
                uow.Save(income);
                uow.Commit();

                var stockRepository = new StockRepository();
                var stock1          = stockRepository.StockBalances(uow, warehouse,
                                                                    new List <Nomenclature> {
                    nomenclature1, nomenclature2
                },
                                                                    new DateTime(2017, 1, 2));
                Assert.That(stock1.Count(), Is.EqualTo(2));

                income.RemoveItem(item1);
                income.UpdateOperations(uow, ask);
                uow.Save(income);
                uow.Commit();

                var stock2 = stockRepository.StockBalances(uow, warehouse,
                                                           new List <Nomenclature> {
                    nomenclature1, nomenclature2
                },
                                                           new DateTime(2017, 1, 2));

                Assert.That(stock2.Count(), Is.EqualTo(1));
            }
        }