public void Modifies_ChileMaterialsReceived_records_as_expected() { //Arrange var chileProduct = TestHelper.CreateObjectGraphAndInsertIntoDatabase <ChileProduct>( p => p.ChileState = ChileStateEnum.Dehydrated); var received = TestHelper.CreateObjectGraphAndInsertIntoDatabase <ChileMaterialsReceived>( r => r.ChileMaterialsReceivedType = ChileMaterialsReceivedType.Dehydrated, r => r.Items = TestHelper.List <ChileMaterialsReceivedItem>(3)); received.Items.ForEach(i => TestHelper.InsertObjectGraphIntoDatabase(i.ToInventory(received))); var parameters = new ChileMaterialsReceivedParameters(received) { ChileProductKey = chileProduct.ToChileProductKey(), DateReceived = DateTime.Now.Date, LoadNumber = "123", PurchaseOrder = "PurchaseOrder", ShipperNumber = "ShipperNumber", }; parameters.Items[0].Quantity -= 1; parameters.Items[1].Quantity += 2; parameters.Items.RemoveAt(2); //Act var result = Service.UpdateChileMaterialsReceived(parameters); //Assert result.AssertSuccess(); parameters.AssertAsExpected(RVCUnitOfWork.ChileMaterialsReceivedRepository .FindByKey(received.ToLotKey(), r => r.ChileLot.Lot, r => r.Items)); }
public void Modifies_Inventory_as_expected() { //Arrange var received = TestHelper.CreateObjectGraphAndInsertIntoDatabase <ChileMaterialsReceived>( r => r.ChileMaterialsReceivedType = ChileMaterialsReceivedType.Other, r => r.Items = TestHelper.List <ChileMaterialsReceivedItem>(3)); var inventory = received.Items.Select(i => TestHelper.InsertObjectGraphIntoDatabase(i.ToInventory(received))).ToList(); var parameters = new ChileMaterialsReceivedParameters(received) { LotKey = received.ToLotKey(), DateReceived = DateTime.Now.Date, LoadNumber = "123", PurchaseOrder = "PurchaseOrder", ShipperNumber = "ShipperNumber", }; parameters.Items[0].Quantity -= 1; parameters.Items[1].Quantity += 2; parameters.Items.RemoveAt(2); //Act var result = Service.UpdateChileMaterialsReceived(parameters); //Assert result.AssertSuccess(); Assert.AreEqual(parameters.Items[0].Quantity, RVCUnitOfWork.InventoryRepository.FindByKey(new InventoryKey(inventory[0])).Quantity); Assert.AreEqual(parameters.Items[1].Quantity, RVCUnitOfWork.InventoryRepository.FindByKey(new InventoryKey(inventory[1])).Quantity); Assert.IsNull(RVCUnitOfWork.InventoryRepository.FindByKey(new InventoryKey(inventory[2]))); }
public void Creates_new_tblLot_record_and_KillSwitch_will_not_have_been_engaged_if_service_method_and_synchronization_were_successful() { //Arrange var dehydrator = RVCUnitOfWork.CompanyRepository.Filter(c => c.CompanyTypes.Any(t => t.CompanyType == (int)CompanyType.Dehydrator)).First(); var chileProduct = RVCUnitOfWork.ChileProductRepository.Filter(c => c.ChileState == ChileStateEnum.Dehydrated).First(); var warehouseLocation = RVCUnitOfWork.LocationRepository.Filter(l => l.LocID != null).First(); var packagingProduct = RVCUnitOfWork.PackScheduleRepository.All().First(); var parameters = new ChileMaterialsReceivedParameters { UserToken = TestUser.UserName, ChileMaterialsReceivedType = ChileMaterialsReceivedType.Dehydrated, DateReceived = new DateTime(2020, 3, 29), SupplierKey = new CompanyKey(dehydrator), TreatmentKey = StaticInventoryTreatments.NoTreatment.ToInventoryTreatmentKey(), LoadNumber = "42", ChileProductKey = new ChileProductKey(chileProduct), PurchaseOrder = "Yes", ShipperNumber = "No", Items = new List <ChileMaterialsReceivedItemParameters> { new ChileMaterialsReceivedItemParameters { ToteKey = "TOTE1", Quantity = 23, PackagingProductKey = new PackagingProductKey(packagingProduct), Variety = "Variety", GrowerCode = "CODE", LocationKey = new LocationKey(warehouseLocation) }, new ChileMaterialsReceivedItemParameters { ToteKey = "TOTE2", Quantity = 45, PackagingProductKey = new PackagingProductKey(packagingProduct), Variety = "Variety", GrowerCode = "CODE", LocationKey = new LocationKey(warehouseLocation) }, } }; TestHelper.ResetContext(); //Act var result = Service.CreateChileMaterialsReceived(parameters); result.AssertSuccess(); var lotString = GetKeyFromConsoleString(ConsoleOutput.SyncDehydratedReceived); //Assert MockKillSwitch.Verify(k => k.Engage(), Times.Never()); var newLot = int.Parse(lotString); Assert.IsNotNull(new RioAccessSQLEntities().tblLots.FirstOrDefault(t => t.Lot == newLot)); }
public void Modifies_existing_tblLot_and_tblIncoming_records_as_expected() { //Arrange const string expectedPurchaseOrder = "testing"; var inventory = RVCUnitOfWork.InventoryRepository.All(); var received = RVCUnitOfWork.ChileMaterialsReceivedRepository .Filter(d => d.Items.Count > 1 && d.ChileLot.Lot.PurchaseOrderNumber != expectedPurchaseOrder && d.Items.All(i => inventory.Any(n => n.LotDateCreated == i.LotDateCreated && n.LotDateSequence == i.LotDateSequence && n.LotTypeId == i.LotTypeId && n.Quantity >= i.Quantity && n.PackagingProductId == i.PackagingProductId && n.LocationId == i.LocationId && n.ToteKey == i.ToteKey && n.TreatmentId == StaticInventoryTreatments.NoTreatment.Id)), r => r.ChileLot.Lot, r => r.Employee, d => d.Items) .FirstOrDefault(); if (received == null) { Assert.Inconclusive("Could not find suitable ChileMaterialsReceived record for testing."); } var parameters = new ChileMaterialsReceivedParameters(received) { PurchaseOrder = expectedPurchaseOrder }; var quantity = 1; parameters.Items.ForEach(i => i.Quantity = quantity++); parameters.Items.RemoveAt(1); //Act var result = Service.UpdateChileMaterialsReceived(parameters); result.AssertSuccess(); var lotString = GetKeyFromConsoleString(ConsoleOutput.SyncDehydratedReceived); //Assert MockKillSwitch.Verify(k => k.Engage(), Times.Never()); var lotNumber = int.Parse(lotString); var lot = new RioAccessSQLEntities().tblLots .Select(l => new { lot = l, incoming = l.tblIncomings }) .FirstOrDefault(t => t.lot.Lot == lotNumber); Assert.AreEqual(expectedPurchaseOrder, lot.lot.PurchOrder); var resultItems = lot.incoming.ToList(); parameters.Items.AssertEquivalent(resultItems, e => new { e.Quantity }, r => new { Quantity = (int)r.Quantity }, (e, r) => Assert.AreEqual(parameters.TreatmentKey, r.TrtmtID.ToString())); }
public void Returns_non_successful_result_if_update_results_in_negative_inventory() { //Arrange var received = TestHelper.CreateObjectGraphAndInsertIntoDatabase <ChileMaterialsReceived>( r => r.ChileMaterialsReceivedType = ChileMaterialsReceivedType.Other, r => r.Items = TestHelper.List <ChileMaterialsReceivedItem>(1, l => l[0].Quantity = 10)); var parameters = new ChileMaterialsReceivedParameters(received); parameters.Items[0].Quantity = 9; //Act var result = Service.UpdateChileMaterialsReceived(parameters); //Assert result.AssertNotSuccess(UserMessages.NegativeInventoryLots); }