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])));
            }
Esempio n. 3
0
            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));
            }
Esempio n. 4
0
            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);
            }