예제 #1
0
        public void PostDealItem_InvalidMaterialId_ShouldBeBadRequest()
        {
            //init
            var materialsResult = materialController.GetMaterials(1, int.MaxValue).GetObject <PagedResult <Material> >().Queryable.Select(x => x.Id).ToList();
            var deals           = dealController.Deals(1, int.MaxValue).GetObject <PagedResult <Deal> >().Queryable.ToArray();

            var materialIdArb = Arb.Generate <int>().Where(i => !materialsResult.Contains(i)).ToArbitrary();
            var dealsGen      = ControllerHelper.ChooseFrom(deals);


            Prop.ForAll(materialIdArb, (materialId) =>
            {
                var deal = dealsGen.Sample(0, 1).Head;


                var dealItem = new DealItem
                {
                    DealId      = deal.Id,
                    MaterialId  = materialId,
                    PricePerOne = Gen.Choose(1, 1000000).Sample(0, 1).Head,
                    Quantity    = Gen.Choose(1, 1000).Sample(0, 1).Head
                };

                //execution
                var result = sut.PostDealItem(dealItem).Result;
                //assertion
                Assert.IsInstanceOf <BadRequestResult>(result);
            }).QuickCheckThrowOnFailure();
        }
        public async Task <IActionResult> PutDealItem([FromRoute] int id, [FromBody] DealItem dealItem)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != dealItem.Id)
            {
                return(BadRequest());
            }

            _context.Entry(dealItem).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!DealItemExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
예제 #3
0
        public void PostDealItem_InvalidQuantity_ShoulBeBadRequest()
        {
            //init
            var materialsResult = materialController.GetMaterials(1, int.MaxValue).GetObject <PagedResult <Material> >().Queryable.ToArray();
            var deals           = dealController.Deals(1, int.MaxValue).GetObject <PagedResult <Deal> >().Queryable.ToArray();

            var materialsGen = ControllerHelper.ChooseFrom(materialsResult);
            var dealsGen     = ControllerHelper.ChooseFrom(deals);


            Prop.ForAll <int[]>((i) =>
            {
                var material = materialsGen.Sample(0, 1).Head;
                var deal     = dealsGen.Sample(0, 1).Head;


                var dealItem = new DealItem
                {
                    DealId      = deal.Id,
                    MaterialId  = material.Id,
                    PricePerOne = Gen.Choose(1, 1000000).Sample(0, 1).Head,
                    Quantity    = Gen.Choose(-1000000, -1).Sample(0, 1).Head
                };

                //execution
                var result = sut.PostDealItem(dealItem).Result;
                //assertion
                Assert.IsInstanceOf <BadRequestResult>(result);
            }).QuickCheckThrowOnFailure();
        }
예제 #4
0
        //
        public HashSet <MyTextValue> GetDealItemList()
        {
            string key = "DEAL_ITEM";

            if (null == _Cache[key])
            {
                HashSet <MyTextValue> categories = new HashSet <MyTextValue>();
                CacheItemPolicy       policy     = CreateCacheItemPolicy();

                var query =
                    DealItem.GetAll()
                    .Select(x => new MyTextValue
                {
                    Text     = x.Text,
                    Value    = x.Value,
                    Disabled = true
                }
                            ).ToList();

                categories = new HashSet <MyTextValue>(query);
                _Cache.Set(key, categories, policy);
            }

            return((HashSet <MyTextValue>)_Cache[key]);
        }
예제 #5
0
파일: DealSite.cs 프로젝트: sted1234/Code
        public virtual IEnumerable<DealItem> GetDeals()
        {
            Uri feedUri = new Uri(FeedURL);
            XmlReader reader = XmlReader.Create(feedUri.ToString());
            SyndicationFeed feed = null;
            List<DealItem> dealItems = new List<DealItem>();
            try
            {
                feed = SyndicationFeed.Load(reader);
            }catch(Exception ex)
            {
                throw;
            }

            if(feed != null)
            {

                IEnumerable<SyndicationItem> syndicationItems = feed.Items;
                foreach(SyndicationItem syndicationItem in syndicationItems)
                {
                    DealItem item = new DealItem();
                    item.Title = syndicationItem.Title.Text;
                    item.URI = syndicationItem.Links[0].Uri;
                    dealItems.Add(item);
                }
            }
            return dealItems;
        }
