public void Ignore_restore_order_for_batch() { localSession.DeleteEach <Order>(); var price = session.Load <TestPrice>(localSession.Query <Price>().First().Id.PriceId); var ids = localSession.Query <Offer>().Select(x => x.ProductId).Distinct().ToArray(); var product = session.Query <TestProduct>().First(x => !x.Hidden && !ids.Contains(x.Id)); var offer = price.Supplier.AddCore(product); price.Supplier.SaveCore(session, offer); offer.RequestRatio = 5; price.Supplier.InvalidateCache(session, ServerUser().Id); var fixture = new SmartOrder(); fixture.Rule.CheckOrderCost = false; fixture.Rule.CheckMinOrderCount = false; fixture.Rule.CheckRequestRatio = false; fixture.ProductIds = new [] { offer.Product.Id }; Fixture(fixture); MakeBatch("1|1"); var orders = localSession.Query <Order>().ToArray(); Assert.AreEqual(1, orders.Length); var order = orders[0]; Assert.IsFalse(order.Frozen, order.Lines.Implode(x => x.SendError)); Assert.AreEqual(offer.Id, order.Lines[0].OfferId.OfferId); }
public void Reprocess_batch() { var fixture = new SmartOrder { ProductIds = new[] { SafeSmartOrderProductId() } }; Fixture(fixture); localSession.DeleteEach <BatchLine>(); localSession.DeleteEach <Order>(); MakeBatch("1|5"); var items = localSession.Query <BatchLine>().ToList(); var batchLine = items[0]; Assert.IsTrue(batchLine.Status.HasFlag(ItemToOrderStatus.Ordered)); batchLine.Quantity = 3; Run(new UpdateCommand { SyncData = "Batch", AddressId = localSession.Query <Address>().First().Id }); items = localSession.Query <BatchLine>().ToList(); batchLine = items[0]; Assert.IsTrue(batchLine.Status.HasFlag(ItemToOrderStatus.Ordered), batchLine.ToString()); Assert.AreEqual(3, batchLine.Quantity); var lines = localSession.Query <OrderLine>().ToArray(); var orderLine = lines[0]; Assert.AreEqual(1, lines.Length); Assert.AreEqual(3, orderLine.Count); }
public void Process_batch_request() { var fixture = new SmartOrder { ProductIds = new[] { SafeSmartOrderProductId() } }; Fixture(fixture); localSession.DeleteEach <BatchLine>(); localSession.DeleteEach <Order>(); MakeBatch("1|5\r\n1-asdasd|10"); var items = localSession.Query <BatchLine>().ToList(); Assert.AreEqual(2, items.Count, items.Implode()); var orders = localSession.Query <Order>().ToList(); Assert.AreEqual(1, orders.Count, items.Implode()); Assert.IsFalse(orders[0].Frozen); var batchLine = items.First(b => b.Quantity == 5); Assert.IsNotNull(batchLine.ExportId); Assert.IsTrue(batchLine.Status.HasFlag(ItemToOrderStatus.Ordered)); var orderline = orders.SelectMany(o => o.Lines).FirstOrDefault(l => l.ExportBatchLineId == batchLine.ExportId); Assert.IsNotNull(orderline); }
public void Smart_order() { var fixture = new SmartOrder { ProductIds = new[] { session.Query <Offer>().First().ProductId } }; Fixture(fixture); var filename = TempFile("batch.txt", "1|10"); session.DeleteEach <Order>(); //что бы избежать сообщения о ожидаемых позициях session.DeleteEach <AwaitedItem>(); StartWait(); Click("ShowBatch"); manager.OsDialog.OfType <OpenFileDialog>().Take(1) .Subscribe(d => d.FileName = Path.GetFullPath(filename)); AsyncClickNoWait("Upload"); WaitWindow("Обмен данными"); WaitMessageBox("Автоматическая обработка дефектуры завершена."); WaitIdle(); dispatcher.Invoke(() => { var items = activeWindow.Descendants <DataGrid>().First(g => g.Name == "ReportLines"); Assert.That(items.Items.Count, Is.GreaterThan(0)); }); }
public void Save_orders() { var ordersPath = settings.MapPath("Orders"); if (Directory.Exists(ordersPath)) { Directory.GetFiles(ordersPath).Each(File.Delete); } localSession.DeleteEach <Order>(); localSession.DeleteEach <SentOrder>(); var offer = SafeSmartOrderOffer(); var externalLineId = Guid.NewGuid().ToString(); var externalProductId = Guid.NewGuid().ToString(); var externalAddressId = Guid.NewGuid().ToString(); var fixture = new SmartOrder { SynonymMap = { Tuple.Create(offer.ProductSynonym, offer.ProductId) }, AddressMap = { Tuple.Create(externalAddressId, address.Id) } }; fixture.Rule.ParseAlgorithm = "HealthyPeopleSource"; session.CreateSQLQuery("update usersettings.RetClientsSet set SaveOrders = 1 where ClientCode = :clientId") .SetParameter("clientId", ServerUser().Client.Id) .ExecuteUpdate(); session.Transaction.Commit(); Fixture(fixture); var batch = $@"Номер;Аптека;Дата;Код;Товар;ЗаводШК;Производитель;Количество;Приоритет;Цена {externalLineId};{externalAddressId};{DateTime.Now};{externalProductId};{offer.ProductSynonym};;;1;;"; Assert.AreEqual(UpdateResult.OK, MakeBatch(batch)); Assert.AreEqual(1, localSession.Query <Order>().Count(), localSession.Query <BatchLine>().Implode()); Assert.AreEqual(UpdateResult.OK, Run(new SendOrders(address))); var files = Directory.GetFiles(ordersPath); Assert.AreEqual(1, files.Length); var order = localSession.Query <SentOrder>().First(); var expected = $@"Номер;Аптека;Дата;Код;Товар;ЗаводШК;Производитель;Количество;Приоритет;Цена;Поставщик {externalLineId};{externalAddressId};{order.SentOn};{externalProductId};{order.Lines[0].ProductSynonym};;{order.Lines[0].ProducerSynonym};1;;;{order.Price.Name}"; var lines = File.ReadAllText(files[0], Encoding.Default).TrimEnd(); Assert.AreEqual(expected, lines); }
public void Freeze_orders() { var order = MakeOrderClean(); var fixture = new SmartOrder { ProductIds = new[] { SafeSmartOrderProductId() } }; Fixture(fixture); MakeBatch("1|10"); //здесь может возникнуть NHibernate.UnresolvableObjectException : No row with the given identifier exists //это значить что данные в backup не соответсвуют данным в data нужно перезалить данные localSession.Refresh(order); Assert.IsTrue(order.Frozen); }
public void Transit_service_fields() { var fixture = new SmartOrder { ProductIds = new[] { SafeSmartOrderProductId() } }; fixture.Rule.ServiceFields = "2"; Fixture(fixture); localSession.DeleteEach <Order>(); MakeBatch("1|10|test-payload"); var items = localSession.Query <BatchLine>().ToList(); Assert.AreEqual(1, items.Count, items.Implode()); Assert.That(items[0].ParsedServiceFields, Is.EquivalentTo(new Dictionary <string, string> { { "2", "test-payload" } })); }