public void ViewModelStandartScriptTest()
        {
            var interactive = Substitute.For <IInteractiveQuestion>();

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

            using (var uow = UnitOfWorkFactory.CreateWithoutRoot())
            {
                //Ложим на склад первоначальные остатки;
                var warehouseSource = new Warehouse {
                    Name = "Склад комплектующих"
                };
                uow.Save(warehouseSource);
                var warehouseResult = new Warehouse {
                    Name = "Склад получение"
                };
                uow.Save(warehouseResult);
                var sizeType = new SizeType();
                uow.Save(sizeType);
                var nomenclatureType = new ItemsType {
                    Name = "Тестовый тип номенклатуры", SizeType = sizeType
                };
                uow.Save(nomenclatureType);

                var nomenclature1 = new Nomenclature {
                    Type = nomenclatureType, Name = "Комплектующий"
                };
                uow.Save(nomenclature1);
                var nomenclature2 = new Nomenclature {
                    Type = nomenclatureType, Name = "Результат"
                };
                uow.Save(nomenclature2);

                var sizeX = new Size {
                    Name = "X", SizeType = sizeType
                };
                uow.Save(sizeX);
                var sizeXl = new Size {
                    Name = "XL", SizeType = sizeType
                };
                uow.Save(sizeXl);

                var income1 = new Income {
                    Warehouse = warehouseSource,
                    Date      = new DateTime(2017, 1, 1),
                    Operation = IncomeOperations.Enter
                };
                var incomeItem1 = income1.AddItem(nomenclature1);
                incomeItem1.WearSize = sizeX;
                incomeItem1.Amount   = 10;
                income1.UpdateOperations(uow, interactive);
                uow.Save(income1);

                var income2 = new Income {
                    Warehouse = warehouseResult,
                    Date      = new DateTime(2017, 1, 1),
                    Operation = IncomeOperations.Enter
                };
                var income2Item1 = income2.AddItem(nomenclature2);
                income2Item1.WearSize = sizeXl;
                income2Item1.Amount   = 7;
                income2.UpdateOperations(uow, interactive);
                uow.Save(income2);
                uow.Commit();

                var stockRepository = new StockRepository();
                var stock1          = stockRepository
                                      .StockBalances(uow, warehouseSource, new List <Nomenclature> {
                    nomenclature1
                }, new DateTime(2017, 1, 2));
                Assert.That(stock1.Where(x => x.WearSize == sizeX).Sum(x => x.Amount), Is.EqualTo(10));

                var stock2 = stockRepository
                             .StockBalances(uow, warehouseResult, new List <Nomenclature> {
                    nomenclature2
                }, new DateTime(2017, 1, 2));
                Assert.That(stock2.Where(x => x.WearSize == sizeXl).Sum(x => x.Amount), Is.EqualTo(7));

                //Создаём комплектацию 5 ед. комплектующих в 5 ед. результата
                var completion = new Completion {
                    Date            = new DateTime(2017, 1, 3),
                    ResultWarehouse = warehouseResult
                };
                completion.AddSourceItem(stock1.First(x => x.WearSize == sizeX).StockPosition, warehouseSource, 5);
                var itemResult = completion.AddResultItem(nomenclature2);
                itemResult.WearSize = sizeXl;
                itemResult.Amount   = 5;
                completion.UpdateItems();
                uow.Save(completion);
                uow.Commit();

                var stockSource = stockRepository
                                  .StockBalances(uow, warehouseSource, new List <Nomenclature> {
                    nomenclature1
                }, new DateTime(2017, 1, 4));
                Assert.That(stockSource.Where(x => x.WearSize == sizeX).Sum(x => x.Amount), Is.EqualTo(5));

                var stockResult = stockRepository
                                  .StockBalances(uow, warehouseResult, new List <Nomenclature> {
                    nomenclature2
                }, new DateTime(2017, 1, 4));
                Assert.That(stockResult.Where(x => x.WearSize == sizeXl).Sum(x => x.Amount), Is.EqualTo(12));
            }
        }