public void BestChoise_IssuingMultipleRows_TwoNomeclatureSameNeedsTest() { var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); var baseParameters = Substitute.For <BaseParameters>(); baseParameters.ColDayAheadOfShedule.Returns(0); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var nomenclatureType = new ItemsType(); nomenclatureType.Name = "Тестовый тип номенклатуры"; nomenclatureType.Category = ItemTypeCategory.wear; uow.Save(nomenclatureType); var nomenclature = new Nomenclature { Type = nomenclatureType }; uow.Save(nomenclature); var nomenclature2 = new Nomenclature { Type = nomenclatureType }; uow.Save(nomenclature2); var protectionTools = new ProtectionTools { Name = "Номенклатура нормы" }; protectionTools.AddNomeclature(nomenclature); protectionTools.AddNomeclature(nomenclature2); uow.Save(protectionTools); var norm = new Norm(); var normItem = norm.AddItem(protectionTools); normItem.Amount = 1; normItem.NormPeriod = NormPeriodType.Year; normItem.PeriodCount = 1; uow.Save(norm); var employee = new EmployeeCard(); employee.AddUsedNorm(norm); Assert.That(employee.WorkwearItems.Count, Is.GreaterThan(0)); uow.Save(employee); uow.Commit(); var income = new Income { Warehouse = warehouse, Date = new DateTime(2020, 07, 20), Operation = IncomeOperations.Enter }; var incomeItem1 = income.AddItem(nomenclature); incomeItem1.Amount = 10; var incomeItem2 = income.AddItem(nomenclature2); incomeItem2.Amount = 5; income.UpdateOperations(uow, ask); uow.Save(income); uow.Commit(); Assert.That(uow.GetAll <WarehouseOperation>().Count(), Is.EqualTo(2)); employee.FillWearInStockInfo(uow, baseParameters, warehouse, new DateTime(2020, 07, 22)); Assert.That(employee.GetUnderreceivedItems(baseParameters).Count(), Is.GreaterThan(0)); var employeeCardItem = employee.GetUnderreceivedItems(baseParameters).First(); Assert.That(employeeCardItem.BestChoiceInStock.Count(), Is.GreaterThan(0)); var bestChoice = employeeCardItem.BestChoiceInStock.First(); Assert.That(bestChoice.Nomenclature, Is.EqualTo(nomenclature)); } }
public void BestChoise_IssuingMultipleRows_TwoNomeclatureShoesTypeSameNeedsTest() { var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); var baseParameters = Substitute.For <BaseParameters>(); baseParameters.ColDayAheadOfShedule.Returns(0); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var shoes = new SizeType { Name = "Обувь" }; uow.Save(shoes); var winterShoes = new SizeType { Name = "Зимняя обувь" }; uow.Save(winterShoes); var nomenclatureType = new ItemsType { Name = "Обувь", Category = ItemTypeCategory.wear, SizeType = shoes }; uow.Save(nomenclatureType); var nomenclatureType2 = new ItemsType { Name = "Зимняя обувь", Category = ItemTypeCategory.wear, SizeType = winterShoes }; uow.Save(nomenclatureType2); var nomenclature = new Nomenclature { Type = nomenclatureType, Sex = ClothesSex.Men }; uow.Save(nomenclature); var nomenclature2 = new Nomenclature { Type = nomenclatureType2, Sex = ClothesSex.Men }; uow.Save(nomenclature2); var nomenclature3 = new Nomenclature { Type = nomenclatureType, Sex = ClothesSex.Men }; uow.Save(nomenclature3); var protectionTools = new ProtectionTools { Name = "Номеклатура нормы" }; protectionTools.AddNomeclature(nomenclature); protectionTools.AddNomeclature(nomenclature3); uow.Save(protectionTools); var protectionTools2 = new ProtectionTools { Name = "Номенклатура нормы_2" }; protectionTools2.AddNomeclature(nomenclature2); uow.Save(protectionTools2); var norm = new Norm(); var normItem = norm.AddItem(protectionTools); normItem.Amount = 1; normItem.NormPeriod = NormPeriodType.Year; normItem.PeriodCount = 1; var normItem2 = norm.AddItem(protectionTools2); normItem2.Amount = 1; normItem2.NormPeriod = NormPeriodType.Year; normItem2.PeriodCount = 1; uow.Save(norm); var shoesSize = new Size { SizeType = shoes, Name = "42" }; var winterShoesSize = new Size { SizeType = winterShoes, Name = "43" }; uow.Save(shoesSize); uow.Save(winterShoesSize); var employee = new EmployeeCard(); employee.AddUsedNorm(norm); employee.Sex = Sex.M; Assert.That(employee.WorkwearItems.Count, Is.GreaterThan(0)); uow.Save(employee); uow.Commit(); var employeeShoesSize = new EmployeeSize { Size = shoesSize, SizeType = shoes, Employee = employee }; var employeeWinterShoesSize = new EmployeeSize { Size = winterShoesSize, SizeType = winterShoes, Employee = employee }; uow.Save(employeeShoesSize); uow.Save(employeeWinterShoesSize); employee.Sizes.Add(employeeShoesSize); employee.Sizes.Add(employeeWinterShoesSize); var income = new Income { Warehouse = warehouse, Date = new DateTime(2020, 07, 20), Operation = IncomeOperations.Enter }; var incomeItem1 = income.AddItem(nomenclature); incomeItem1.Amount = 1; incomeItem1.WearSize = shoesSize; var incomeItem2 = income.AddItem(nomenclature2); incomeItem2.Amount = 2; incomeItem2.WearSize = winterShoesSize; var incomeItem3 = income.AddItem(nomenclature3); incomeItem3.Amount = 3; incomeItem3.WearSize = shoesSize; income.UpdateOperations(uow, ask); uow.Save(income); uow.Commit(); Assert.That(uow.GetAll <WarehouseOperation>().Count(), Is.EqualTo(3)); employee.FillWearInStockInfo(uow, baseParameters, warehouse, new DateTime(2020, 07, 22)); Assert.That(employee.GetUnderreceivedItems(baseParameters).Count(), Is.GreaterThan(0)); Assert.That(employee.GetUnderreceivedItems(baseParameters).Count(), Is.EqualTo(2)); var employeeCardItem = employee.GetUnderreceivedItems(baseParameters).First(); Assert.That(employeeCardItem.InStock.Count(), Is.GreaterThan(0)); var bestChoiceInStock = employeeCardItem.BestChoiceInStock; var bestChoiceCount = employeeCardItem.BestChoiceInStock.Count(); Assert.That(employeeCardItem.BestChoiceInStock.Count(), Is.GreaterThan(0)); Assert.That(employeeCardItem.BestChoiceInStock.Count(), Is.EqualTo(2)); } }