예제 #6
0
        public void TestAddDeal()
        {
            OrderItemManager or = new OrderItemManager();

            or.AddItem(new Item("13", 14, 24.0m));
            or.AddDeal(new DealItem(2.0m, new DateTime(2002, 10, 18), new DateTime(2002, 10, 19), "13", 14, 24.0m));
            DealItem deal = (DealItem)or.GetItems.First();

            Assert.IsNotNull(deal.StartDate);
        }
        public async Task <IActionResult> PostDealItem([FromBody] DealItem dealItem)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _context.DealItem.Add(dealItem);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetDealItem", new { id = dealItem.Id }, dealItem));
        }
예제 #8
0
        public void AddDeal_Should_Add_Deal_Item_To_The_List()
        {
            var dealItem = new DealItem {
                ItemNumber = "deal01"
            };

            _orderManager.AddDeal(dealItem);

            var deal = _item.Items.Where(x => x.ItemNumber == dealItem.ItemNumber).SingleOrDefault();

            Assert.AreEqual(true, deal.IsDealItem);
        }
예제 #9
0
        private void JY_NewDeal(object sender, DealItem e)
        {
            Order order   = null;
            int   unit_id = 0;

            string[] keys = TradeRA.KeySearch("O_" + e.order_no + "_*");
            if (keys.Length > 0)
            {
                order   = OrderRA.Get(keys[0]);
                unit_id = order.unit_id;
            }

            string key = "D_" + e.deal_no + "_O_" + e.order_no + "_U_" + unit_id;

            if (TradeRA.KeyExists(key))
            {
                return;
            }

            Deal deal = new Deal()
            {
                code        = e.code,
                name        = e.name,
                type        = int.Parse(e.type),
                count       = (int)decimal.Parse(e.count),
                money       = decimal.Parse(e.money),
                time_dt     = DateTime.Parse(e.date.ToDate() + " " + e.time.ToTime()),
                deal_no     = e.deal_no,
                order_no    = e.order_no,
                price       = decimal.Parse(e.price),
                unit_id     = unit_id,
                account_id  = account_id,
                transferred = unit_id > 0 ? 0 : 1,
            };

            DealRA.Add(deal, key);

            //更新成交均价
            DealAveragePrice(deal);

            //系统内成交
            if (unit_id > 0)
            {
                MessageBiz.Send(order.user_id.ToString(), MessageTypeEnum.Order_Dealt, "[" + deal.code + "]" + deal.name + "已成交,成交数量:" + deal.count);
                TradeBiz.NewDeal(deal, order.price);
                MonitorRA.Increment("account_" + account_id, "deal_count");
            }
        }
예제 #10
0
        public void PutDealItem_InvalidDealItem_ShouldBeNotFound()
        {
            //init
            var materialsResult = materialController.GetMaterials(1, int.MaxValue).GetObject <PagedResult <Material> >().Queryable.ToArray();
            var deals           = dealController.Deals(1, int.MaxValue).GetObject <PagedResult <Deal> >().Queryable.ToArray();
            var materialsGen    = ControllerHelper.ChooseFrom(materialsResult);
            var dealsGen        = ControllerHelper.ChooseFrom(deals);

            var dealItems = new List <int>();

            foreach (var item in deals)
            {
                var dealitemofdeal = sut.GetDealItemsOfDeal(item.Id).GetObject <IEnumerable <DealItem> >().ToList().Select(x => x.Id);
                dealItems.AddRange(dealitemofdeal);
            }

            var invalidDealItemArb = Arb.Generate <int>().Where(i => !dealItems.Contains(i)).ToArbitrary();

            Prop.ForAll(invalidDealItemArb, (i) =>
            {
                var deal     = dealsGen.Sample(0, 1).Head;
                var dealItem = new DealItem();

                var material         = materialsGen.Sample(0, 1).Head;
                dealItem.MaterialId  = material.Id;
                dealItem.DealId      = deal.Id;
                var price            = Gen.Choose(1, 1000000).Sample(0, 1).Head;
                dealItem.PricePerOne = price;
                var quantity         = Gen.Choose(1, 1000).Sample(0, 1).Head;
                dealItem.Quantity    = quantity;
                //execution
                var result = sut.PutDealItem(dealItem.Id, dealItem).Result;
                //assertion
                Assert.IsInstanceOf <NotFoundResult>(result);
            }).QuickCheckThrowOnFailure();
        }